Ejemplo de Animación Actores en Panda3D

July 25, 2017 | Autor: M. Morales-Rodríguez | Categoría: Animation, Panda3d
Share Embed


Descripción

#Sexto Programa: Rotacion y Traslacion de un Actor Intervalos, Secuencias y paralelo ###################################################################################################### ###################### #Librerias import direct.directbase.DirectStart from direct.actor import Actor from direct.gui.OnscreenText import OnscreenText from direct.gui.OnscreenImage import OnscreenImage from direct.interval.IntervalGlobal import * from pandac.PandaModules import * import math import sys

#Carga los principales modulos. #Permite emplear Actores. #Permite el manejo del texto en pantalla. #Permite el manejo de imagenes en pantalla. #Permite la creacion de intervalos. #Esta libreria permite el manejo en 3D. #Contiene diversas operaciones matematicas. #Se emplea para cerrar la pantalla escape.

###################################################################################################### ###################### #Manejo de Camara base.disableMouse()

#Desactiva el control por defecto de la camara

#(X,-,-) X positivo derecha, negativo izquierda. #(-,Y,-) Y negativo cerca, positivo lejos. #(-,-,Z) Z negativo abajo, positivo arriba. camera.setPos(0,-20, 2)

#Establece la posicion de la camara

###################################################################################################### ###################### #Funciones que permiten establecer los parametros necesarios para mostrar texto en pantalla def AgregarTitulo(texto): return OnscreenText(text=texto, style=1, fg=(1,1,1,1),bg=(0,0,0,1), pos=(0.1,0.9), align=TextNode.ALeft, scale = .08) def AgregarInstrucciones(pos, msg): return OnscreenText(text=msg, style=1, fg=(1,1,1,1), bg=(0,0,0,1), pos=(-1.3, pos), align=TextNode.ALeft, scale = .05)

###################################################################################################### ###################### #Carga de Escenario y Actores Actor1 = Actor.Actor("modelos/ralph",{"run":"modelos/ralph-run","walk":"modelos/ralphwalk","jump":"modelos/ralph-jump"}) environment = loader.loadModel("models/environment") ###################################################################################################### ###################### #Escala de Escenario y Actores Actor1.setScale(0.25,0.25,0.25) environment.setScale(0.30,0.30,0.30) ###################################################################################################### ###################### #Posiciona Escenario y Actores #(X,-,-) X positivo derecha, negativo izquierda. #(-,Y,-) Y negativo cerca, positivo lejos. #(-,-,Z) Z negativo abajo, positivo arriba. Actor1.setPos(3,-5,1) environment.setPos(-8,42,0) Actor1.reparentTo(render) environment.reparentTo(render) def funcion1(): ###################################################################################################### ###################### #Rotacion y Traslacion de un Actor intervalo_animacion1 = Actor1.actorInterval("walk", loop= 1, duration = 4) intervalo_traslacion1 = Actor1.posInterval(4,Point3(3,-12,1), startPos=Point3(3,-6,1)) intervalo1 = Parallel(intervalo_animacion1,intervalo_traslacion1) ## intervalo_animacion2 = Actor1.actorInterval("walk", loop= 1, duration = 1, playRate = 1)

## intervalo_rotacion2 = Actor1.hprInterval(1,Point3(-90,0,0), startHpr=Point3(0,0,0)) ## intervalo2 = Parallel(intervalo_animacion2,intervalo_rotacion2) intervalo_animacion3 = Actor1.actorInterval("walk", loop= 1, duration = 4, playRate = 1.5) intervalo_traslacion3 = Actor1.posInterval(4,Point3(-2,-12,1), startPos=Point3(3,-12,1)) intervalo3 = Parallel(intervalo_animacion3,intervalo_traslacion3) intervalo_animacion4 = Actor1.actorInterval("walk", loop= 1, duration = 1) intervalo_rotacion4 = Actor1.hprInterval(1,Point3(-180,0,0), startHpr=Point3(-90,0,0)) intervalo4 = Parallel(intervalo_animacion4,intervalo_rotacion4) intervalo_animacion5 = Actor1.actorInterval("walk", loop= 1, duration = 4) intervalo_traslacion5 = Actor1.posInterval(4,Point3(-2,-6,1), startPos=Point3(-2,-12,1)) intervalo5 = Parallel(intervalo_animacion5,intervalo_traslacion5) intervalo_animacion6 = Actor1.actorInterval("walk", loop= 1, duration = 1, playRate = 1.5) intervalo_rotacion6 = Actor1.hprInterval(1,Point3(-270,0,0), startHpr=Point3(-180,0,0)) intervalo6 = Parallel(intervalo_animacion6,intervalo_rotacion6) intervalo_animacion7 = Actor1.actorInterval("walk", loop= 1, duration = 2) intervalo_traslacion7 = Actor1.posInterval(4,Point3(3,-6,1), startPos=Point3(-2,-6,1)) intervalo7 = Parallel(intervalo_animacion7,intervalo_traslacion7) intervalo_animacion8 = Actor1.actorInterval("walk", loop= 1, duration = 1) intervalo_rotacion8 = Actor1.hprInterval(1,Point3(-360,0,0), startHpr=Point3(-270,0,0)) intervalo8 = Parallel(intervalo_animacion8,intervalo_rotacion8) Secuencia1 = Sequence (intervalo1, intervalo3, intervalo4, intervalo5, intervalo6, intervalo7, intervalo8) Secuencia1.start () ###################################################################################################### ###################### #Activa las teclas necesarias para ejecutar los actores Actor1.accept("1",funcion1) Actor1.accept("escape",sys.exit)

###################################################################################################### ###################### #Muestra texto en pantalla Actor1.tit = AgregarTitulo("Intervalos en Secuencia y en Paralelo") Actor1.inst1 = AgregarInstrucciones(0.75, "[1] Ejecuta el Programa") ###################################################################################################### ###################### #Ejecuta run()

Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.