MeshTessellate
Tessellates meshes according to their subdivision scheme, converting them into higher polygon meshes which follow the limit surface - usually the smooth regular quads of a Catmull-Clark scheme.
Can be used similiarly to “subdivide” or “smooth” features in other packages, with one distinction: because it puts output points directly on the limit surface, using the tessellated result as a subdiv surface again will result in the surface shrinking. Tessellation gives the most accurate possible result for a given number of divisions in one step, but is not appropriate for doing repeated operations on the same mesh.
This node implements the tessellation schemes described by OpenSubdiv, as described here: https://graphics.pixar.com/opensubdiv/docs/bfr_overview.html#bfr-navlink-tessellation ( Note that OpenSubdiv’s “tessellation rate” parameter is the same as our “divisions” parameter, except “tessellation rate” is one higher than “divisions. )
user
Container for user-defined plugs. Nodes should never make their own plugs here, so users are free to do as they wish.
out
The processed output scene.
enabled
The on/off state of the node. When it is off, the node outputs the input scene unchanged.
in
The input scene
filter
The filter used to control which parts of the scene are processed. A Filter node should be connected here.
divisions
The number of vertices to insert in each edge during tessellation.
calculateNormals
Calculate normals based on the limit surface. If there are existing normals, they will be overwritten. If this is not set, existing normals will be interpolated like any other primvar.
Note that we currently output Vertex normals, which makes sense for most subdivs, but does not accurately capture infinitely sharp creases.
scheme
Overrides the subdivision scheme that determines the shape of the surface. By default, the subdivision scheme used comes from the mesh’s interpolation property, which should be set with a MeshType node, so it will apply to rendering the surface, and also this node. Overriding is useful if a mesh has not been tagged correctly ( for example, if you want to force a mesh to be smooth, you can set scheme to CatmullClark ).
tessellatePolygons
Force bilinear tessellation of meshes without subdivision schemes.
If there is no subdivision scheme stored on the mesh ( interpolation = "linear"
), and you
haven’t overridden the scheme, we interpret that to mean no tessellation is required. Bilinear
tessellation won’t change the shape of the surface, but sometimes forcing tessellation is useful
anyways ( for example, to apply deformation on a denser mesh ).
interpolateBoundary
Specifies which parts of mesh boundaries are forced to exactly meet the boundary. Without this forcing, a subdivision surface will naturally shrink back from the boundary as it smooths out.
Usually, you want to force both edges and corners to exactly meet the boundary. The main reasons to
change this are to use Edge Only
if you want to produce curved edges from polygonal boundaries,
or to use None
if you’re doing something tricky with seamlessly splitting subdiv meshes by
providing the split meshes with a border of shared polygons in order to get continuous tangents.
faceVaryingLinearInterpolation
Specifies where face varying primitive variables should use a simple linear interpolation instead of being smoothed.
In order for UVs to correspond to approximately the same texture areas as the original polygons, usually you want to, at minimum, pin the outside corners. But pinning the entire boundary causes some pretty weird discontinuities, so finding the right compromise is tricky.
See the OpenSubdiv docs for explanation of the details of options like Corners Plus 1
:
https://graphics.pixar.com/opensubdiv/docs/subdivision_surfaces.html#schemes-and-options
triangleSubdivisionRule
Option to use a non-standard Smooth
subdivision rule that provides slightly better results
at triangular faces in Catmull-Clark meshes than the standard Catmull-Clark algorithm.