Osg-Osg实例牛对象局部旋转效果(Qt5.14.2+osgEarht3.6.5+win10)-No10-LocalRotate
相关资料:
https://blog.csdn.net/pizi0475/article/details/5387514 OSG中测试旋转与平移
代码实例:
.pro
1 QT += core gui widgets 2 TARGET = TestOsgQt 3 TEMPLATE = app 4 DEFINES += QT_DEPRECATED_WARNINGS 5 CONFIG += c++11 6 7 SOURCES += \ 8 main.cpp 9 10 HEADERS += 11 12 OsgDir = D:\\RuanJian\\osg365R 13 CONFIG(release, debug|release) { 14 LIBS += -L$${OsgDir}/lib/ -losgDB -losgViewer -lOpenThreads -losgAnimation -losg \ 15 -losgEarth -losgEarthAnnotation -losgEarthFeatures -losgEarthSymbology -losgEarthUtil \ 16 -losgQOpenGL -losgUtil -losgText -losgTerrain -losgSim \ 17 -losgShadow -losgParticle -losgManipulator -losgGA -losgFX \ 18 -losgWidget 19 } else { 20 LIBS += -L$${OsgDir}/debug/lib/ -losgDBd -losgViewerd -lOpenThreadsd -losgAnimationd -losgd \ 21 -losgEarthd -losgEarthAnnotationd -losgEarthFeaturesd -losgEarthSymbologyd -losgEarthUtild \ 22 -losgQOpenGLd -losgUtild -losgTextd -losgTerraind -losgSimd \ 23 -losgShadowd -losgParticled -losgManipulatord -losgGAd -losgFXd \ 24 } 25 26 27 INCLUDEPATH += $${OsgDir}/include 28 DEPENDPATH += $${OsgDir}/include
main.cpp
1 #include2 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 // 雨雪效果 14 #include 15 // 粒子效果 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 // 雾 30 #include 31 #include 32 #include 33 #include 34 #include 35 #include 36 #include 37 // 旋转 38 #include 39 #include 40 #include 41 #include 42 #include 43 #include 44 45 osg::Group* createTrans() 46 { 47 osg::Group* root = new osg::Group; 48 //创建姿态节点 49 osg::PositionAttitudeTransform* posCow = new osg::PositionAttitudeTransform; 50 root->addChild(posCow); 51 //创建变换节点 52 osg::MatrixTransform* matrixCow = new osg::MatrixTransform; 53 root->addChild(matrixCow); 54 //牛 55 osg::Node* cow = osgDB::readNodeFile("D:\\osgFiles\\cow.osg"); 56 posCow->addChild(cow); 57 osg::Quat quat; 58 //旋转 59 quat.makeRotate(osg::PI_2,osg::Vec3(0.0,0.0,1.0)); 60 posCow->setAttitude(quat); 61 //设置位置 62 posCow->setPosition(osg::Vec3(-10,0.0,0.0)); 63 64 matrixCow->addChild(cow); 65 //旋转 66 quat.makeRotate(osg::DegreesToRadians(60.0),osg::Vec3(0.0,0.0,1.0)); 67 //设置位置 68 matrixCow->setMatrix(osg::Matrixd::translate(osg::Vec3(10.0,0.0,0.0))*osg::Matrixd::rotate(quat)); 69 return root; 70 } 71 72 int main(int argc, char *argv[]) 73 { 74 //根节点 75 osg::Group* root = new osg::Group(); 76 root = createTrans(); 77 osgViewer::Viewer viewer; 78 //创建节点到场景中 79 viewer.setUpViewInWindow(50,50,500,400); 80 viewer.setSceneData(root); 81 viewer.realize(); 82 return viewer.run(); 83 }