查看: 3762|回复: 2

OSG中坐标系的问题 请教

[复制链接]

该用户从未签到

发表于 2010-10-19 12:40:58 | 显示全部楼层 |阅读模式
本帖最后由 warding 于 2010-10-19 12:42 编辑

浏览了几个关于坐标系帖子,特别是ARRAY版主解答的
http://bbs.osgchina.org/viewthread.php?tid=309&highlight=%D7%F8%B1%EA%CF%B5%2BX%2BY%2BZ
////////////////////////////////////////////////
其中示例:
osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
viewer.getCamera()->setProjectionMatrixAsPerspective( 40., 1., 1., 100. );
// 创建矩阵,指定到视点的距离。
osg::Matrix trans;
trans.makeTranslate( 0., 0., -12. );
// 旋转一定角度(弧度值)。
double angle( 0. );
while (!viewer.done())
{
  // 创建旋转矩阵。
  osg::Matrix rot;
  rot.makeRotate( angle, osg::Vec3( 1., 0., 0. ) );
  angle += 0.01;
  // 设置视口矩阵(旋转矩阵和平移矩阵连乘)。
  viewer.getCamera()->setViewMatrix( rot * trans );
  // 绘制下一帧
  viewer.frame();
}
////////////////////////////////////////////////////
有些还是不很理解,可能问的很低级......
开始 摄象机坐标系的原点和世界坐标系 三维世界的坐标系(所有模型的根结点的坐标系,不知道可不可以这样理解?)原点是重合的?当
osg::Matrix trans;
trans.makeTranslate( 0., 0., -12. );
        viewer.getCamera()->setViewMatrix(trans );
此时 三维世界的坐标系的原点变到了 世界坐标系(摄象机坐标系)中的(0,0,-12)?
  osg::Matrix rot;
  rot.makeRotate( angle, osg::Vec3( 1., 0., 0. ) );
  angle += 0.01;
  viewer.getCamera()->setViewMatrix(rot);
请教此处的绕X轴旋转 ,这个X轴是什么坐标系的X轴?(Array:关键的问题是setViewMatrix函数到底做了什么:它的作用并非是让摄像机运动!而是让整个三维世界·按照摄像机坐标系(而非绝对坐标系)·实现运动)


viewer.getCamera()->setViewMatrix(rot);
修改的是摄像机的观察矩阵:即,在摄像机坐标系中,三维世界相对于摄像机的位置
是通过什么来修改摄象机变换场景的?

该用户从未签到

发表于 2010-10-19 13:05:13 | 显示全部楼层
我想您需要首先理解OpenGL中几个坐标系的意义,这篇文章很值得您彻底将其分析透彻再作提问:
http://research.cs.queensu.ca/~jstewart/454/notes/pipeline/

此外我的书中也有比较详细的解释;与08年的我相比,现在我对很多概念也要清楚许多,毕竟每个人的水平都是不断提高着的;因此您不必对一个旧帖子的内容过于深究,自己明白基本的原理,很多问题就可以迎刃而解。

至于“摄象机坐标系的原点和世界坐标系原点是重合的?”,简单来说,是;但是轴方向是否重合却无法判定——这和您的投影矩阵与观察矩阵设置密切相关

Pvcs = Pwcs * viewMatrix
Pwcs = Pvcs * inverse(viewMatrix)

紧紧抓住这两个公式,我想其它的问题您都可以自行解答了

该用户从未签到

 楼主| 发表于 2010-10-19 13:19:19 | 显示全部楼层
好的 谢谢Array
看完我自己是那样理解的,就是不知道哪些是不对的  还是都不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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