概念
- NodeKits 不同功能的node集合
- 组节点
- 叶子节点
- 父节点管理
- 自定义Node
- visitor design pattern
- 遍历
组节点
- osg::Group

- osg::Transform子类
-
绝对几何坐标 setReferenceFrame(osg::Transform::ABSOLUTE_RF);
-
相对几何坐标 setReferenceFrame(osg::Transform::RELATIVE_RF);
-
osg::MatrixTransform子类
- getMatrix()
- setMatrix
- 参数为osg::Matrix类,不需要智能指针申请
- osg::Matrix::scale
- osg::Matrix::translate
- osg::Matrix::rotate
- osg::Matrix::inverse
- 参数为osg::Matrix类,不需要智能指针申请
-
osg::PositionAttitudeTransform子类
- setPosition
- 参数为osg::Vec3
- setScale
- 参数为osg::Vec3
- setAttitude
- 参数为osg::Quat quat(xAngle, osg::X_AXIS,yAngle, osg::Y_AXIS,zangle, osg::Z_AXIS); // Angles should be radians!
- setPosition
-
osg使用行坐标,矩阵使用vectorxmatrix,opengl相反
-
示例
#include <osg/PositionAttitudeTransform> #include <osgDB/ReadFile> #include <osgViewer/Viewer> /* int main(int argc, char** argv) { osg::ref_ptr<osg::Node> model = osgDB::readNodeFile( "cessna.osg"); osg::ref_ptr<osg::MatrixTransform> transform1 = new osg::MatrixTransform; transform1->setMatrix(osg::Matrix::translate( -25.0f, 0.0f, 0.0f)); transform1->addChild(model.get()); osg::ref_ptr<osg::MatrixTransform> transform2 = new osg::MatrixTransform; transform2->setMatrix(osg::Matrix::translate( 25.0f, 0.0f, 0.0f)); transform2->addChild(model.get()); osg::ref_ptr<osg::Group> root = new osg::Group; root->addChild(transform1.get()); root->addChild(transform2.get()); //osg::viewer osgViewer::Viewer
-

本文详细介绍了osg中的Scene Graph概念,包括NodeKits、组节点如osg::Group、osg::MatrixTransform及其应用,以及叶子节点如osg::Geode。文章还探讨了父节点管理、自定义Node的实现以及Visitor Design Pattern在osg中的运用,提供了多个示例来解释遍历和节点遍历的重要性。
最低0.47元/天 解锁文章
829

被折叠的 条评论
为什么被折叠?



