diff --git a/documentation/subdivision_surfaces.rst b/documentation/subdivision_surfaces.rst index 17cc5f8d..246eeb3b 100644 --- a/documentation/subdivision_surfaces.rst +++ b/documentation/subdivision_surfaces.rst @@ -830,11 +830,13 @@ The following choices are available via the enumeration *Sdc::Options::VtxBounda +----------------------------------+----------------------------------------------------------+ | Mode | Behavior | +==================================+==========================================================+ -| **VTX_BOUNDARY_NONE** | No boundary edge interpolation should occur; instead | -| | boundary faces are implicitly tagged as holes so that | -| | the boundary vertices continue to support the adjacent | -| | interior faces, but no surface corresponding to the | -| | boundary faces is generated | +| **VTX_BOUNDARY_NONE** | No boundary edge interpolation is applied by default; | +| | boundary faces are tagged as holes so that the boundary | +| | vertices continue to support the adjacent interior | +| | faces, but no surface corresponding to the boundary | +| | faces is generated; boundary faces can be selectively | +| | interpolated by sharpening all boundary edges incident | +| | the vertices of the face | +----------------------------------+----------------------------------------------------------+ | **VTX_BOUNDARY_EDGE_ONLY** | A sequence of boundary vertices defines a smooth curve | | | to which the limit surface along boundary faces extends | @@ -854,7 +856,8 @@ In practice, it is rare to use no boundary interpolation at all -- this feature its uses in allowing separate meshes to be seamlessly joined together by replicating the vertices along boundaries, but these uses are limited. Given the global nature of the setting, it is usually preferable to explicitly make the boundary faces holes -in the areas where surfaces from separate meshes are joined. +in the areas where surfaces from separate meshes are joined, rather than sharpening +edges to interpolate the desired boundaries everywhere else. The remaining "edge only" and "edge and corner" choices are then solely distinguished by whether or not the surface at corner vertices is smooth or sharp. diff --git a/opensubdiv/sdc/options.h b/opensubdiv/sdc/options.h index 7508b69f..d368bc5f 100644 --- a/opensubdiv/sdc/options.h +++ b/opensubdiv/sdc/options.h @@ -51,9 +51,11 @@ namespace Sdc { class Options { public: enum VtxBoundaryInterpolation { - VTX_BOUNDARY_NONE = 0, ///< do not interpolate boundaries - VTX_BOUNDARY_EDGE_ONLY, ///< sharpen edges - VTX_BOUNDARY_EDGE_AND_CORNER ///< sharpen edges and corners + VTX_BOUNDARY_NONE = 0, ///< no boundary interpolation, except where + ///< boundary edges were explicitly sharpened + VTX_BOUNDARY_EDGE_ONLY, ///< all boundary edges sharpened and interpolated + VTX_BOUNDARY_EDGE_AND_CORNER ///< all boundary edges and corner vertices + ///< sharpened and interpolated }; enum FVarLinearInterpolation { FVAR_LINEAR_NONE = 0, ///< smooth everywhere ("edge only")