查看: 1472|回复: 7

世界坐标系

[复制链接]

该用户从未签到

发表于 2011-11-30 11:12:25 | 显示全部楼层 |阅读模式
世界坐标系 与 局部坐标系有什么区别 还有模型变换与他们的关系  0 能通俗易懂的解释下吗  谢谢

该用户从未签到

发表于 2011-11-30 12:27:51 | 显示全部楼层
局部坐标系就是物体自身的坐标系,不同的物体有不同的局部坐标西定义。世界坐标系就是统一描述所有物体的坐标系。
比如来说,一个人不管走到哪里,其自身坐标系不变,但是为了和其他人进行交互如判断是否碰撞,人的位置就必须统一使用世界坐标系内的方位来描述。但有时候为了描述的方便和计算的通用性则使用局部坐标系进行描述,比如向前方走5步这样的指令就比向偏南45度偏西20度这样的指令更能被人理解和执行。

该用户从未签到

 楼主| 发表于 2011-11-30 13:04:41 | 显示全部楼层
fenma3422 发表于 2011-11-30 12:27
局部坐标系就是物体自身的坐标系,不同的物体有不同的局部坐标西定义。世界坐标系就是统一描述所有物体的坐 ...

osg::ref_ptr<osg::Group> root = new osg::Group;
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;
root->addChild(geode);
osg::ref_ptr<osg::Vec3Array> V3_array = new osg::Vec3Array;
V3_array->push_back(osg::Vec3(0,0,0));
V3_array->push_back(osg::Vec3(1,0,0));
V3_array->push_back(osg::Vec3(1,0,1));
V3_array->push_back(osg::Vec3(0,0,1));
geometry->setVertexArray(V3_array.get());
geometry->addPrimitiveSet(new osg:rawArrays(osg:rimitiveSet:UADS,0,4));
geode->addDrawable(geometry);

我还想问下 我发现自己画个四边形 但是 如果使用PositionAttitudeTransform    setPosition 无法改变他的位置  是不是因为这是一照相机为根结点的 局部坐标系 无论怎么照相机都会计算包围球 以最合适的位置观察 ??

该用户从未签到

发表于 2011-11-30 14:26:13 | 显示全部楼层
要改变他的位置,请把他放在MT的子节点里,接受MT的全权指挥

该用户从未签到

 楼主| 发表于 2011-11-30 14:34:51 | 显示全部楼层
liushui 发表于 2011-11-30 14:26
要改变他的位置,请把他放在MT的子节点里,接受MT的全权指挥

为什么PositionAttitudeTransform不行  而MatrixTransform可以    现在改变的是他们在当前的局部坐标吗  就是当前照相机与模型内部系统坐标  我表述的不太清

该用户从未签到

 楼主| 发表于 2011-12-1 10:51:06 | 显示全部楼层
没人回答了吗??

该用户从未签到

发表于 2011-12-1 12:04:57 | 显示全部楼层
不管是PositionAttitudeTransform还是MatrixTransform都可以改变它的位置,如果PositionAttitudeTransform节点上面不是根节点那么改变的是以其父节点坐标系描述的局部坐标位置,如果是根节点那么就是世界坐标系

该用户从未签到

发表于 2011-12-1 14:36:21 | 显示全部楼层
记得OGL红宝书里拿相机照相类比~~比较好理解~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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