查看: 3051|回复: 10

osg长度单位

[复制链接]

该用户从未签到

发表于 2009-7-30 17:36:18 | 显示全部楼层 |阅读模式
怎么获取osg中的长度单位。。。
或者设置长度单位。。。
谢谢

该用户从未签到

发表于 2009-7-30 22:14:12 | 显示全部楼层
好像没有设置单位一说,,,这个你可以建模时专门控制~~~~

该用户从未签到

 楼主| 发表于 2009-7-31 09:30:05 | 显示全部楼层
2# FlySky
那它是是与建模软件设置的单位是一致的吗????

该用户从未签到

发表于 2009-7-31 17:49:34 | 显示全部楼层
不是。
OSG里的单位就是OpenGL的单位,和当前的观察投影矩阵密切相关。换句话说,它没有绝对单位的概念

该用户从未签到

 楼主| 发表于 2009-7-31 18:00:21 | 显示全部楼层
4# array
如果没有单位的概念的话
就是遇到过这种情况。。。。建模的时候没有把模型放在原点,那我就要做一个平移,那我做这个平移的时候坐标怎么设置呢???

该用户从未签到

发表于 2009-7-31 18:52:05 | 显示全部楼层
这必须取决于您的投影矩阵,如果不知道您的投影矩阵是如何设置的,谁都不知道该怎样把什么范围内的世界坐标换算成屏幕坐标,也就不知道该如何设置单位长度

该用户从未签到

 楼主| 发表于 2009-8-2 10:37:13 | 显示全部楼层
6# array


我明白您的意思。。。可能是我说的不清楚。。。
我不是说要把模型移到屏幕的中心
我是说在osg世界坐标系,与建模软件(eg. 3dmax)中的模型坐标系(是不是也可以称世界坐标系),这两者应该有某种对应的关系吧, 我是想把模型移到osg世界坐标系的原点。

ps: 我现在的解决方法是获取这个模型的boundingbox的中心坐标。。。 然后这个坐标的相反值做平移。。。。。

该用户从未签到

发表于 2009-8-2 11:15:07 | 显示全部楼层
我明白您的意思,这里面的确有对应关系,转换的方法就是计算平移和旋转值。
但是所谓的“长度单位”,这必然是建立在有对照的基础上的,譬如我们向Z-方向看去,定义投影矩阵视界范围的[-1,1]投影到眼睛里,然后才可以认为此时的一个像素是1mm,或者是1英寸。不能直接说“从这端到那端的绝对长度是多少”,没有这个概念

该用户从未签到

发表于 2009-8-6 09:26:13 | 显示全部楼层
osg中的长度单位就是:单位,不代表任何具体的度量尺寸。
具体来说,如果3DMax里生成了一个边长为1的立方体,那么放到osg里 边长也是1,但是这个1具体是1厘米,还是1毫米,都可以,看你准备把它当成什么了。
如果具体到输出设备,就有尺寸的概念了,比如array说的,输出到屏幕时的尺寸,就要考虑屏幕的尺寸和投影关系了。
不知道这样解释清楚了没有?

该用户从未签到

 楼主| 发表于 2009-8-6 09:38:06 | 显示全部楼层
。。谢谢。。。
eg. 在3dmax中不管设置什么单位,在(1,1,1)位置建了一个模型,我现在可以用osg::MatrixTransform(Matrix::translate(-1,-1,-1)把他移动到原点了。是不是这个意思

该用户从未签到

发表于 2009-8-6 09:47:57 | 显示全部楼层
是的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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