Подтвердить что ты не робот

Делает ли pyGame 3d?

Кажется, я не могу найти ответ на этот вопрос. Я понимаю, что вам нужно использовать pyOpenGL или что-то похожее на материал openGL, но мне было интересно, возможно ли сделать его очень простой 3d-графикой без каких-либо других зависимостей.

4b9b3361

Ответ 1

Нет, Pygame - это оболочка для SDL, которая представляет собой 2D api. Pygame не предоставляет никаких 3D-возможностей и, вероятно, никогда не будет.

3D-библиотеки для Python включают Panda3D и DirectPython, хотя они, вероятно, довольно сложны для использования, особенно для последнего.

Ответ 2

Хорошо, если вы можете сделать 2d, вы всегда можете делать 3d. Все 3d действительно перекошены 2-мерные поверхности, создавая впечатление, что вы смотрите на что-то с глубиной. Реальный вопрос в том, может ли он делать это хорошо, и вы бы даже захотели. После некоторого просмотра документации pyGame она выглядит как оболочка SDL. SDL не предназначен для 3d-программирования, поэтому ответ на реальный вопрос: "Нет", и я даже не попытался бы попробовать.

Ответ 3

Вы можете делать псевдо-3d игры (например, "Doom" ) только с pygame:

http://code.google.com/p/gh0stenstein/

и если вы просматриваете сайт pygame.org, вы можете найти больше "3d" игр, выполненных с помощью python и pygame.

Однако, если вы действительно хотите перейти на 3d-программирование, вы должны изучить OpenGl, Blender или любую другую настоящую 3d-библиотеку.

Ответ 4

Python Soya может отображать 3D-графику на поверхностях pygame.

Ответ 5

Если вам нужны 3D-проекционные функции и все эти вещи, вам придется использовать 3D-API, но если вы хотите сделать основной 3D-просмотр, я рекомендую руководство по Peter Website: http://www.petercollingridge.co.uk/pygame-3d-graphics-tutorial

Ответ 6

Pygame никогда не собирался делать 3D, но вы можете делать 3d с любой 2-й графической библиотекой. Все, что вам нужно, это следующая функция, которая преобразует 3D-точки в 2d точек, что позволяет вам делать любую трехмерную форму, просто рисуя линии на экране.

def convert_to_2d(point=[0,0,0]):
    return [point[0]*(point[2]*.3),point[1]*(point[2]*.3)]

Это называется псевдо 3d или 2.5d. Это можно сделать, но может быть медленным и чрезвычайно сложно сделать, поэтому предлагается использовать библиотеку, предназначенную для 3d.