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