OpenSubdiv.OPENSUBDIV_VERSION.Sdc.Options是OpenSubdiv的一个模块,用于指定Subdivision Scheme(亚细分方案)的选项和参数。
要使用OpenSubdiv.OPENSUBDIV_VERSION.Sdc.Options,需要先包含相应的头文件:
#include <opensubdiv/sdc/options.h>
然后就可以创建一个Sdc::Options对象,并指定相应的选项和参数:
Sdc::Options options;
options.SetVtxBoundaryInterpolation(Sdc::Options::VTX_BOUNDARY_EDGE_ONLY);
options.SetCreaseMethod(Sdc::Options::CREASE_UNIFORM);
Sdc::Options类包含以下成员函数用于设置Subdivision Scheme选项和参数:
设置Vertex Boundary Interpolation方法(用于处理Mesh表面上的Boundary)。
函数原型:
void SetVtxBoundaryInterpolation(VtxBoundaryInterpolation value);
其中,参数VtxBoundaryInterpolation是一个枚举类型,包含以下值:
enum VtxBoundaryInterpolation {
VTX_BOUNDARY_NONE, // No special treatment for boundaries (default)
VTX_BOUNDARY_EQUAL, // Interpolate using equal weight only
VTX_BOUNDARY_EDGE_ONLY, // Interpolate only along edges
VTX_BOUNDARY_EDGE_AND_CORNER // Interpolate along edges and corners
};
获取当前设置的Vertex Boundary Interpolation方法。
函数原型:
VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const;
返回值为当前设置的VtxBoundaryInterpolation枚举值。
设置Crease Method(用于处理Crease Edge)。
函数原型:
void SetCreaseMethod(CreaseMethod value);
其中,参数CreaseMethod是一个枚举类型,包含以下值:
enum CreaseMethod {
CREASE_UNIFORM, // Uniform creases (default)
CREASE_CHAIKIN, // Chaikin-style creases
CREASE_SWARZTRAUB // Swarztraub-style creases
};
获取当前设置的Crease Method。
函数原型:
CreaseMethod GetCreaseMethod() const;
返回值为当前设置的CreaseMethod枚举值。
设置Triangle Subdivision方法。
函数原型:
void SetTriangleSubdivision(TriangleSubdivision value);
其中,参数TriangleSubdivision是一个枚举类型,包含以下值:
enum TriangleSubdivision {
TRI_SUB_UNIFORM, // Uniform triangle subdivision (default)
TRI_SUB_ADAPTIVE // Adaptive triangle subdivision
};
获取当前设置的Triangle Subdivision方法。
函数原型:
TriangleSubdivision GetTriangleSubdivision() const;
返回值为当前设置的TriangleSubdivision枚举值。
设置Face-Varying Linear Interpolation方法。
函数原型:
void SetFaceVaryingLinearInterpolation(FVarLinearInterpolation value);
其中,参数FVarLinearInterpolation是一个枚举类型,包含以下值:
enum FVarLinearInterpolation {
FVAR_LINEAR_NONE, // No face-varying linear interpoaltion (default)
FVAR_LINEAR_CORNERS_ONLY, // Linear interpolation only at corners
FVAR_LINEAR_CORNERS_PLUS1, // Linear interpolation and subdivision at corners plus 1 ring
FVAR_LINEAR_ALL // Linear interpolation everywhere
};
获取当前设置的Face-Varying Linear Interpolation方法。
函数原型:
FVarLinearInterpolation GetFaceVaryingLinearInterpolation() const;
返回值为当前设置的FVarLinearInterpolation枚举值。
在使用Subdivision Scheme时,开发者可以使用OpenSubdiv.OPENSUBDIV_VERSION.Sdc.Options来指定选项和参数以达到更好的Subdivision结果。在实际使用时,需要注意不同选项和参数的影响。