OpenSubdiv.OPENSUBDIV_VERSION.Bfr
OpenSubdiv.OPENSUBDIV_VERSION.Far
OpenSubdiv.OPENSUBDIV_VERSION.Osd
OpenSubdiv.OPENSUBDIV_VERSION.Sdc
OpenSubdiv.OPENSUBDIV_VERSION.Vtr

OpenSubdiv.OPENSUBDIV_VERSION.Far.PatchTableFactory

概述

OpenSubdiv.OPENSUBDIV_VERSION.Far.PatchTableFactory是一种用于生成OpenSubdiv细分表的工厂类。它基于Far计算库,可以通过一组控制顶点和细分规则生成一个细分表。细分表将会提供给细分器,以用来对控制顶点进行高效的多重分辨率细分。

成员函数

Create(faceVerts, scheme, options)

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...

参考信息