概念
- 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 viewer; viewer.setSceneData(root.get()); return viewer.run(); } */ int main(int argc, char** argv) { osg::ref_ptr<osg::Node> model = osgDB::re
-