tutorial panda

9
  MCDEM 2011 SOFIA SWIDAROWICZ Universidad Ramon LLull. BES La Salle. Seminario de las TIC MCDEM 2011 Tutorial Panda3D - Crayon3D

Upload: ryuzaky-louliet

Post on 12-Jul-2015

29 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tutorial Panda

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

Page 2: Tutorial Panda

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.

Page 3: Tutorial Panda

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.

Page 4: Tutorial Panda

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() 

Page 5: Tutorial Panda

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) 

Page 6: Tutorial Panda

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

Page 7: Tutorial Panda

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

Page 8: Tutorial Panda

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()

Page 9: Tutorial Panda

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