查看: 1678|回复: 3

HUD 能否用透视投影?

[复制链接]

该用户从未签到

发表于 2009-10-20 16:42:18 | 显示全部楼层 |阅读模式
实现HUD功能需要定义投影矩阵。一般用正交投影定义,例如
osg:rojection * projection = new osg::Projection;
projection->setMatrix(osg::Matrix:rtho2D(0,1280,0,1024));
projection->addChild(modelview);
root->addChild(projection);
请问:
能否用透视投影定义
如projection->setMatrix(osg::Matrix::frustum(0,1280,0,1024,?,?));
frustum函数中的各个参数应该如何定义?这六个参数与什么有关?

该用户从未签到

发表于 2009-10-20 16:58:33 | 显示全部楼层
它使用视锥体来模拟真实世界的观察,并将其投射到二维屏幕上。这个投射需要6个参数,投射窗口的范围,以及视锥体的远近平面,OpenGL相关的书籍均有讲解

对于HUD而言,当然也可以用透视投影,不过意义不大。

该用户从未签到

 楼主| 发表于 2009-10-20 17:20:58 | 显示全部楼层
本帖最后由 lucifinil 于 2009-10-20 17:28 编辑

请问:
HUD的视锥体的远近平面是-1~1还是是摄像机的远近平面?在这里远近平面数值应该如何定义?投射窗口范围是在屏幕左下角,这里投射窗口范围的数值是不是也应该改变啊?
我试了一些值都不对!呵呵!
我是使用HUD来显示类似autoCAD的坐标轴,基本功能都已经完成了,就是场景图是透视投影,而HUD是正交投影,所以希望将HUD改成透视投影

该用户从未签到

发表于 2009-10-20 21:01:45 | 显示全部楼层
HUD本身就不应该有视锥体这种概念,所以我无法回答您。可以随便定义,只要文字不会被远近平面裁减掉就可以了。您恐怕没有完全理解OpenGL坐标系变换的过程,请先学习一下这方面相关的知识

此外,“场景图是透视投影,而HUD是正交投影”,我不认为这之间有什么关联。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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