2011-02-01 12 views
21

io non riesco a trovare la risposta a questa domanda da nessuna parte. Mi rendo conto che devi usare pyOpenGL o qualcosa di simile per fare roba openGL, ma mi stavo chiedendo se è possibile fare grafica 3d molto semplice senza altre dipendenze.pyGame fa 3d?

risposta

15

No, Pygame è un wrapper per SDL, che è un'API 2D. Pygame non fornisce alcuna funzionalità 3D e probabilmente non lo farà mai.

Le librerie 3D per Python includono Panda3D e DirectPython, anche se sono probabilmente piuttosto complesse da utilizzare, specialmente il secondo.

+3

Cosa c'è di sbagliato su questo? Pygame non fa 3d. PyOpenGL fa 3d. Rileggere la sua domanda – Kylotan

+2

Sì, attualmente sto scrivendo un gioco 3D. E non sto nemmeno usando OpenGL. Sto usando un metodo come quello pubblicato da Horst JENS. – Cnorwood7641

11

Beh, se si può fare 2d si può sempre fare 3d. Tutto ciò che realmente è 3d è distorto di superfici bidimensionali che danno l'impressione di guardare qualcosa con profondità. La vera domanda è che può farlo bene e vorresti anche farlo. Dopo aver sfogliato la documentazione di pyGame per un po ', sembra che sia solo un wrapper SDL. SDL non è inteso per la programmazione 3d, quindi la risposta alla vera domanda è, No, e non ci proverei nemmeno.

+3

Ho provato. In effetti, ho già scritto un'intera emulazione di OpenGL in C++. È brutto e imparare una vera API 3D è un'idea MOLTO migliore finché non sai cosa stai facendo con la tecnologia 3D. – imallett

2

Python Soya può eseguire rendering di grafica 3D su superfici pygame.

6

Si può fare giochi di pseudo-3d (come "Doom") con pygame solo:

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

e se si esplora il sito pygame.org si possono trovare più "3d" giochi fatto con python e pygame.

Tuttavia, se si vuole veramente passare alla programmazione 3d, è necessario consultare OpenGl, Blender o qualsiasi altra libreria 3D reale.

0

Pygame non è mai stato originariamente significava fare 3d, ma c'è un modo in cui puoi fare 3d con qualsiasi libreria di grafica 2d. Tutto ciò di cui hai bisogno è la seguente funzione, che converte i punti 3D in punti 2D, che ti permettono di creare qualsiasi forma 3D semplicemente disegnando linee su uno schermo.

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

Questo è chiamato pseudo 3d o 2,5 d. Questo può essere fatto, ma può essere lento, ed è estremamente difficile da fare, quindi è consigliabile utilizzare una libreria pensata per 3d.