OpenSubdiv.OPENSUBDIV_VERSION.Far.PatchTableFactory
是一种用于生成OpenSubdiv
细分表的工厂类。它基于Far计算库,可以通过一组控制顶点和细分规则生成一个细分表。细分表将会提供给细分器,以用来对控制顶点进行高效的多重分辨率细分。
static PatchTable *
Create(const Vtr::IndexArray& faceVerts, Sdc::SchemeType scheme, Options const &options = Options());
功能
生成一个PatchTable
对象。
参数
faceVerts
: Vtr::IndexArray
类型,包含网格顶点索引数组,存储了所有面的控制顶点索引。 faceVerts.size()
必须为偶数。scheme
: Sdc::SchemeType
类型,用来指定网格细分结构的类型。options
: 用于设置PatchTable
的相关选项。返回值
返回一个新建的PatchTable
对象。
PatchTable
对象所指向的内存区域需要由调用者自行释放。faceVerts
中的控制顶点索引必须在0~numVerts
之间,其中numVerts
是控制网格中的点数,且这些数据不应被修改。// Assume "faceVerts" contains vertex indices for a mesh of 4 faces with 4 vertices each (4x4 quad).
Sdc::SchemeType scheme = Sdc::SCHEME_CATMARK;
OpenSubdiv::Far::PatchTableFactory::Options options;
options.endCapType = OpenSubdiv::Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS;
PatchTable * patchTable = OpenSubdiv::Far::PatchTableFactory::Create(faceVerts, scheme, options);
// Use the patchTable to subdivide the mesh with multiple levels of detail...