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在权重数组中的权重数量。