Задать вопрос
@nickname235342

PyOpenGL и Pygame, камера улетает от куба, Почему так?

Мой код выглядит так:
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 и это мой первый проект

При запуске камера улетает от куба в противоположную от куба сторону, как это можно исправить? А также что можно исправить в коде, чтобы он был более "правильным"?
  • Вопрос задан
  • 6 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы