View
38
Download
0
Category
Preview:
Citation preview
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 1/9
MCDEM
2011
SOFIA SWIDAROWICZ
Universidad Ramon LLull. BES La Salle.Seminario de las TIC
MCDEM 2011
Tutorial Panda3D - Crayon3D
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 2/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Tutorial para principiantes
Panda3D – Crayon3D
(Python)
La presente tiene como intención guiar a los usuarios que comenzarán a experimentar conPanda3D y Crayon3D en el proceso de instalación y ejecución correcta de ambos programas.
Cuando comencé me resultó complicado saber qué hacer, por lo que perdí un poco de tiempo
tratando de configurarlos, y luego no sabía que ejemplos debía mirar para aprender (aparte
del manual que ofrece Panda3D) la estructura de la engine. Espero que con este manual de
iniciación te ahorre un tiempo precioso.
1 Paso - ¿Qué necesito?
¡Bien! Esta es la pregunta que todos nos hacemos cuando queremos comenzar algo desde
cero. Lo primero es saber qué es cada cosa.
Panda3D: Es un Game Engine o motor de videojuegos y un framework pararenderizados 3D para programas en python y C++. Es de código abierto e incluye
gráficos, audio, E/S, detección de colisiones y otra serie de características para la
creación de juegos en 3D. Fue desarrollado por la Universidad Carnegie Mellon
Entretainment Technolgy Center.
Crayon3D: Es una plataforma diseñada para usarse con Panda3D, permitiendo usar por
ejemplo los Wiimotes y luces infrarrojas para Head Tracking.
En este tutorial explicaré como usar el Panda y el Crayon mediante Python.
Mandos de la WiiLed Infrarrojo
Ahora, debes descargar: Panda3D SDK for Developer desde su página web. www.panda3d.org.
A pesar de que el SDK está disponible para diversas plataformas, lo mejor, si es que trabajarás
con los Wiimotes, es que lo hagas bajo entorno Windows. Si usas un Mac puedes descargar
máquinas virtuales como Parallels y trabajar normalmente con Windoes, esto debido a que
Crayon3D funciona bajo ese sistema operativo.
Después descarga el paquete Crayon3D desde su página web http://www.etc.cmu.edu/
Por último deberás descargar un editor de Python; yo uso el Notepad++ que es bastantebueno y lo podrás descargar en su página oficial: http://notepad-plus-plus.org/
Paso 2 – Instalación
Lo siguiente es instalar cada uno de los paquetes que acabas de descargar. Panda primero,
seguidamente el crayón 3D y luego el Notepad ++. En esta parte no hay mayor complicación.
Recomiendo que una vez instalados, copies cada carpeta al directorio raíz C: (ver paso 4)
Paso 3 – Ppython
Una vez has instalado todos los paquetes, querrás probar algún ejemplo. Te recomiendo queprimero comiences con los de Panda 3D.
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 3/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Cosas a tener en cuenta:
1) Todos los ficheros cuya extensión sea .py significa que son archivos python. Por lo queserá el ejecutable de la aplicación.
2) Para ejecutar el ejemplo, tienes dos opciones: la primera ir a inicio y buscar en el
menú Panda 3D Sample Programs. Selecciona uno de la lista y verás como se
ejecuta, ten paciencia mientras abre (a veces tarda un poco mientras renderiza los
modelos) y la segunda: deberás abrir una consola de Windows. Es decir: Menú Inicio
Ejecutar teclearás CMD que abrirá una consola. Usando los comandos de Windows
puedes buscar las rutas donde se encuentran los ejemplos:
Imagen 1.- Buscando archivos de ejemplos
Para ejecutar cualquiera de los ejemplos basta con escribir: ppython nombredearchivo.py
Imagen 2 .- Ejecutando los archivos
Paso 3 – Prueba Panda 3D
Ahora que ya sabes como ejecutar vía consola los archivos, es hora de mirar un ejemplo de
código en Panda 3D.
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 4/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Ambiente:
Si todo sale bien, lo que deberías ver es la siguiente imagen.
#ShowBase carga todos los módulos de Panda3D y hace aparecer la ventana de Panda.
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
# Carga el modelo de fondo
self.environ = self.loader.loadModel("models/environment")
# Renderiza el modelo.
self.environ.reparentTo(self.render)
# Transforma el modelo a las posiciones adecuadas
# X Y Z
self.environ.setScale(0.25, 0.25, 0.25)
self.environ.setPos(-8, 42, 0)
app = MyApp()
#El procedimiento run() contiene el ciclo principal, renderiza un frame,
# maneja las tareas del background y se repite. No regresa nada, así que necesita ser
#llamado una vez y debe ser la última línea del código a ejecutar
app.run()
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 5/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Task:
Ahora se le añadirá una tarea, en este caso que la cámara se mueva, o que gire el escenario:
from math import pi, sin, cos #se importan las librerías para calcular la rotación de la cámara
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
class MyApp(ShowBase):
def __init__(self ):
ShowBase. __init__(self )
# Carga el modelo de fondo
self.environ = self.loader.loadModel("models/environment")
# Renderiza el modelo.
self.environ.reparentTo(self.render)
# Transforma el modelo a las posiciones adecuadas
# X Y Z
self.environ.setScale(0.25, 0.25, 0.25)
self.environ.setPos(-8, 42, 0)
# Añade el procedimiento spinCameraTask que calcula la posición deseada
# basado en el tiempo que ha transcurrido, la cámara rota 6 grados cada segundo self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")
# Se define un procedimiento para mover la cámara. def spinCameraTask(self, task):
angleDegrees = task.time * 6.0 #segundos angleRadians = angleDegrees * (pi / 180.0) self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3) self.camera.setHpr(angleDegrees, 0, 0) return Task.cont
app = MyApp()
app.run()
Actores:
from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.actor.Actor import Actor
class MyApp(ShowBase):
def __init__(self ):
ShowBase. __init__(self )
# Carga el modelo de fondoself.environ = self.loader.loadModel("models/environment")
# Renderiza el modelo.
self.environ.reparentTo(self.render)
# Transforma el modelo a las posiciones adecuadas
# X Y Z
self.environ.setScale(0.25, 0.25, 0.25)
self.environ.setPos(-8, 42, 0)
# Añade el procedimiento spinCameraTask que calcula la posición deseada
# basado en el tiempo que ha transcurrido, la cámara rota 6 grados cada segundo self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")
# carga y transforma el actor panda self.pandaActor = Actor("models/panda-model",
{"walk": "models/panda-walk4"}) self.pandaActor.setScale(0.005, 0.005, 0.005)
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 6/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
self.pandaActor.reparentTo(self.render) # Lo hacemos caminar, mediante el ciclo walk. self.pandaActor.loop("walk")
# Se define un procedimiento para mover la cámara. def spinCameraTask(self, task):
angleDegrees = task.time * 6.0 #segundos angleRadians = angleDegrees * (pi / 180.0) self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3) self.camera.setHpr(angleDegrees, 0, 0) return Task.cont
app = MyApp() app.run()
El resultado es ver al panda en el escenario, caminando mientras la cámara rota.
Paso 4 – Colocar los ficheros de Crayon 3D en el directorio adecuado
Una vez has probado el Panda 3D puedes usar el crayon3D. Pondré el ejemplo que usé para
aprender, se llama EggWorld, al cual le hice modificaciones gráficas partiendo del original.
También puedes probar los demos que se encuentran dentro del fichero Crayon3D, sólo tienes
que comentar la línea 81 a 86 si te causa algún error al ejecutarlo en la demo1.
Si pruebas EggWorld, primero, debes colocar el fichero con la aplicación en directorio raíz C: yluego debes verificar que existan dentro todos los ficheros de Crayon 3D, este paso es el más
importante porque de lo contrario no se ejecutará el programa . Si no existen, debes copiarlos
del directorio de crayón3D (paso 2) y pegarlos todos dentro de la carpeta del proyecto
EggWorld.
Lo que necesitas copiar:
wiiuse.dll
wiiuse_al.dll
wiiuse_al.py
wiimote_handler.py
Crayon3DScene.pyCrayon3DGesture.py
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 7/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Paso 5 – Ejecutar EggWorld
Antes de ejecutar el programa, deberás conectar el Wiimote. Necesitarás del puerto bluetooth
para ello ( si no lo tienes en tu ordenador, puedes conseguir un dispositivo bluetooth USB),
luego dirigirte al panel de control y añadir un nuevo dispositivo bluetooth. Debes dejarpresionado los botones 1 y 2 del Wiimote para que sea reconocido como nuevo dispositivo. Sin
embargo, para este ejemplo (EggWorld) en particular, necesitarás de 2 Wiimotes pues uno
servirá de cámara para captar los movimientos de la luz infrarroja, mientras el otro servirá
para realizar tareas, como por ejemplo dibujar.
Una vez instalados debes ejecutar la consola de Windows (paso 3) y luego con el comando
ppython nombredefichero.py ejecutarás el programa.
Necesitarás tener un led infrarrojo también, ya que el Wiimote captura el movimiento de la luz
infrarroja y la proyecta en la aplicación como si fuese el puntero. (Ver imágenes 3, 4 )
Imagen 3 –
Puntero Moviéndose
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 8/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Imagen 4 .- Actor moviéndose
A continuación te dejo un pequeño código de muestra que utiliza los procedimientos de
crayon3D.
from pandac.PandaModules import *
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from direct.gui.OnscreenText import OnscreenText
# Librerias del Sistema
import math, random, sys
# Librerias Crayon3DScene
from Crayon3DScene import *
from wiimote_handler import *
from Crayon3DGesture import *
class Mundo(DirectObject):
def __init__(self):
env_model = loader.loadModel("models/environment")
env_model.setPos(0, 0, 0)
self.scene = Crayon3DScene(env_model)
self.scene.setDefaultPhysics()
self.scene.setEnvGeomMesh()
app = Mundo()
run()
5/12/2018 Tutorial Panda - slidepdf.com
http://slidepdf.com/reader/full/tutorial-panda 9/9
TUTORIAL PANDA3D - CRAYON3D
MCDEM
201
1
Antes de terminar con el mini tutorial quiero dejar uno tips que te ahorrarán tiempo en caso
de que te encuentres con los mismos obstáculos con los que yo me he encontrado:
1.- Siempre conecta los Wiimotes, sin importar que digan que están conectados. Si esto
sucede, los remueves y los vuelves a añadir.2.- Identación del código: Python es muy cuidadoso con la identación, si alguna vez te topas
con: “unexpected ident” significa que hay algún espacio realizado con el tabulador o el enter y
que no deberían estar ahí.
Te mostrará la identación del código, la flecha significa que hay un espacio que no debería
estar ahí
Lo eliminas con el backspace y dando espacios (sin el tabulador).
Para corregirlo haz click en
Recommended