Basically you can use prman tags to specify per model how the model and UVs should be interpolated at render time :5.3.1 Subdivision Surfaces
Catmull-Clark subdivision surfaces are supported by 3Delight1. All standard tags are recognized:
"hole" A per-face value, tagging faces that are considered as holes. The parameter is an array of integers listing the indices of the hole faces.
"corner" A per-vertex value, tagging vertices that are considered semi-sharp. The tag should be specified with an array of integers, giving the indices of the vertices as well as an array of floating point values giving their sharpness. Corners are smooth at sharpness 0.0 and grow sharper as the value is increased.
"crease" A per-edge value, tagging edges that are considered as semi-sharp. This tag is specified with an array of integers, indicating the list of vertices that form an edge chain. An array of floating point values specifies the sharpness value for each edge in the chain.
"interpolateboundary" A per-surface value, specifying that boundary edges and vertices are infinitely sharp. This tag takes an optional integer parameter with the following possible values:
• 0 - No interpolation, the default behavior.
• 1 - Full interpolation: infinitely sharp creases are added to boundary edges and infinitely sharp corners are added to boundary vertices of valence 2. This is the behavior obtained when the tag is specified without a parameter.
• 2 - Interpolation of edges only: infinitely sharp creases are added to boundary edges.
"facevaryinginterpolateboundary" A per-surface value which allows using either true facevarying (set to 0) or a facevertex-like version (set to 1) which smooths out the boundaries. The default value is 1 and can be changed in ‘rendermn.ini’ with the "/3delight/subdivisionmeshfacevaryinginterpolateboundary" key.
Unlike other rendering packages, 3Delight does not attempt to tesselate the entire subdivision surface into many small polygons (thus taking a large amount of memory); instead, a lazy and adaptive process is used to generate only those portions of the surface that are needed for some specific bucket.
All standard variable types are supported: constant, uniform, varying, vertex, facevarying and facevertex. facevertex is used exactly as facevarying but interpolates the variables according to surface’s subdivision rules.
facevaryinginterpolateboundary tags
- 0 : linear, no smoothing
1: default behaviour, everything internal and on border are smoothed, apart from vertices with 2 incident edges that also meet at one face only which are sharp creased
2: all internal points are smoothed and also those on border , as including vertices with 2 incident edges that also meet at one face (so everything is smooth)
3 : internal points only are smoothed all vertices on a discontinuous boundary are subdivided with a crease, so smooth inside border, linear on border
-Nick