Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - Grafica 3d
Forum - Python - Grafica 3d

Avatar
total (Member)
Guru


Messaggi: 815
Iscritto: 16/09/2006

Segnala al moderatore
Postato alle 16:22
Lunedì, 19/03/2007
Qualcunop di voi utilizza motori grafici 3d gestibili o scritti in python ?
Io da un po utilizzo panda3d mi chiedevo se qualcuno sapeva se esisteva un tutorial in italino!

Ps: chi di voi modella con blender? sapete consigliarmi un buon sito dove imparare, scaricare modelli e/o texture...
Grazie mille :k::k:

PM Quote
Avatar
ppanico2 (Normal User)
Newbie


Messaggi: 9
Iscritto: 26/07/2007

Segnala al moderatore
Postato alle 8:44
Giovedì, 26/07/2007
Ciao, io uso pyopengl su winxp, le opengl non son facilissime da imparare ma sono librerie standard, dunque imparale in python vuo dire risparmiare fatica grazie alla semplicità della sintassi, ti devi scaricare le pyopengl e glut. ci ho messo un po per impostare il tutto a tempi eadesso non ricordo di preciso se glut è in pyopengl o in pycontext o da qualche altra parte.ti posto come si apre una finestra così potrai controllare se è andata a buon fine l' installazione, ti ci metto anche il commento

Codice sorgente - presumibilmente Python

  1. # -*- coding: cp1252 -*-
  2. # Importazione dei moduli necessari all' esecuzione delle istruzioni del programma:
  3. ###################################################################################
  4. import sys
  5. from OpenGL.GL import*
  6. from OpenGL.GLU import*
  7. from OpenGL.GLUT import*
  8. ########################
  9.  
  10. #Dichiarazione delle variabili globali:
  11. #######################################
  12. ESCAPE = '\033'
  13. window = 0 # numero di finestre GLUT.
  14. #####################################
  15.  
  16. # Definizione delle funzioni:
  17. #############################
  18.  
  19. # Le callback:
  20. #############
  21. # La funzione generale di inizializzazione di OpenGL setta tutti i parametri iniziali e viene
  22. # chiamata come penultima istruzione nella definizione del main, prima di glut.MainLoop();
  23. def InitGL(Width, Height):         
  24.   glClearColor(0.0, 0.0, 0.0, 0.0) # imposta il colore di sfondo della finestra;
  25.   glClearDepth(1.0)                # imposta il valore libero per l'amplificatore di profondità;
  26.   glDepthFunc(GL_LESS)             # imposta il valore usato per i confronti dell'amplificatore
  27.                                    # di profondità;  
  28.   glEnable(GL_DEPTH_TEST)          # abilita il valore precedentemente specificato;
  29.   glShadeModel(GL_SMOOTH)          # Enables Smooth Color Shading
  30.        
  31.   glMatrixMode(GL_PROJECTION)
  32.   glLoadIdentity()                 # Reset The Projection Matrix
  33.                                    # Calculate The Aspect Ratio Of The Window
  34.   gluPerspective(45.0, float(Width)/float(Height), 0.1, 100.0)
  35.  
  36.   glMatrixMode(GL_MODELVIEW)
  37.  
  38. # La funzione chiamata quando la finestra è ridimensionata (which shouldn't happen if you enable
  39. # fullscreen, below)
  40. def ReSizeGLScene(Width, Height):
  41.   if Height == 0:                  # Prevent A Divide By Zero If The Window Is Too Small
  42.     Height = 1
  43.  
  44.   glViewport(0, 0, Width, Height)  # Reset The Current Viewport And Perspective Transformation
  45.   glMatrixMode(GL_PROJECTION)
  46.   glLoadIdentity()
  47.   gluPerspective(45.0, float(Width)/float(Height), 0.1, 100.0)
  48.   glMatrixMode(GL_MODELVIEW)
  49.  
  50. # La funzione principale di disegno:
  51. def DrawGLScene():
  52.   # Clear The Screen And The Depth Buffer
  53.   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
  54.   glLoadIdentity()                                      # Reset The View
  55.   # since this is double buffered, swap the buffers to display what just got drawn.
  56.   glutSwapBuffers()
  57.  
  58. # La funzione chiamata quando è premuto un pulsante. Note the use of Python tuples to pass
  59. # in: (key, x, y)  
  60. def keyPressed(*args):
  61.   if args[0] == ESCAPE:            # if escape is pressed, kill everything.
  62.     glutDestroyWindow(window)
  63.     sys.exit()
  64. ################################################################################################    
  65.  
  66. # Il main:
  67. ##########
  68. def main():
  69.   global window
  70.   glutInit(sys.argv) # richiede al sistema operativo le risorse per aprire una finestra su cui
  71.                      # disegnare;
  72.                      
  73.   glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH) # setta le
  74.                                # caratteristiche di tale finestra tramite OR di maschere di bit.       
  75.  
  76.   # Creazione della finestra:
  77.   glutInitWindowSize(640, 480) # fissa le dimensioni a h * w;
  78.   glutInitWindowPosition(0, 0) # fissa la posizione del vertice superiore sinistro della
  79.                                # finestra a (x,y);                            
  80.   window = glutCreateWindow("Titolo della finestra") # crea una finestra con un titolo.
  81.  
  82.   glutDisplayFunc(DrawGLScene) # Specifica la funzione di rendering.
  83.  
  84.   # Uncomment this line to get full screen.
  85.   #glutFullScreen()
  86.  
  87.   glutIdleFunc(DrawGLScene) # Registra la funzione di idle, ovvero la funzione che viene
  88.                             # chiamata quando non ci sono input da parte dell’utente.
  89.                            
  90.   # Register the function called when our window is resized.
  91.   glutReshapeFunc(ReSizeGLScene)
  92.  
  93.   glutKeyboardFunc(keyPressed) # Registra la funzione che gestisce la tastiera normale.
  94.  
  95.   # Initialize our window.
  96.   InitGL(640, 480)
  97.  
  98.   glutMainLoop() # Entra nel loop principale dell'applicazione.
  99. ################################################################################################
  100.  
  101. # Programma:
  102. ############
  103. # Print message to console, and kick off the main to get it rolling.
  104. print "Hit ESC key to quit."
  105. main()



ti visualizza una finestra nera che puoi chiudere anche cliccando su esc

Per quanto riguarda blender non lo tocco da un bel pò, comunque è una figata e se impari a usare il game engine puoi fare delle cose fighissime in realtime. Un ottimo sito è http://www.blender.it e anche http://www.kino3d.com

Ciao ;)

Ultima modifica effettuata da ppanico2 il 26/07/2007 alle 8:46
PM Quote
Avatar
total (Member)
Guru


Messaggi: 815
Iscritto: 16/09/2006

Segnala al moderatore
Postato alle 17:08
Venerdì, 27/07/2007
Grazie !! avevo letto qualsosa a proposito delle pyopenGL ma per ora mi sono dedicato ad altro ....dato che non sono molto buono con la modellazione...spero di imparare presto.. in quanto a pyopenGL credo che si sia molto piu semplice, ma penso che per ora le aplicazioni 3d con python non riescano ad essere molto performanti se ad una definizione accettabile...
Io ho provato questo panda 3d e fila fuido inoltre essendo un motore grafico gia bello e pronto.. non devi fare molto lavoro basta imparare le funzioni principali.

Credo che mi buttero con la grafica 3d piu avanti se prenderò un po di dimestichezza con il C++.

Per quanto riguarda blender so che è molto bello e  open source.. ma devi essere bravo per ottenre risultati decenti, mi ci mettero di impegno piu avanti almeno per quanto riguarda la modellazione

Grazie mille dei consigli

PM Quote