CS 184 HOME < - - - - > CURRENT 

Modeling a Rounded Genus-5 Surface

The goal is to provide a way to put intriguing texture maps onto higher-genus objects, so that they seamlessly close around all handles.
The example here is that of a genus-5 surface in the form of a cube frame. The  smooth surface is obtained by Catmull-Clark subdivision.
When applying the texture maps to the various quads, special care has to be taken at those vertices where different faces want to see different texture coordinates.


This is the desired conceptual pattern
on a genus-5 cube frame.
It serves to set up the texture coordinates,
so that we obtain a pattern that closes
nicely around all corners and arms.
This is a more complex polyhedron made of 120
quadrilaterals with adjustable vertex coordinates;
this is a good starting point for CC-subdivision
with the goal of obtaining a nicely rounded final shape.
This is the kind of final object that we aim for.
Little black spheres have been added
to the smooth procedurally generated surface.
Advanced rendering techniques could be used
to add shadows and specular reflections.
Source: J.J. van Wijk, SIGGRAPH 2009

The first image shows a cube-frame surface divided into 120 square faces.
If we use this shape directly as the start of a CC-subdivision process, then the resulting limit surface will be a rather pointy shape
and not a nicely rounded shape as shown on the right.
To obtain a rounder shape, we move the vertices to better positions, more in tune with the shape that we want to generate.
The original SLIDE file with which this object was procedurally modeled can be seen here.
A hand-converted file to be as compatible as possible with the SCD-09 format that we use in CS184 can be seen here.
Using the parameter values shown, instantiating all 12 arms, and flattening the output geometry leads to this OBJ-file.
If you keep the
control vertices parameterized, then you can fine-tune the shape while observing the subdivision surface after 2 or 3 steps.

The texture map used in the above example is shown here.
The corresponding assignment of texture coordinates to the various vertices can be found in the SCD-09-file.
Here are some texture patterns corresponding to various topological "Regular Maps" on this genus-5 surface:





CubeFrame_3_8.GIF
CubeFrame_8_3a.GIF     CubeFrame_8_3b.GIF     CubeFrame_8_3c.GIF
CubeFrame_4_6.GIF
CubeFrame_6_4.GIF

The regular map "CubeFrame_8_3" requires different textures on the 3 families of arms running parallel to the x-, the y- and the z-axes.
That is why you find the three differently colored texture maps shown above. Because different arms use different textures, in the file  "Cube_R5_1__8_3.scd"  the  "(material ...)"  is not specified directly with the faces, but instead is specified when an instance of a whole cube-frame arm is called.
Once you have one of these regular maps working, you just need to change the name of the texture map that is called for a particular
"(material ...)" and you can readily obtain displays of any of the other Regular Maps on this genus-5 cube frame.

Implementation Hints:

When starting from a hierarchically structure file, you first need to perform all the instanciations so as to obtain a flat mesh structure that can then be easily subdivided.
In this flattening of the hierarchy, the geometrical coordinates are transformed with the transformations given with each particular instance, but the texture coordinates are unaffected and stay as they are.
In the end, every face should refer to exactly one texture map, and to a set of vertices that all carry the appropriate texture coordinates to be used with that particular map.
After the instantiation has been carried out, all the vertices should show up in an explicit, flat list with the proper texture coordinates.

The one thing that needs some extra attention (and thus makes this an interesting project rather than just a trivial transformation exercise), is that when different vertices with different texture coordinates fall into the same physical location in WORLD, they have to be treated as one merged geometrical vertex, so as to yield the proper smooth subdivision, but need to be seen as different vertices with different texture coordinates when you look up the patterns in the texture map(s).


CS 184 HOME < - - - - > CURRENT 
Page Editor: Carlo H. Séquin