Мой код выглядит так:
import time
import pygame
from math import *
from pygame.locals import *
import glm
from OpenGL.GL import *
from OpenGL.GLU import *
import pyautogui
verticies = (
(1, -1, -1),
(1, 1, -1),
(-1, 1, -1),
(-1, -1, -1),
(1, -1, 1),
(1, 1, 1),
(-1, -1, 1),
(-1, 1, 1)
)
edges = (
(0, 1),
(0, 3),
(0, 4),
(2, 1),
(2, 3),
(2, 7),
(6, 3),
(6, 4),
(6, 7),
(5, 1),
(5, 4),
(5, 7)
)
faces = [
(0, 1, 2, 3),
(3, 2, 6, 7),
(7, 6, 5, 4),
(4, 5, 1, 0),
(1, 5, 6, 2),
(4, 0, 3, 7),
]
colors = [
(1, 0, 0), # Красный
(0, 1, 0), # Зеленый
(0, 0, 1), # Синий
(1, 1, 0), # Желтый
(1, 0, 1), # Магента
(0, 1, 1), # Циан
]
def Cube():
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(verticies[vertex])
glEnd()
#glBegin(GL_QUADS)
#for i, face in enumerate(faces):
# glColor3fv(colors[i]) # Установка цвета для каждой грани
# for vertex in face:
# glVertex3fv(vertices[vertex]) # Установка вершины
#glEnd()
#
#glBegin(GL_LINES)
#for edge in edges:
# for vertex in edge:
# glVertex3fv(vertices[vertex]) # Отрисовка ребер
#
#glEnd()
def main():
pygame.init()
display = (0, 0)
screen = pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
y_r = -90.0
x_r = 0.0
console = pygame.font.SysFont('system', 8)
out = ""
gluPerspective(60, (16 / 9), 0.9, 50.0)
player_coord1 = [0.0, 0.0, 5.0]
glTranslate(0, 0, -5)
player_direct = [0.0, 0.0, -1.0]
up = [0.0, 1.0, 0.0]
while True:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
front = glm.vec3(
cos(glm.radians(y_r)) * cos(glm.radians(x_r)),
sin(glm.radians(x_r)),
sin(glm.radians(y_r)) * cos(glm.radians(x_r)),
)
pygame.mouse.set_visible(False)
front_camera = glm.normalize(front)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
mouse_rel = pygame.mouse.get_rel()
if pygame.key.get_pressed()[pygame.K_w]:
player_coord[2] += 0.1
if pygame.key.get_pressed()[pygame.K_s]:
player_coord[2] += -0.1
if pygame.key.get_pressed()[pygame.K_a]:
player_coord[0] += 0.1
if pygame.key.get_pressed()[pygame.K_d]:
player_coord[0] += -0.1
if pygame.key.get_pressed()[pygame.K_SPACE]:
player_coord[1] += -0.1
if pygame.key.get_pressed()[pygame.K_LSHIFT]:
player_coord[2] += 0.1
#out += f"player_coords: {player_coord} \n"
print(player_coord1)
#glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
#glLoadIdentity()
gluLookAt(
player_coord1[0],
player_coord1[1],
player_coord1[2],
0,
0,
0,
0,
10,
0,
)
Cube()
#glEnable(GL_DEPTH_TEST)
glFinish()
#screen.blit(console.render(out, False, (0, 180, 0)), (10, 1079))
pygame.display.flip()
pygame.time.wait(10)
main()
Возможно, он написан не совсем правильно, т.к. я только учусь opengl и это мой первый проект
При запуске камера улетает от куба в противоположную от куба сторону, как это можно исправить? А также что можно исправить в коде, чтобы он был более "правильным"?