OpenGL(简单)场景&;“的对象导航基础”;“了望”;照相机
我已经阅读了几篇关于使用OpenGL渲染3D场景的过于复杂的文章,但还没有真正找到一些可以帮助我可视化场景导航的基本概念(关于glRotate和glTranslate调用) 通过实验LWJGL(我的特定OpenGL库)提供的示例,我非常基本地了解了它们的使用会产生什么效果。我可以使用glTranslate移动到一个点,glRotate围绕该点旋转,glLoadIdentity捕捉回原点,或glPopMatrix捕捉回上一个glPushMatrix,它们本质上是位置和旋转的快照。最后,场景将相对于原点渲染到屏幕 基本上,把一个立方体放在点a,旋转B:OpenGL(简单)场景&;“的对象导航基础”;“了望”;照相机,opengl,3d,rotation,translation,scene,Opengl,3d,Rotation,Translation,Scene,我已经阅读了几篇关于使用OpenGL渲染3D场景的过于复杂的文章,但还没有真正找到一些可以帮助我可视化场景导航的基本概念(关于glRotate和glTranslate调用) 通过实验LWJGL(我的特定OpenGL库)提供的示例,我非常基本地了解了它们的使用会产生什么效果。我可以使用glTranslate移动到一个点,glRotate围绕该点旋转,glLoadIdentity捕捉回原点,或glPopMatrix捕捉回上一个glPushMatrix,它们本质上是位置和旋转的快照。最后,场景将相对于
OpenGL没有摄像头。只需将顶点推过modelview矩阵,对其进行照明计算,然后将其通过投影并映射到视口。正如一开始所说的那样,这种方法似乎是正确的,但会使事情变得复杂。我认为您必须首先理解视口、投影和模型视图的概念。。。当你明白了这些之后,一切都变得简单了。。。尝试搜索那些关键词……你也可以尝试在2D中进行一些实验,以熟悉旋转和平移,在这两种情况下更容易看到发生了什么。通常,您需要在原点进行旋转,然后进行平移。如果我想画一个太阳系,让月亮绕着地球转,我把地球移到原点,把月亮放在离它一定距离的地方,让月亮绕着地球转,然后把整个地球转的月亮包移(平移)到太阳系的适当位置,投影基本上是您的深度和视野,而modelview是您在3D世界中的位置和旋转。视口是所有对象的组合方式,是三维对象映射到的二维平面。平移和旋转调用都在modelview中,但它们之间的交互方式对我来说有点神秘。@MKatz-这是有道理的。到目前为止,我的2D叠加渲染都是基于顶点的,没有平移,但我将测试一些平移/旋转调用,看看到底发生了什么,然后看看是否可以将其应用于3D场景。