变换类的继承
简单的类继承举例
子类
osg::MatrixTransform
- 继承自
osg::Matrix
- 继承自
osg::Transform
- 继承自
osg::Group
- 继承自
osg::osg::Node
- 继承自
- 继承自
因此,如果创建了
osg::MatrixTransform
类的实例,它可以使用osg::Matrix
矩阵变换封装的方法,也具有osg::Group
节点组的特征。对于图形每帧渲染的变换可以调用
osg::Node
下的回调函数,通过变换来实现图形的一些动画效果。osg::Node::addUpdateCallback(Callback* nc)
参数
nc
,例如AnimationPathCallback(const osg::Vec3d& pivot,const osg::Vec3d& axis,float angularVelocity)
- 继承自
需要注意的是AnimationPathCallback
会将设置的一些变换操作覆盖掉,重新回到相对父节点原点的位置,因此有时候需要主要与父节点的嵌套和相对位置,再进行动画的设置
对于PositionAttitudeTransform
中的setPosition
方法并不是简单的设定绝对位置,而是设定模型的相对位置,简单来说就是需要对模型位置进行偏移处理
当同时模型缩放与位置偏移时,自定义方法需要注意包络球osg::BoundingSphere::radius()
的缩放后对中心位置osg::BoundingSphere::center()
的缩放的影响
本文为博主学习OSG时的自我总结和记录,如出现错误的地方,还请留言指正,共同进步