osgAnimation.VertexInfluenceMap是OpenSceneGraph中的一个类,用来描述顶点权重映射关系。
class OSGANIMATION_EXPORT VertexInfluenceMap
{
public:
VertexInfluenceMap();
VertexInfluenceMap(const VertexInfluenceMap& v, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
virtual ~VertexInfluenceMap();
typedef std::map<unsigned int,float> VertexWeightList;
typedef VertexWeightList::iterator iterator;
typedef VertexWeightList::const_iterator const_iterator;
virtual void applyTo(osg::Geometry* geometry, unsigned int vertexStart, unsigned int vertexEnd) const;
virtual void applyTo(osg::Drawable* drawable) const;
virtual void clear();
virtual void setWeight(unsigned int index, float weight);
virtual float getWeight(unsigned int index) const;
unsigned int getNumWeights() const;
inline iterator begin() { return _vertexWeightMap.begin(); }
inline const_iterator begin() const { return _vertexWeightMap.begin(); }
inline iterator end() { return _vertexWeightMap.end(); }
inline const_iterator end() const { return _vertexWeightMap.end(); }
bool empty() const { return _vertexWeightMap.empty(); }
void swap(VertexInfluenceMap& v);
const VertexInfluenceMap& operator = (const VertexInfluenceMap&);
protected:
VertexWeightList _vertexWeightMap;
};
构造函数,创建一个空的顶点权重映射关系。
复制构造函数,用v复制一个新的顶点权重映射关系。
析构函数。
应用当前的顶点权重映射关系到指定的顶点范围中。
应用当前的顶点权重映射关系到Drawable的所有顶点上。
清空顶点权重映射关系。
设置指定顶点的权重。
获取指定顶点的权重。
获取顶点权重数量。
获取顶点权重列表的起始迭代器。
获取顶点权重列表的起始迭代器(const)。
获取顶点权重列表的结束迭代器。
获取顶点权重列表的结束迭代器(const)。
判断顶点权重映射关系是否为空。
交换当前的顶点权重映射关系与v的值。
赋值运算符,将当前的值赋为另一个顶点权重映射关系的副本。
osg::ref_ptr<osgAnimation::VertexInfluenceMap> weightMap = new osgAnimation::VertexInfluenceMap;
for (unsigned int i=0; i<numVertices; ++i)
{
weightMap->setWeight(i, 1.0);
}
weightMap->applyTo(geom,0,numVertices);
这段代码中,为一个顶点权重映射关系weightMap中的每个顶点设置权重为1.0,然后应用到一个geometry对象的所有顶点上。