osg中设置模移动旋转缩放

来源:互联网 发布:linux编译环境 编辑:程序博客网 时间:2024/05/01 16:52
     osg::ref_ptr<osg::Node>xcModel = osgDB::readNodeFile("Models/www.ive");
    if(xcModel.valid())
    {
        osg::ref_ptr<osg::MatrixTransform> xcTrans = new osg::MatrixTransform;
         xcTrans->addChild(xcModel.get());
        double tH = GetTerrainHeight(m_pMapNode,113.71665,34.0225);
        tH -= 0.0;
        osg::Matrix posMat;
        getEllipseModel()->computeLocalToWorldTransformFromLatLongHeight(osg::DegreesToRadians(34.0225),
                                                                         osg::DegreesToRadians(113.71665),
                                                                         tH,posMat);
        osg::Matrix scaleMat;
        scaleMat.makeScale(0.39,0.6,0.39);
        osg::Matrix rotateMat;
        rotateMat.makeRotate(osg::DegreesToRadians(-3.5),osg::Vec3(0,0,1.0));
        xcTrans->setMatrix(rotateMat*scaleMat*posMat);//这里一定要先旋转再乘缩放再乘移动 否则不会显示在正确的位置
        m_pSceneData->addChild(xcTrans.get());}一定要这样做的原因貌似是osg中的矩阵是从前乘矩阵 下次再研究点滴收获 记录学习osg的心路历程
原创粉丝点击