Textured multi-res bunnies
an application of the geometry-independence of PolyCubeMaps
In facts, any model, if it is a "bunnoid" (defined as a geometric shape resembling a Stanford Rabbit ;-) can be textured with the same PolyCubeMap texture.
The PolyCubeMap in this example is used to store pre-shaded normal values coming from a full resolution rabbit, but it could as well be used to store colors or any other signal.
To each vertex of the models, we assigned a single 3D texture coordinate on the surface of the polycube. The texture coordinates for a vertex in a lower resolution model is computed by finding an appropriate point - in general not a vertex - over the highest resolution model (bottom), and taking the 3D texture coordinate associated to that point. This is similar to a process sometime called "detail recovery", or "detail preservation" (among the mesh simplification people), but it is done with texture coordinates rather and per-vertex, than with signal values and per-texel. This is possible because the polycube is a seamless parameterization!
in texture memory:
|Note that some faces of the model live in different faces of the polycube. This is not a problem, even if, in 2D texture memory,boundaries of over the polycubes of the faces of lowest resolution model, this is what we get.
|In the top left corner of the 2D texture map stored in memory, if you zoom in really close, you can see the tiny subpart of the texture that is actually used to encode the shape of the polycube (see paper):
[back to main page]
[back to concept]