2011-02-01 16 views
21

Parece que no puedo encontrar la respuesta a esta pregunta en ningún lado. Me doy cuenta de que tiene que usar pyOpenGL o algo similar para hacer cosas OpenGL, pero me preguntaba si es posible hacer gráficos en 3D muy básicos sin ninguna otra dependencia.¿pyGame do 3d?

Respuesta

15

No, Pygame es un contenedor para SDL, que es una api 2D. Pygame no proporciona ninguna capacidad 3D y probablemente nunca lo hará.

Las bibliotecas 3D para Python incluyen Panda3D y DirectPython, aunque probablemente sean bastante complejas de usar, especialmente esta última.

+3

¿Qué hay de malo en esto? Pygame no hace 3d. PyOpenGL hace 3d. Vuelve a leer su pregunta. – Kylotan

+2

Sí, sí, actualmente estoy escribiendo un juego en 3D. Y ni siquiera estoy usando OpenGL. Estoy usando un método como el que publicó Horst JENS. – Cnorwood7641

11

Bueno, si puedes hacer 2d siempre puedes hacer 3d. Todo lo que realmente 3D tiene son superficies bidimensionales asimétricas que dan la impresión de que estás mirando algo con profundidad. La verdadera pregunta es ¿puede hacerlo bien, e incluso querrías hacerlo? Después de examinar la documentación de pyGame por un tiempo, parece que es solo un contenedor SDL. SDL no está destinado a la programación en 3D, por lo que la respuesta a la pregunta real es: No, y ni siquiera lo intentaría.

+3

Lo he intentado. De hecho, he escrito una emulación completa de OpenGL en C++ antes. Es desagradable, y aprender una verdadera API 3D es una idea mucho mejor hasta que sepa lo que está haciendo con la tecnología 3D. – imallett

2

Python Soya puede renderizar gráficos 3D en superficies de pygame.

6

Usted puede hacer juegos de pseudo-3d (como "Doom"), con sólo pygame:

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

y si explora el sitio pygame.org puede encontrar más "3d" juegos hacer con Python y pygame.

Sin embargo, si realmente quieres entrar en la programación en 3D, debes buscar en OpenGl, Blender o cualquier otra lib real en 3D.

0

Pygame nunca se pensó originalmente hacer 3d, pero hay una manera en que puedes hacer 3d con cualquier biblioteca de gráficos 2D. Todo lo que necesita es la siguiente función, que convierte puntos 3d en 2d puntos, lo que le permite hacer cualquier forma en 3D simplemente dibujando líneas en una pantalla.

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

Esto se llama pseudo 3d o 2.5d. Esto se puede hacer, pero puede ser lento y extremadamente difícil de hacer, por lo que se sugiere utilizar una biblioteca para 3d.