Почему линии моего 3D-куба по-прежнему видны, даже если куб находится за камерой в Pygame?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему линии моего 3D-куба по-прежнему видны, даже если куб находится за камерой в Pygame?

Сообщение Anonymous »

Недавно я пытался создать в pygame 3D-куб, который можно было бы просматривать, перемещая камеру. Я стараюсь не импортировать какие-либо модули, кроме математических, поэтому я могу оставить это относительно ванильным.
Я заставил куб работать, и теперь у меня есть способ переместить его. вокруг и посмотрите на него, но есть большой визуальный сбой, который меня очень беспокоит. Если вы расположитесь так, чтобы куб находился позади вашего поля зрения, а затем осмотритесь, вы увидите красный каркас куба, даже если вы смотрите в сторону от него.
Почему это происходит ? есть ли способ исправить это без импорта каких-либо модулей?
Мой текущий код показан ниже.
import pygame
import math

pygame.init()
w, h = 400, 400
screen = pygame.display.set_mode((w, h))

cube_vertices = [
[-1, -1, -1],
[ 1, -1, -1],
[ 1, 1, -1],
[-1, 1, -1],
[-1, -1, 1],
[ 1, -1, 1],
[ 1, 1, 1],
[-1, 1, 1]
]

cube_edges = [
(0, 1), (1, 2), (2, 3), (3, 0),
(4, 5), (5, 6), (6, 7), (7, 4),
(0, 4), (1, 5), (2, 6), (3, 7)
]

# Camera settings
camera_pos = [0, 0, -6]
yaw, pitch = 0, 0
move_speed = 0.05
turn_speed = 0.015

# Define projection
def project_vertex(vertex, camera_pos, yaw, pitch):
x_final = vertex[0] - camera_pos[0]
y_final = vertex[1] - camera_pos[1]
z_final = vertex[2] - camera_pos[2]
# Yaw
x_rotated = x_final * math.cos(yaw) - z_final * math.sin(yaw)
z_rotated = x_final * math.sin(yaw) + z_final * math.cos(yaw)
# Pitch
y_rotated = y_final * math.cos(pitch) - z_rotated * math.sin(pitch)
z_rotated = y_final * math.sin(pitch) + z_rotated * math.cos(pitch)
# Avoid division by 0
if z_rotated

Подробнее здесь: https://stackoverflow.com/questions/790 ... -the-camer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»