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

OpenSubdiv.OPENSUBDIV_VERSION.Far.PatchFaceTag

该类提供了每个面的拓扑信息,用于在采样和计算过程中确定网格拓扑。它定义了一个面的一组子面(叶子节点)和相邻面的面标识符。

构造函数

  • PatchFaceTag():默认构造函数创建一个无效的面标签。

成员函数

  • void Clear():清除所有面标记数据。
  • void SetNumVerts(int numVertices):设置该面的顶点数量。
  • int GetNumVerts() const:返回该面的顶点数量。
  • int GetDepth() const:返回该面子面的深度(等级)。
  • void SetDepth(int depth):设置该面子面的深度(等级)。
  • int GetChildOffset() const:返回该面子面在叶子节点中的偏移量。
  • void SetChildOffset(int offset):设置该面子面在叶子节点中的偏移量。
  • int GetNumChildren() const:返回该面子面的数量。
  • void SetNumChildren(int numChildren):设置该面子面的数量。
  • int GetPatchType() const:返回该面的细分类型。
  • void SetPatchType(int patchType):设置该面的细分类型。
  • void SetAdjacency(int level, int index, int face):设置该面在指定细分层的相邻面。
  • int GetAdjacency(int level, int index) const:返回该面在指定细分层的相邻面。

类型定义

  • IndexType:定义面标识符的类型。

数据成员

  • topologyId:该面的拓扑标识符。
  • vertsPtr:该面的顶点指针。
  • numVerts:该面的顶点数量。
  • depth:该面子面的深度(等级)。
  • childOffset:该面子面在叶子节点中的偏移量。
  • numChildren:该面子面的数量。
  • patchType:该面的细分类型。
  • adjacency:该面在所有细分层的相邻面标识符数组。

示例

// 创建一个标记,设置拓扑ID和顶点指针
OpenSubdiv::Far::PatchFaceTag tag;
tag.topologyId = 0;
tag.vertsPtr = nullptr;

// 设置子面的深度和偏移量
tag.SetDepth(1);
tag.SetChildOffset(0);

// 设置相邻面
tag.SetAdjacency(0, 0, 1);
tag.SetAdjacency(0, 1, 2);
tag.SetAdjacency(0, 2, 3);

// 获取相邻面
int adjFace0 = tag.GetAdjacency(0, 0);
int adjFace1 = tag.GetAdjacency(0, 1);
int adjFace2 = tag.GetAdjacency(0, 2);