osgAnimation.VertexInfluence类表示顶点对于骨骼蒙皮动画的影响。一个顶点可以受到多个骨骼的影响,在每个骨骼上都有一个权值,表示该骨骼对于该顶点的影响程度。该类实现了osgAnimation的通用接口osgAnimation::VertexInfluence。
typedef std::vector<VertexIndexWeightPair> VertexWeightList;
VertexInfluence();
VertexInfluence(const VertexInfluence& copy, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
unsigned int getInfluenceCount() const;
void addInfluence(int boneId, float weight);
void setInfluence(unsigned int index, int boneId, float weight);
const osgAnimation::VertexInfluence::VertexIndexWeightPair& getInfluence(unsigned int index) const;
VertexIndexWeightPair& getInfluence(unsigned int index);
const VertexWeightList& getInfluences() const;
VertexWeightList& getInfluences();
void zeroWeights();
void resize(unsigned int numInfluences);
void sortInfluencesByWeight();
void normalizeWeights();
构造函数,创建一个新的顶点影响对象。
复制构造函数,创建一个从另一个顶点影响对象中复制的新对象。
获取该顶点受到影响的骨骼数量。
添加一个骨骼对于该顶点的影响权值。
设置影响列表中指定索引处的骨骼ID和权值。
获取影响列表中指定索引处的骨骼ID和权值。
获取影响列表中指定索引处的骨骼ID和权值。
获取顶点影响列表。
获取顶点影响列表。
将该顶点所有受影响的骨骼权值归零。
重新调整影响列表的大小。
根据影响权值对影响列表中的骨骼进行排序。
将影响权值标准化为0.0到1.0之间,以确保它们的总和为1.0。
struct VertexIndexWeightPair
{
inline VertexIndexWeightPair():
boneIndex(-1),
weight(1.0f) {}
inline VertexIndexWeightPair(int bi, float w):
boneIndex(bi),
weight(w) {}
int boneIndex; // 骨骼ID
float weight; // 权重
};
该结构体表示影响列表中的一个影响项,包括骨骼ID和权重。
默认构造函数,将骨骼ID设置为-1,权重设置为1.0。
构造函数,将骨骼ID设置为bi,权重设置为w。