当前位置:  开发笔记 > 编程语言 > 正文

实现离轴投影

如何解决《实现离轴投影》经验,为你挑选了1个好方法。

我试图获得一个离轴投影效果,其中屏幕的内容根据用户的位置而变化.这与此视频中的内容类似:http:
//www.youtube.com/watch?feature = player_embedded&v = Jd3-eiid-Uw

我不确定为什么离轴投影是达到上述效果的合适方法.我在这里想到了两种方法:1)使用glFrustum,2)使用lookAt()
在上面的应用程序中,'camera'基本上按照用户的位置移动.所述glFrustum的坐标(left,right,bottom,top,near,far被给出了透视投影)来改变屏幕上的对象,因为它们会从不同的位置,当用户移动时出现.

与此同时,我发现这与使用用户位置翻译相机gluLookAt(centerPosition)并将相机送到lookAt中心非常相似.但我没有得到这个所需的效果,并想知道为什么会发生这种情况.

在此输入图像描述

上面两个有什么区别?

在OpenGL中通过以下方式实现离轴投影:

glMatrixMode(GL_PROJECTION);  
    glLoadIdentity();            
    glFrustum(fNear*(-fFov * ratio + headX),  
              fNear*(fFov * ratio + headX),  
              fNear*(-fFov + headY),  
              fNear*(fFov + headY),  
              fNear, fFar);  
          
    glMatrixMode(GL_MODELVIEW);  
    glLoadIdentity();  
    gluLookAt(headX*headZ, headY*headZ, 0, headX*headZ, headY*headZ, -1, 0, 1, 0);
    glTranslatef(0.0,0.0,headZ);

上面的gluLookAt(...)有什么意义,而不是在我尝试使用相机而只是将它lookAt point作为屏幕的中心时?



1> datenwolf..:

我不确定为什么离轴投影是达到上述效果的合适方法.

因为显示屏对应于平截头体的近平面.当你移动头部时,你会看到屏幕离轴.通过这种方式,您必须通过对投影平截头体进行相同的操作来重现这一点.

然而,使用lookAt将旋转场景,从而丢失近平面和屏幕平面之间的对应关系.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有