OpenSubdiv.OPENSUBDIV_VERSION.Far.LimitStencilTable是OpenSubdiv库中的一个类,用于计算控制顶点在子图(patch)上的权重(weight)。
该类的功能是计算子图中每个顶点的权重,并在经过迭代处理后,返回一个大小为(numVertices * maxCoefficients)
的数组,存储在coefficientsBuffer
中。
Far::LimitStencilTable::LimitStencilTable(
Far::StencilTable const & vertexStencils,
int numVertices, int numWeights,
int const * sizes,
int const * offsets,
int ** basisIndices,
float ** limitValues,
int const * indices,
float const * weights,
int const * sizesPacked,
int const * offsetsPacked,
int maxCoefficientsPerVertex,
bool includeNeighbors)
vertexStencils
是输入的StencilTable对象numVertices
是控制顶点的数量numWeights
是每个控制顶点在子图中的权重数量sizes
是指向每个控制顶点权重数量的指针offsets
是指向每个控制顶点权重起始位置的指针basisIndices
是指向每个控制顶点所关联的基函数的指针数组limitValues
是指向控制顶点上的限制值的指针数组indices
是指向StencilTable索引的指针weights
是指向StencilTable权重的指针sizesPacked
是指向紧凑(packed)的控制顶点权重数量的指针offsetsPacked
是指向紧凑的控制顶点权重起始位置的指针maxCoefficientsPerVertex
是每个控制顶点最多允许的权重数量includeNeighbors
是一个布尔值,表示是否包括相邻控制顶点中的权重int GetNumControlVertices() const
int GetMaxNumCoefficients() const
int GetOffset(int vertex) const
vertex
对应的权重起始位置。int GetSize(int vertex) const
vertex
对应的权重数量。int const * GetSizes() const
int const * GetOffsets() const
int const * GetSizesPacked() const
int const * GetOffsetsPacked() const
int const * GetBasisIndices() const
float const * GetLimitValues() const
int const * GetIndices() const
float const * GetWeights() const
int GetVertexStencilIndex(int index) const
index
对应的控制顶点编号。int FindVertexWeightOffset(int vertex, int index) const
vertex
在权重数组中的偏移量。int FindVertexWeightSize(int vertex) const
vertex
在权重数组中的权重数量。