[prev] Patches: Subdivision Surfaces [next]

New in v3 is the ability to fit Catmull-Clark subdivision (SUBD) surfaces.

[no zoom]
Figure 90. SUBD Mode

Creating SUBDs in CySlice follows a very similar path to the NURB fitting process. First the network structure is laid out by placing points and drawing boundary curves on the polymesh. When you are ready to build the surface, simply click on the SUBD button in the Patches panel to tell CySlice you want to work in SUBD mode (see Figure 90).

Whenever in SUBD mode, the Patches panel will expand to show the V/T/Q readout. This indicates the minimum and maximum valence (V), the number of triangles (T) and the number of four sided polygons, or quads (Q), in the SUBD hull/cage.

You can switch between NURB and SUBD mode at any time simply by clicking on the NURB or SUBD buttons. In fact, you can load an old NURB fitted SLICE file and convert it into a SUBD surface with a click of the SUBD button.

Creating SUBD Patches

In exactly the same way that NURB surfaces are created, you start building a SUBD surface by creating patches, and you do that by placing seeds into curve bounded areas.

[click to zoom]
Figure 91. SUBD Patches Created

The left side of Figure 91 shows a couple of curve bounded areas, and the right side shows the results after a seed is dropped into each.

This is where the NURB and SUBD fitting processes begin to diverge. When in SUBD mode, the surface isn't constructed or updated until the Rebuild button is clicked. Until that time, new or modified patch grids are drawn in red.

Note: Make sure the Grids option in the Display panel is enabled so you can see the patch grids.

[click to zoom]
Figure 92. SUBD Surface Built

The left side of Figure 92 shows the patch grids after a Rebuild, and the right side shows the new SUBD surface topology. Where-ever possible, CySlice will create quads in preference to triangles. You can see from the base topology that the 4 to 2 drop-down in patch resolution is achieved with a triangular looking quad. Any resolution change that is a power of 2 (e.g. 2 to 4, 4 to 8, 8 to 16 and so on) is guaranteed to be all quads.

Note: To see the surface topology, make sure the Base option in the Display panel is enabled.

[click to zoom]
Figure 93. SUBD Surface and Hull

The left side of Figure 93 shows the blue shaded SUBD surface (NURB surfaces are shaded red). The right side shows the control hull (some people call it the "cage") of the SUBD surface. The hull has identical topology to the base, but the geometry is pulled out so that the resulting SUBD surface lies directly on top of (not somewhere within) the source polymesh.

[click to zoom]
Figure 94. Without Auto Fit Points

Figure 94 shows the surface created when Auto Fit Points is disabled (see Optional Code: Auto Fit Points for details).

In some situations, the strict requirement that the subd surface lies exactly on the source polymesh causes the hull to be pulled in exaggerated directions causing artifacts in the final surface. You can see this happening in the hull above, and it will always happen around the "resolution change" triangular shaped quads.

Note: To see the SUBD surface hull, make sure the Hull option in the Display panel is enabled.

SUBD Fit Points

By placing Fit points in strategic locations, you can control the hull calculation process. Move the mouse pointer over a vertex in the base topology, then hit the <;> key to place a fit point.

Black fit points are the first to be created, and are the type of fit point used when Auto Fit Points is enabled.

Without any fit points, each vertex of the base mesh is pulled out until the calculated knot point sits exactly at the original base grid location. Vertexes with black fit points are pulled out until the knot point sits on the polymesh . Calculating vertex locations relative to the polymesh instead of the base grid (which has already been fitted to the polymesh) takes additional time, and thats why its not the default for all points. But if used in a handful of key locations the additional calculation time is well worth it.

[click to zoom]
Figure 95. Overlapping Control Hull

If you find that the control hull is overlapping itself (see left side of Figure 95) then black fit points are probably required in that area (see right side of Figure 95). The surface may look fine but, for example when rigging a character, self overlapping control hulls can be a problem.

[click to zoom]
Figure 96. Green Fit Points

More often than not, the black fit points are all that's needed to fix most fitting problems. However, in some cases you might like to try the green fit points (see left side of Figure 96). They are created by hitting the <;> key with the mouse pointer over an existing black fit point.

Green fit points disable any fit calculation at their location; the location of the hull control point is exactly the same as the base grid at that point. This means that the resulting surface will lie above or below the polymesh, but in some cases this might be the best option.

[click to zoom]
Figure 97. White Fit Points

White fit points (see left side of Figure 97). are created by hitting the <;> key with the mouse pointer over an existing green fit point.

White fit points cause the affected hull points to be averaged between surrounding control points. They can be used to smooth out wrinkles in the surface when the underlying base mesh is distorted.

The <;> key is used to cycle between black, green, white and no fit point.

The <:> key can be used to quickly remove a fit point.



Very Simple Patches

[click to zoom]
Figure 98. Very Simple Patches

Patches that have some boundaries with no divisions are a special case when building SUBD surfaces in CySlice. The first image in Figure 98 shows a simple network of 6 open regions; notice how there are no divisions on some boundary curves. The second image show the network with 6 patches added; everything looks fine until the surface is shaded (middle image).

Four regions are filling fine; they're either 2 by 2 or 1 by 1 and there's no difficulty in deciding how to fill the space with a grid. But two regions are empty; some boundaries have no divisions and some one, and exactly how to fill these regions is ambiguous.

The final image in Figure 98 shows more curves added to explicitly define how the two empty regions should be filled. By forcing you to define the gridding in these cases, CySlice is ensuring its done exactly how you want. Plus it reduces the chances of there being mismatched topologies between templated networks, something that would be a major problem if you wanted to use them as morph targets.

Spikes 1

[click to zoom]
Figure 99. Valence 2 Spikes

Figure 99 shows a subd network fitted over the end of a finger. In this case the tip is fitted in two halves, each a four sided patch, two divisions on each boundary. This seems like the most obvious way to cap the end of the finger, but it'll produce a big spike in the SUBD surface.

The cause of the spike is a limitation in the underlying mathematics of Catmull-Clark subdivision surfaces; what happens at valence 2 vertexes is undetermined. The valence measure is the number of faces adjacent to a vertex in the SUBD mesh, and in Figure 99 you can see that only two faces share the point on the tip of the finger.

[click to zoom]
Figure 100. Use 3-sided Patches

Figure 100 shows one solution to the spike problem; two three-sided patches are used to fill in the two halves, with four divisions on the base, and two up each side boundary. The resulting SUBD mesh now has a valence of 4 at the tip of the finger, and the spike has gone.

Spikes 2

[click to zoom]
Figure 101. Duplicate Patch Spikes

Figure 101 shows another situation where unexpected spikes may appear. The network on the left looks quite normal, but when the SUBD surface is shaded, unusual spikes appear (middle image). Another indicator of this particular problem is if red crosses show up when the SUBD surface is first shaded with the HQS (High Quality Shade) button (right image).

The root cause of the problem is that the right hand region has accidentally been filled with two patches. The overlapping topology confuses the SUBD fitting code, and there's probably some valence 2 vertexes produced, which in turn cause the spikes to appear.

The solution in this case is simple; delete one of the right hand patches and do a Rebuild to check the result.

If you want CySlice to automatically detect and remove duplicate patches, enable the Del Duplicate Patches preference; see Optional Code: Del Duplicate Patches for further details.


[prev] [top] [next]