查看: 1256|回复: 3

OSG 移动时为什么感觉坐标是相反的呢???

[复制链接]

该用户从未签到

发表于 2012-11-6 17:15:44 | 显示全部楼层 |阅读模式
本帖最后由 ykm0722 于 2012-11-6 17:17 编辑

我按照OSG程序设计教程 示例八:移动/旋转/缩放模型,代码运行后,
osg::ref_ptr<osg::MatrixTransform> trans = new osg::MatrixTransform ;
        trans ->setMatrix(osg::Matrix::translate(0, 0, 2)) ;       
trans ->addChild(osgcool.get()) ;

我感觉应该是沿着Z轴向上移动的,可是程序运行出来却是向下移动的,疑惑中,望高手解答一下谢谢了!我修改坐标X的值为3.0发现是向左移动的,而不是向右,不太理解!!
OSG.bmp

该用户从未签到

发表于 2012-11-7 07:58:09 | 显示全部楼层
Manipulator 初始化会计算场景的包围体 然后设置视点的初始化距离 把整个场景都看到 所以你把Z值设为正值,那么计算出来的视点会稍微向上移动 当然这个节点是在包围体边缘

该用户从未签到

 楼主| 发表于 2012-11-7 09:38:39 | 显示全部楼层
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/MatrixTransform>
#include <osgParticle/PrecipitationEffect>

void main()
{
        osgViewer::Viewer viewer;
        osg::ref_ptr<osg::Group>root = new osg::Group();
        osg::ref_ptr<osg::Node>osgcool = osgDB::readNodeFile("osgcool.osgt");////第一个物体

        osg::ref_ptr<osg::MatrixTransform>trans = new osg::MatrixTransform ;
        trans->setMatrix(osg::Matrix::translate(0,0,2));//第二个物体,沿着Z轴向上移动2个单位
        trans->addChild(osgcool.get());

        root->addChild(osgcool.get());
        //root->addChild(trans.get());//我发现把这行注释掉以后,第一个物体向下移动了,但是不确定是几个单位,为什么会影响到第一个物体呢,难道MatrixTransform 会影响到它???那么第二个物体是从第一个物体的基础上,向上移动的吗??我不知道理解的对吗??

        viewer.setSceneData(root.get());
        viewer.realize();
        viewer.run();
}
这是整个程序

该用户从未签到

发表于 2012-11-7 09:51:44 | 显示全部楼层
没有影响,MT只影响它下面的子节点,把视点固定了 您看的就明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表