查看: 2137|回复: 5

问个物体跟随相机的问题

[复制链接]

该用户从未签到

发表于 2012-4-25 15:18:27 | 显示全部楼层 |阅读模式
1、现在想做一个模型菜单导航条,放置在屏幕的上1/4处,现在有一种办法让物体跟随视点动,现在我有多个自定有的操作器,有的是地形漫游的,有的是按照各种物体视点移动的,基本上复用的NodeTracker和Terrain操作器。现在我基本思路是重写每一个操作器的各个按键响应事件,计算位置,并给此部件设置位置矩阵,从而让物体固定在屏幕的上方1/4处。但是这样我要重写我所有的操作器,并把改变事件加到操作器的类中,这样,以后复用性就没有了。这块有没有好的办法可以解决,像此类的问题。
>
2、还有一个方法是用getCamera()得到我主相机的位置矩阵,然后计算出一个位置,转换过去,然后用UpdateCallback函数在更新前计算出位置。

或者有没有其他方法可以解决此问题,其实就是想实现3D界面菜单的功能,当然现在第一步是实现一个3d模型可以在不考虑多种操作器的情况下,可以固定在屏幕上方。请大家帮忙~~

该用户从未签到

 楼主| 发表于 2012-4-26 10:35:06 | 显示全部楼层
现在想到了一个办法,就是利用camera->getLookAt中获取到eye和center向量,请问各位大牛了,我想把这两点取中心点,然后将物体平移到这个点上,但是实际效果却非如此,此物体出现在了模型的下部,请问这块应该怎样计算

该用户从未签到

 楼主| 发表于 2012-4-26 11:08:38 | 显示全部楼层
diorlv2010 发表于 2012-4-26 10:35
现在想到了一个办法,就是利用camera->getLookAt中获取到eye和center向量,请问各位大牛了,我想把这两点取 ...

现在平移点可以计算出来了,但是角度怎么计算呢,各位大牛帮忙协助一下,用什么数学公式可以算出角度来,让视点怎么改变,物体总是在模型和视点之间,而不会随着视点转动而转动

该用户从未签到

 楼主| 发表于 2012-4-27 10:49:18 | 显示全部楼层
问题解决了,用camera->getcamera().getInverseViewMatrix()->getRotate()方法,可以获得camera的逆矩阵,也就是物体应该旋转的角度。这样应该是对的吧。

该用户从未签到

发表于 2012-4-27 11:00:34 | 显示全部楼层
菜单可以用osg::widget实现

该用户从未签到

 楼主| 发表于 2012-4-28 09:45:31 | 显示全部楼层
osg菜鸟新手 发表于 2012-4-27 11:00
菜单可以用osg::widget实现

首先感谢认真阅读了此文,但是因为要做主动立体,所以菜单要求做成模型内嵌到场景中,所以产生了此问题,再次感谢解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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