查看: 2287|回复: 5

osg中坐标系

[复制链接]

该用户从未签到

发表于 2011-5-15 22:00:46 | 显示全部楼层 |阅读模式
可能很简单的东西,但是没有理解~~
请教下
1.我如何获得用户当前的可视范围?
2.viewer->getCameraManipulator()->getMatrix().getTrans() ,得到的这个坐标可以理解为是相对于坐标系原点的偏移吗?是相对于世界坐标系?
getInverseMatrix中的坐标是相对于哪个呢?
谢谢~~

该用户从未签到

发表于 2011-5-16 11:06:48 | 显示全部楼层
1. 您的意思是视点位置?视锥体?还是别的什么。可以用getViewMatrixAsLookAt()来得到eye,center和up
2. CameraManipulator::getMatrix()是漫游器本身在世界中的位置和姿态;getInverseMatrix()得到的是观察矩阵

该用户从未签到

 楼主| 发表于 2011-5-16 20:15:02 | 显示全部楼层
回复 2# array
1.可能是对坐标不是很理解,得到了eye,center,up,我想得到当前的显示器能够显示什么范围内的数据,比方说此时能看到(1,2,3)这个坐标点,如何判断(10,20,30)是不是在此时能够看到~~
2.观察矩阵是什么~~囧。。比方说观察矩阵中是不是也有个表示位置的(x,y,z),这个xyz都是啥坐标系,原点是?
可能问的有点不入门,谢谢!!!

该用户从未签到

发表于 2011-5-17 10:40:40 | 显示全部楼层
1、这个其实就是判断点是否在视锥体当中了,您可以通过参看CullingStack::isCulled()的实现来了解具体的算法;另一种取巧的方法是直接v * MVP,得到的结果坐标如果均在[-1,1]的范围内,则说明点在可视范围内

2、Model-View Matrix即表示OpenGL中的模型视点矩阵,前者用来表达局部坐标到世界坐标的变换;后者用来表达世界坐标到观察坐标的变换——也就是观察矩阵

该用户从未签到

 楼主| 发表于 2011-5-17 22:17:45 | 显示全部楼层
回复 4# array
感谢array的耐心回复~对自己这样不去研究代码坐享其成表示惭愧~
1.已经解释的很明白。我想得到能显示的范围不知道能“取巧”不~~我现在有一些数据块,通过用pageLOD设置距离(0-100),(100-200)这种可以分类,但在满足(0-100)范围可能有1,2,3共3块数据(有坐标范围),我如何判断这三块是否都在视锥体内。如果只有1,2数据可见,在判断出3不可见的情况下怎么令3不加载?
2.谢谢

该用户从未签到

发表于 2011-5-21 23:30:00 | 显示全部楼层
我如何判断这三块是否都在视锥体内
已经说过了,您可以通过参看CullingStack::isCulled()的实现来了解几何的算法,或者直接v * MVP

令数据块3不加载的方式有很多,例如通过Switch节点,或者自己继承得到一种新的节点类型
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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