Я пытаюсь использовать pygame и pyopengl, в главном окне у меня есть 2 видовых экрана
1 большая карта и 1 мини-карта (оба представляют один и тот же кадр). Мне нужно, чтобы обе карты вращались вокруг центра, который не имеет 0,0,0 (скажем, мне нужно, чтобы центр вращения был -130,0,60, который должен быть постоянной точкой)
также мне нужен 1 вид для просмотра расстояния glTranslatef(0, 0, -1000)
и 2-й вид будет glTranslatef(1, 1, -200)
оба расстояния постоянны
я пытался использовать
gluLookAt()
glOrtho()
но это не меняет вращение .... около 0,0,0
или я могу использовать это неправильно.
код выглядит так:
pygame.init()
display = (1700, 1000)
pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
gluPerspective(50, (display[0] / display[1]), 0.1, 5000)
glTranslatef(0, 0, -1000) # this is the view distance i want from map 1
while True:
##### i use this function to zoom in and out with mouse Wheel
##### also the zoom in/out zooms to 0,0,0 and i need (-130,0,60)
if move_camera_distance:
if zoom_in:
glScalef(0.8,0.8,0.8)
elif zoom_out:
glScalef(1.2, 1.2, 1.2)
move_camera_distance = False
zoom_in = False
zoom_out = False
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
###### Map 1
###### Need to rotate around (-130,0,60)
###### distance from camera need to be (0,0,-1000)
glViewport(1, 1, display[0], display[1]) # splits the screen
glCallList(obj.gl_list)
DrawBuffer(bufferObj, noPoints, noCirclePoints, noCrossPoints)
###### Map 2
###### Need to rotate around (-130,0,60)
###### distance from camera need to be (0,0,-300)
glViewport(1300, 650, 400, 400) # splits the screen
glCallList(obj.gl_list)
DrawBuffer(bufferObj, noPoints, noCirclePoints, noCrossPoints)
pygame.display.flip()
pygame.time.wait(10)
Выходные данные, которые я получаю, равны 2 картам, оба вращаются вокруг 0,0,0, оба находятся на расстоянии (0,0, -1000), и оба меняются вместе, если я что-то изменяю в цикле While.
спасибо за помощь.