如何操作"相机"没有gluLookAt的openGL中的位置和旋转

时间:2016-12-13 15:50:15

标签: python opengl camera pygame pyopengl

我道歉,因为似乎这个问题在其他帖子中得到了解答,但我还没有找到我需要的那种答案。

我的意图是,与openGL的许多其他用户一样,创建一个简单的3D环境,尽管我使用了各种资源,但我似乎仍然坚持使用最重要的组件之一,导航...虽然我已经看到了gluLookAt()用于导航场景的许多用途,计算面对"面对"点,以及" up"通过三个角度,当这些角度最终被重新计算以便通过openGL进行转换时。 (虽然这种事物对于绕物体运行似乎非常有用)

然而,我看到了另一个看似更实用的方法,它应用了一系列类似的操作(以pythonic方式)

listen_addresses = '*'      # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)
port = 5432             # (change requires restart)
max_connections = 100           # (change requires restart)
#superuser_reserved_connections = 3 # (change requires restart)
#unix_socket_directories = ''   # comma-separated list of directories
                    # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

但是在尝试这种方法时,我发现不仅(对我有限的理解)zFar切断了大部分渲染对象,但z坐标功能失调或完全被忽略。此外,似乎旋转仍然围绕原点发生,而不是相机。

如果错误出现在我的整个程序中,可以在这里找到(https://www.dropbox.com/s/5ysn5jgzgci17vm/faulty_program.py?dl=0),但中心功能如下:

def goto(x,y,z,pitch,yaw,roll):
    glLoadIdentity()
    glRotatef(pitch,1,0,0)
    glRotatef(yaw,0,1,0)
    glRotatef(roll,0,0,1)
    glTranslatef(-x,-y,-z)

我想,最重要的是,我要求这种操作的正确方法,因为我显然不知道我在做什么......

0 个答案:

没有答案