Archive for the ‘3D’ Category

Ejemplo Actionscript 3 - Fisica para 3D con JigLibFlash

Lunes, Abril 12th, 2010


Jiglibflash es un motor de fisica para 3D. Su sitio oficial es http://code.google.com/p/jiglibflash/
Para empezar voy a detallar un poco los conceptos para los que no están muy interiorizados con el tema. JigLibFlash es un motor de física 3D. Por lo tanto NO! es un motor de 3D. JigLib es solo la parte que simula la física dentro de una scena en 3D. Es por esto que primero que todo deben tener un motor de 3D, tal como Papervision3D, Away3D, Sandy, etc. Para este ejemplo voy a utilizar Papersivion3D que es el motor que vengo usando hace ya un tiempo.

Lo primero es configurar la parte 3D, en papervision3D se necesita un viewport, una cámara, un render engine y una scena. Para hacer esto rápidamente vamos a extender la clase principal de la clase BasicView que ya implementa todo este sistema para poder renderear en 3d. La idea de esto es no tener que explicar muchas cosas que son netamente de pv3d y ver directamente lo que a JigLib refiere.

Bueno nuestra clase debería verse asi. La función startRendering() hace que comience a renderear pv3d, esto hace que la función onRenderTick sea llamada en cada frame.

Código :

package
{
   import flash.events.Event;
   import org.papervision3d.view.BasicView;

   public class Main extends BasicView
   {
      public function Main()
      {
         super(0, 0, true);

         startRendering();
      }

      override protected function onRenderTick(event:Event = null):void
      {
         super.onRenderTick(event);
      }

   }

}

Con esa base ya podemos comenzar a integrar lo necesario para simular la física. JibLibFlash trae unas classes plugin para interactuar con cada motor 3d especifico. Dentro de la librería van a encontrar una clase que se llama Papervision3DPhysics, esta clase encapsula todo lo necesario para que JigLib funcione, ademas de brindarnos algunas funciones para crear objetos de manera sencilla.

Continuando con el ejemplo, vamos agregar una instancia de esta clase.

Código :

package
{
   import flash.events.Event;
   import jiglib.plugin.papervision3d.Papervision3DPhysics;
   import org.papervision3d.view.BasicView;

   public class Main extends BasicView
   {
      private var _physics:Papervision3DPhysics;

      public function Main()
      {
         super(0, 0, true);

         initPhysics();
         startRendering();
      }

      private function initPhysics():void
      {
         _physics = new Papervision3DPhysics(scene, 7);
      }

      override protected function onRenderTick(event:Event = null):void
      {
         _physics.step();
         super.onRenderTick(event);
      }
   }
}

De acá solo dos lineas a destacar), la creación de la instancia recibe en el constructor la scena(Scene3d de pv3d) y la velocidad, la velocidad es una constante para toda la librería. Y la otra linea es fundamental _physics.step(); que debe hacerse en cada frame para ir actualizando todo, es por esto que esta dentro de la función onRenderTick y antes del super() para que primero actualice todos los valores relacionados a la física y luego renderee los objetos.

Con esas pocas lineas tenemos lo necesario para el ejemplo. Ahora solo resta agregar objetos a la scena, para esto la clase Papervision3DPhysics tiene algunas funciones para hacer esto de manera sencilla.

Crear Suelo

Código :

private function createGround():void
{
   var mat:WireframeMaterial = new WireframeMaterial(0xCCCCCC);
   var ground:RigidBody = _physics.createGround(mat, 1000, 0);
}

Crear Cubos

Código :

private function createBox():void
{
   var materials:MaterialsList = new MaterialsList();
   materials.addMaterial(new WireframeMaterial(0xFF4444), "all");
   var box:RigidBody;
   for (var i:int = 1; i < 5; i++) {
      box = _physics.createCube(materials, 100, 100, 100, 3, 3, 3);
      box.y = 300 * i;
   }
}

Crear Esferas

Código :

private function createSphere():void
{
   var ball:RigidBody;
   for (var i:int = 1; i < 4; i++) {
      ball = _physics.createSphere(new WireframeMaterial(0xFF44FF), 50);
      ball.z = -200;
      ball.y = 300 * i;
   }
}

Estas son las 3 posibilidades que nos ofrece la clase Papervision3DPhysics. También es posible crear los objetos de manera mas abstracta pero no voy a tocar ese tema. Así concluyo con este tip, espero que a alguien le sea de ayuda.

VER EJEMPLO
DESCARGAR ARCHIVOS DEL TUTORIAL

Enviar comentario

Videotutorial sobre animación 3D en Flash CS4

Martes, Noviembre 18th, 2008

En éste videotutorial veremos las nuevas herramientas para manipular y animar objetos en 3D utilizando Flash CS4


Enviar comentario

Antigua Roma 3D en Google Earth y videochat en Gmail

Jueves, Noviembre 13th, 2008

Google siempre nos ha cautivado con sus innovaciones desde el mismo momento que tuvimos nuestra primera experiencia con su buscador. El concepto de web 2.0 ha permitido a google poner en marcha toda una plataforma aprovechando al máximo el desarrollo de herramientas para web con un ambiente totalmente enriquecido.

De ahí que se pueden listar(desde hace rato no alcanzan los dedos de las manos para contarlas) una infinidad de desarrollos que han causado un gran impacto entre el mercado, entre muchos (y me perdonan si no menciono todos) están Gmail, Google Earth, Google Maps o Google Apps causando un cambio sobre paradigmas en el uso de aplicaciones en web.

Aunque últimamente google ha causado cierta incomodidad en cuanto a la ambición en su cobertura de información por todo el mundo, esa misma ambición es lo que ha hecho que por estos días nos llenen de nuevas sorpresas aquí solo dos de ellas.

Exploración de Roma Antigua en 3D


Por medio de esta aplicación, la cual esta basada en la maqueta del arquitecto Italo Gismondi (1887-1974), se puede tener una exploración con una experiencia totalmente virtual y en 3D.

Video Chat en Gmail

Y como si no fuera poco y para generar aun mas expectativa google hace anuncio de la integración de video y voz en el chat de gmail, de una forma bastante sencilla como todo lo de google. Solamente basta con presionar el vinculo que esta situado en la parte superior derecha ¡Nuevo! Chat de vídeo instales la aplicación y reinicies tu navegador y listo!. Aparecerá en tu chat del gmail tu nick con un icono de una cámara, al chatear con otra persona (si ya ha realizado la misma operación) podrán comenzar un chat con video.

Lo mejor de todo esto es que es muy limpio y agradable de usar, utiliza el flash player (con todos sus beneficios), cuando estas en el video chat puede hacer un "fullscreen" y mover el recuadro de tu video por toda la pantalla. No necesitas afanarte por instalar un programa en tu computadora ya que estas bajo la cuenta de gmail y en tu navegador, aunque con esto no es que se piense desplazar los tradicionales messenger de hotmail o yahoo y mucho menos depreciar las aplicaciones potentes para VoIp como Skype … o no por ahora Cool


Pues con todo esto y otras que se me quedan por fuera como Google Ocean, el mismo lanzamiento del navegador chrome (asi para muchos parezca inoficioso y redundante) y hasta la especulación de un mundo nuevo totalmente virtual tipo SecondLife , es inevitable no pensar en "Googlizarce" … ante tanto caramelo es imposible no salir untado de él.

Enviar comentario

Animación de movimiento constante y loop en 3D Studio Max

Martes, Septiembre 16th, 2008

En este tip mostraré como de realizar movimientos, del tipo loop, ping-pong y otros en 3d Max, gracias a Parameter Curve out - of – Range Types. Esto puede ser de gran ayuda al realizar una animación compleja, que necesite que ciertas partes se repitan de forma constante, sin afectar los demás objetos.

En 3d Max existe una línea de tiempo para animar (como en Flash o Premier), pero no es la única forma de lograr que un objeto se mueva. También existe un editor de curvas, que en este caso, nos ayudará a la realización de un loop o movimiento constante.

Primer paso

Creamos un objeto, en mi caso un cubo. Lo seleccionamos, y presionamos Auto Key para que al movernos en la línea de tiempo, y mover el objeto, nos genere los fotogramas. Nos ubicamos en el fotograma 50 y desplazamos el cubo en la dirección que sea. Automáticamente se genera el fotograma clave:

Imagen de cubo y Auto Key

Si presionan play, verán que ya tenemos una mini-animación. Entonces, ya tenemos lo principal para generar un loop, repetición relativa y demás.

Presionamos nuevamente Auto Key, para no modificar sin querer nuestra animación.

Creación del loop y repetición relativa

Seleccionamos el objeto animado y hacemos click derecho para abrir el menú contextual, y nos dirigimos a curve editor (editor de curvas). Les aparecerá una ventana como la siguiente:

Imagen del editor de curvas

En la gráfica, se ven unas líneas unidas por vectores, donde los vectores vendrían a ser los fotogramas, y la línea, la curva que representa el movimiento. Además, las líneas representan los movimientos en z, x e y respectivamente.

Nos dirigimos al botón: Parameter Curve out - of – Range Types

Imagen del botón

Aquí nos salen varias opciones para crear:

  • Constant (por defecto)
  • Cycle
  • Loop
  • Ping Pong
  • Linear
  • Relative Repeat

Imagen de la ventana

Y simplemente con presionar el grafico y darle al botón OK, se genera. Los gráficos son muy ilustrativos, y aquí les dejo unos ejemplos de los que para mí, son mejores.

Loop


Relative Repeat


Ping Pong


Enviar comentario