查看: 2891|回复: 14

实现漫游切换时怎样获得当前视点角度

[复制链接]

该用户从未签到

发表于 2009-9-9 11:10:19 | 显示全部楼层 |阅读模式
大家好,我用了一个简单的漫游类 可是在切换到漫游状态想保持场景不变  当前视点应该怎么样来获取呢 位置和角度 ,我用了getcameramatrix->getmatrix->gettrans.x  .y .z  及getrotate.x .y  .z   ,结果得到的位置似乎是对的,角度就差了十万里了,该怎么办呢?

该用户从未签到

 楼主| 发表于 2009-9-9 20:54:12 | 显示全部楼层
哪位好心人 指教下吧  谢谢了

该用户从未签到

发表于 2009-9-9 23:02:23 | 显示全部楼层
抱歉我不明白您的意思

该用户从未签到

 楼主| 发表于 2009-9-11 10:20:54 | 显示全部楼层
3# array


array 大哥 我表达力可能太差了 我再解释遍奥  就是 我从网上下了一个漫游器例子  好像是freesouth写的   然后想把他用到我自己的程序中 来进行场景漫游  用键盘切换漫游时  不能像默认的OSG中的漫游 一样切换时保持场景位置不变    所以就有了以上我不知所措的言语了    请指教呢 为什么自带的漫游方式切换时就能默认场景不变呢    请指教呀  我试了好多方法啦 需要在哪里改动呢

该用户从未签到

 楼主| 发表于 2009-9-11 10:26:01 | 显示全部楼层
freesouth  或者array 等们大哥 能帮我解答下吗  我这两天做梦都想着这个问题呢

该用户从未签到

发表于 2009-9-11 10:47:21 | 显示全部楼层
KeySwitchMatrixManipulator在切换漫游器时,会自动调用下一个漫游器的setByMatrix()函数,并将上一个漫游器的位置姿态矩阵作为参数传入。如果您的自定义漫游器没有实现虚函数setByMatrix()的功能的话,那么就会出现“场景位置变化”的问题了

该用户从未签到

 楼主| 发表于 2009-9-11 15:18:21 | 显示全部楼层
6# array


奥 先谢谢array大哥   那就是需要在我的setByMatrix()中 将传入的位置姿态 附到新漫游器相机的位置姿态  是这样吗?可是新的漫游器中 没有用到 eye,center,up   只有通过position与rotation 都是三元数来赋值   我还是得不到正确的值呀   我用了
position=matrix.getTrans();
rotation=matrix.getRotate().asVec3();
位置没有问题  但是角度不对  这样做是不是不对呀

该用户从未签到

发表于 2009-9-11 17:29:48 | 显示全部楼层
getRotate()取得的是四元数值,它的asVec3得到的不是XYZ轴的欧拉角度,而是四元数的三个实轴分量。如果您的rotation是用欧拉角度定义的,那么需要自己写转换函数

该用户从未签到

 楼主| 发表于 2009-9-11 20:30:58 | 显示全部楼层
8# array


我的神呀  array大哥呀 可是这个四元数与欧拉角度之间怎么个转换方法呀  以前从没听说过呀 或者您有什么好的建议呀?

该用户从未签到

发表于 2009-9-11 21:51:26 | 显示全部楼层
参看我刚回答不久的一个帖子:
http://bbs.osgchina.org/viewthread.php?tid=2225

该用户从未签到

 楼主| 发表于 2009-9-12 14:06:55 | 显示全部楼层
奥  谢谢呀

该用户从未签到

 楼主| 发表于 2009-9-12 14:07:10 | 显示全部楼层
10# array


谢谢奥

该用户从未签到

 楼主| 发表于 2009-9-14 19:51:48 | 显示全部楼层
12# fanfan


array 大哥呀  我看了您说的网页  觉得很乱 不知道该怎么转换 还是实现不了呀  OSG中有没有现成的函数能可以用的呢?或者公式呢

该用户从未签到

发表于 2009-9-14 22:09:50 | 显示全部楼层
OSG没有,可以自己写代码转换,并不复杂

该用户从未签到

发表于 2012-4-26 14:15:39 | 显示全部楼层
array 发表于 2009-9-11 21:51
参看我刚回答不久的一个帖子:
http://bbs.osgchina.org/viewthread.php?tid=2225

http://bbs.osgchina.org/viewthread.php?tid=2225
请问这个帖子讲的什么??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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