查看: 1589|回复: 4

获取漫游路径的视点问题

[复制链接]

该用户从未签到

发表于 2012-4-2 22:44:28 | 显示全部楼层 |阅读模式
求教王锐:
         我现在用一个AnimationPathManipulator的操作器,来执行一段漫游,想要在切换操作器的时候视点不要改变,不管是路径漫游的暂停还是结束,等操作器切换的时候都能不改变视点,我现在采用的方法是,获取AnimationPathManipulator中的HandleFrame法中cp.getMatrix(_matrix)这个方法得到的矩阵,然后根据这个_matrix得到视点矩阵。也就是相机的三个参数,_homeEye,_homeCenter,_homeUp.可是发现得到的这三个参数不正确。请教王锐,您有什么好的办法,在我从路径漫游切换到别的漫游器的时候视点不改变吗

该用户从未签到

发表于 2012-4-6 09:55:15 | 显示全部楼层
切换漫游器不改变视点,取决于下一个漫游器的setByMatrix()是否合理,因此直接编写切换后的漫游器的setByMatrix和setByInverseMatrix即可

该用户从未签到

发表于 2012-4-12 10:43:59 | 显示全部楼层
学习了

该用户从未签到

发表于 2012-7-11 14:59:46 | 显示全部楼层
array 发表于 2012-4-6 09:55
切换漫游器不改变视点,取决于下一个漫游器的setByMatrix()是否合理,因此直接编写切换后的漫游器的setByMa ...

怎样就能合理,这样写可行吗?
virtual void setByMatrix(const osg::Matrixd& matrix)
        {
                m_vRotation=matrix.getRotate().asVec3();
                m_vPosition=matrix.getTrans();
       
        }
        virtual void setByInverseMatrix(const osg::Matrixd& matrix)
        {
               
                osg::Matrixd matrix1= osg::Matrixd::inverse(matrix);
                m_vPosition=matrix1.getTrans();
                m_vRotation=matrix1.getRotate().asVec3();
       
        }

该用户从未签到

发表于 2012-7-13 09:45:31 | 显示全部楼层
楼上的问题已经在另一个帖子里明确地给出了答复,函数实现没有问题,但是您混淆了四元数和欧拉角。请不要重复发帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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