查看: 1272|回复: 6

球上漫游角度计算

[复制链接]

该用户从未签到

发表于 2014-8-28 17:41:52 | 显示全部楼层 |阅读模式
目的:通过用户点选控制点,并手动调整控制点方向(控制点用一个cow模型代替),调整后模型的头部所朝向的方向将为相机漫游的朝向。
问题:不知道怎么将模型的旋转信息正确传给相机。
已知数据:用户点选的控制点位置信息position和旋转信息rotation。
目前,位置信息是对的,尝试将旋转信息quat四元数转换成欧拉角给osgEarth的视点信息,漫游后结果不对
自己也尝试重写一个继承自CameraManipulator的类来实现视口的跟踪,但是将点选的控制点位置信息position和旋转信息rotation给这个重写的类并没有效果,希望遇到过或者知道怎么解决这问题的能帮帮我,提供点思路,谢了,急用

选完控制点,并调整完角度

选完控制点,并调整完角度

相机并没有按照牛头的朝向看

相机并没有按照牛头的朝向看

该用户从未签到

发表于 2014-8-28 20:55:54 | 显示全部楼层
如果真的理解相机姿态控制,这个问题很简单。
看看这个帖子吧
http://bbs.osgchina.org/forum.php?mod=viewthread&tid=14278

该用户从未签到

发表于 2014-9-9 16:26:37 | 显示全部楼层
你这个问题其实跟模型(如飞机或者你程序里面的牛)在球面上沿一系列点飞行或者动一个问题,就是必须保证机头或牛头的朝向,从你的截图感觉牛头朝向也不对吧,做好牛头的朝向,然后把牛的变换矩阵的逆矩阵给相机一切就ok,当然相机自身你还可相对牛再做一个矩阵,其实你必须做一个操作,因为相机默认朝向是-z

该用户从未签到

 楼主| 发表于 2014-9-9 18:37:49 | 显示全部楼层
我现在牛的方向其实就是代表的以后漫游式相机的朝向,路径的方向之后不放牛的

该用户从未签到

发表于 2014-9-10 09:03:06 | 显示全部楼层
那还有啥可疑问的,只要把牛的变换矩阵的逆矩阵给相机就行了,cow.osg模型的牛头朝向是+x轴,你还需要先把相机从-z朝向转向+x朝向,就这样。。。
但是还是搞清为什么这样才能游刃有余~

该用户从未签到

 楼主| 发表于 2014-9-10 10:34:04 | 显示全部楼层
那怎么把相机从-z朝向转向+x朝向啊,在osgEarth上相机的朝向默认是朝-z?

该用户从未签到

发表于 2014-9-10 16:16:53 | 显示全部楼层
不管是什么漫游器,相机的默认位置是在(0,0,0),朝向是-z轴,这是opengl规定的,派生cameramanipulaor漫游器都会对相机进行初始操作,oe的漫游器肯定对其也进行了相应的变换,默认肯定不是-z,这需要去阅读源代码,找出做了什么变化。
但是现在就你的问题而言很简单,派生一个cameramanipulator,把牛的逆矩阵给相机就行了,至于将相机-z轴转向+x,进行旋转就行。旋转的过程中保证up的方向朝上。
如果你是在oe的基础上进行修改,那你需要阅读源代码,
看一下opengl的模型、视图、投影变换有关知识很简单就理解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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