openGL:转动整个场景或“绕轨道”摄像机

时间:2016-03-23 11:29:20

标签: python opengl camera pyopengl orbit

OpenGL似乎是一个拥有良好社区的好图书馆。在阅读了一些教程并阅读了一些解释后,我感觉我已经掌握了基础知识。

尽管如此,我还是挣扎着相机。我用OpenGL得到了相机是静态的,为了创造相机移动的错觉,你必须移动整个场景。我试图扭转整个场景。物体转动,但前面的物体停留在前面。我读了一些,但感觉我正在做他们告诉我的事情。

以下是我喜欢用相机“轨道”运行的两个正方形的运行示例。

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *


def draw():
    glBegin(GL_QUADS)
    glColor3fv((1,0,0))
    glVertex3fv((1,-1,-1))
    glVertex3fv((1,1,-1))
    glVertex3fv((-1,1,-1))
    glVertex3fv((-1,-1,-1))

    glColor3fv((0,1,0))
    glVertex3fv((1,-1,-2))
    glVertex3fv((1,1,-2))
    glVertex3fv((-1,1,-2))
    glVertex3fv((-1,-1,-2))

    glEnd()

pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)

gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)

glTranslatef(0.0,0.0, -25.0)

while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glRotatef(1, 0.0, 1.0, 0.0)

        draw()
        pygame.display.flip()
        pygame.time.wait(10)

现在两个方块都转了,但是绿色方块停留在红色方块的前面。我想看到的是整个场景转动,绿色方块在红色方块后面移动。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您必须使用Traceback (most recent call last): File "N:\GCSE Computing\Programming CA\Task 3\Task 3 - Solo.py", line 51, in <module> row[2] = int(row[2]) IndexError: list index out of range 启用GL_DEPTH_TEST

此外,不推荐使用旧的固定功能管道(从OpenGL 3.0开始),并已在OpenGL 3.1中删除。我强烈建议你不要用这个旧的固定管道开始一个新项目。