查看: 1087|回复: 3

求解答(mouseDrag()和setByMatrix()的问题)

[复制链接]

该用户从未签到

发表于 2013-11-13 13:32:35 | 显示全部楼层 |阅读模式
最近遇到两个问题,求大神解答:
1、bool mouseDrag(double x,double y,const WindowManager*wm)这个函数中的x和y是什么含义?
2、由eye,center ,up怎么得到ViewMatrix呢,想通过setByMatrix()改变视点?

该用户从未签到

发表于 2013-11-18 11:29:22 | 显示全部楼层
1. 一般来说就是鼠标的平面坐标
2. osg::Matrix::lookAt,还有注意setByMatrix设置的是相机的位置姿态矩阵,也就是观察矩阵的逆

该用户从未签到

 楼主| 发表于 2013-11-18 17:09:42 | 显示全部楼层
首先,谢谢锐哥的解答。
一个问题:我后来输出了一下x和y的值,发现他们是1,-1,2,0......类似的小值的数,觉得应该是鼠标平面坐标的实时变化量。
第二问题:我还想再问一下,想拉近视点,类似放大的效果,将eye到box.center的向量长度缩小,即eyenew=eye-(eye-box.center)/N  (box.center为包围球球心,N为常量),再用 osg::Matrix::lookAt的时候,center的值是不是也改变了?是否centernew=eyenew-(eye-center);?

该用户从未签到

发表于 2013-12-2 09:28:22 | 显示全部楼层
具体您可以自行观察,另一种可能是归一化的设备坐标,即[-1, 1]区间的值
至于您说的放大效果,对于透视投影来说就是改变了eye的值,center其实并不重要,因为它实际上只是用来确定look direction的参考点而已,因此getLookAt的时候也不会真的返回您之前设置过的center值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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