In my last post I talked about the difficulty of implementing a “vanishing point” perspective effect with Silverlight since (currently) it only supports 2D affine transforms.
As a result, most of “Cover Flow” implementations with Silverlight “avoided” perspective.
However, my belief is that if we do that we’ll significantly diminish the Coverflow interface perceptive quality.
How can we then implement such interface, without building a whole 3D engine, and just using the Silverlight affine transforms?
If we decompose the polygons (cover artwork in our case) into a set of triangles, and then linearly interpolate its content in accordance with its vertices, we are still using an affine transform and the result is close to a true perspective transform.
(You can obtain a great Textured Triangle Control for Silverlight 2 by Florian Kruesch here).
There’s a catch, however. Because affine texture mapping does not take into account the polygon's vertices depth information it will not look exactly right and we’ll see a noticeable defect. The only way to get around this is by adding more, and smaller, triangles.
But what about the Coverflow interface, how can this affect it visually?
Well, I built one and you can see (and hear) it yourself here: Coverflow.
Update (2009-02-19): Source code now available here.