Descargar texto

Transcripción

Descargar texto
Sistemas de simulación física y sistemas complejos :
Relevamiento de herramientas de software y hardware para la generación de
imagen lineal o interactiva
Autor: Tarcisio Lucas Pirotta
Proyecto de investigación “El Arte Generativo en las Artes Multimediales” – Director Carmelo Saitta
IUNA / Artes Multimediales – Yatay 843 – Ciudad Autónoma de Buenos Aires – tel : 4862.8209
[email protected]
Palabras clave
Simulación, física, software, librerías, partículas
Introducción
El presente trabajo es un relevamiento de herramientas de software, algoritmos y hardware,
desarrolladas recientemente para generación de sistemas de simulación física y sistemas complejos
aplicados a la generación de imagen, tanto para producciones lineales o interactivas en tiempo real.
Los algoritmos de colisión y simulación física han logrado tal nivel de optimización que permitieron su
aplicación en simulaciones de tiempo real no solo en el campo científico, comercial o del
entretenimiento (basicamente orientado al el desarrollo de video juegos), sino que tambien han
expandido sus posibilidades a computadoras personales permitiendo generar entre otras cosas
aplicaciones artísticas interactivas.
Desde entonces, la simulación física dejó de ser una tecnología reservada para grandes compañías
con un gran capital financiero. Ahora desarrolladores, académicos, programadores y estudiantes
pueden aprender y explorar con esta tecnología, en especial gracias a la aparición de varios Physics
engines1 a modo de librerías de código abierto, principal objeto de análisis de este trabajo.
1
Sistemas de simulación física y sistemas complejos
Comenzaremos haciendo referencia a algunos conceptos relevantes, como ser los sistemas
complejos y los sistemas de simulación.
Un Sistema Complejo está compuesto por varias partes interconectadas o entrelazadas cuyos
vínculos crean información adicional no visible antes por el observador. Como resultado de las
interacciones entre elementos, surgen propiedades nuevas que no pueden explicarse a partir de las
propiedades de los elementos aislados. Dichas propiedades se denominan propiedades emergentes.
Con respecto a los sistemas de simulación física podemos decir que son modelos que tratan de
simular, reproducir y representar el comportamiento que tienen los objetos en la realidad acuerdo a
las leyes físicas que nos rigen.
Las simulaciones se ejecutan de forma cíclica, calculando el estado de los cuerpos durante intervalos
discretos de tiempo. Los pasos de una simulación física interactiva son estos:
1- Calculo de sumatoria de fuerzas iniciales: gravedad, torques, y otras fuerzas inducidas por
controladores.
2- Con estas fuerzas se estiman las trayectorias que estos cuerpos realizarán en el siguiente intervalo
de tiempo integrando las ecuaciones de movimiento newtonianas.
1
motor físico en ingles, es una expresión empleada en informática para referirse a un software capaz de realizar
simulaciones de ciertos sistemas físicos como la dinámica del cuerpo rígido, el movimiento de un fluido y la elasticidad. Se
emplean sobre todo en la industria de los videojuegos.
1
3- Se calculan los punto de contacto entre las superficies de los modelos de colisión mediante
intersecciones geométricas. Se aplican algoritmos avanzados que permiten determinar el punto y el
vector de tangencia que separa dos objetos de superficie convexa. Los objetos cóncavos se
representan como un conjunto de objetos convexos.
Estos algoritmos de colisión detectan también la distancia y eje de separación entre cuerpos lo que
permite estimar el tiempo de colisión dadas las trayectorias estimadas en el paso anterior. Con el dato
de tiempo estimado de colisión cada cuerpo reajusta su posición evitando atravesar como un
fantasma un muro por efecto de un desplazamiento grande durante un intervalo de tiempo.
1.1
Antecedentes
1.1.1 Video juegos
El principal antecedente de estos sistemas de simulación son los video juegos. La Física en los
juegos ha sido fundamental desde los inicios de la industria en los años 70s. Desde el clásico Pong
hasta los complejos simuladores de vuelo usados por la Fuerza Aérea de los Estados Unidos. Sin
embargo, aunque la Física en los primeros juegos cumplía un papel fundamental, su aplicación fue
muy limitada debido a la falta de hardware capaz de realizar extensos cálculos numéricos en tiempo
real.
Por lo general la gran mayoría de juegos de arcade limitaban su funcionamiento a simulaciones
discretas de autómatas finitos simplificados. La secuencia de ejecución de las acciones de los
agentes inteligentes se realizaban por turnos, y el dinamismo era casi nulo.
Algunos Juegos como Pacman y Mario Bros podían ofrecer la ilusión de dinamismo implementando
simples rutinas de movimiento lineal.
En este tipo de juegos los carros son representados internamente en el programa como simples
celdas que se desplazan en una gran matriz; esta matriz se visualizaba en el juego como la pista
prediseñada que el usuario tendría que atravesar evitando los obstáculos (celdas ocupadas). En la
pantalla estas celdas cobraban vida como imágenes pinceladas del escenario. Para hallar colisiones
entre el carro del jugador y el escenario se verificaba de forma discreta si el carro se encuentra en la
celda ocupada por otro carro o por un árbol. Aquí, la física de newton nada tenía que ver: la
aceleración se basaba en la rapidez a la cual se desplaza la celda del carro entre las filas de la
matriz, pero ante los ojos del jugador daba la ilusión de que se desplazaba a gran velocidad por una
autopista en las playas de Miami.
Solo hasta el final de los 80s una serie de juegos de carros de PC revolucionaron la simulación fisica
en tiempo real: La serie Test Drive, y el titulo más famoso de esta fué Stunt Racer para MS-DOS y
Amiga. Solo hasta la aparición de este juego las ecuaciones de Newton al fin salieron la luz a traves
del monitor del computador. Este juego ha dado las bases para otros titulos de consolas como Need
For Speed, Nascar y Daytona Racer.
Posteriormente se establecieron las bases del algoritmo fundamental de toda simulación física, el cual
consiste en lo siguientes principios:
−
Los objetos están compuestos de un Modelo de Colisiones el cual representa la superficie
geométrica de este, y el Modelo de Cuerpo Rígido el cual define las propiedades dinámicas
de este tales como posición, orientación , velocidad, aceleración, masa y distribución de
inercia (usado en la dinámica de rotaciones).
−
Los objetos pueden interactuar entre si aplicándose fuerzas entre ellos, ya sea por colisiones
elásticas o por estás enlazados mediante alguna articulación (bisagras, eslabones, resortes).
1.1.2 Arte
Podríamos considerar a Karl Sims ( http://www.karlsims.com
) como principal antecedente del
desarrollo de estas técnicas de simulación aplicadas al campo artístico, en este caso aplicado a la
generación efectos visuales. Este artista digital e investigador científico desarrolló una serie de
trabajos en el campo de la simulación de sistemas complejos y modelos evolutivos. Como resultado
2
de sus investigaciones fundo GenArts, una importante empresa de software dedicada a la creación de
efectos visuales.
Entre sus trabajos interactivos podemos mencionar a Galápagos(1997) y Genetic Images (1993) y
entre sus desarrollos de animación computada lineal no interactiva se destacan Evolved Virtual
Creatures (1994) y Liquid Selves (1992) y Panspermia (1990).
figura 1: Evolved Virtual Creatures y Panspermia | http://www.karlsims.com
Golan Levin ( http://www.flong.com/ )es una artista, diseñador y compositor interesado en la creación
de dispositivos y experiencias que exploren nuevos modos de expresión audiovisual. Su trabajo se
enfoca en el diseño de sistemas para la creación de performances tanto de sonido como imagen.
Como resultado de esto surge entre otros proyectos, Messa di Voce, una serie performances
audiovisuales en las cuales la voz, los gritos y canciones producidas por vocalistas son
“materializadas” en tiempo real por aplicaciones de visualización y simulación interactiva
especialmente desarrolladas para la síntesis de la imagen a base de sistemas complejos.
Figura 2:Izquierda Fluid. Derecha Bounce (Jaap's Solo) | www.tmema.org/messa/messa.html
Por ultimo podemos citar a Mine Control ( www.mine-control.com ), un grupo de artistas que
empleando conocimientos adquiridos en la industria del video juego desarrolla sus propias
herramientas para producir instalaciones interactivas e introducir a los participantes en novedosas
técnicas de interacción que comprometen íntegramente cuerpo del usuario.
Como ejemplo de este tipo de dispositivos, es oportuno hacer referencia a "Mariposa" o “Sand”, dos
instalaciones que ofrecen al usuario la posibilidad de interactuar con diversos elementos virtuales a
través de la propia sombra que proyecta el cuerpo sobre la pantalla.
3
Figura 3 :Izquierda Sand. Derecha Mariposa | www.mine-control.com
1.2
Librerías simulación física de entornos en 2D
Estas librerías están destinadas al la generación de aplicaciones en 2D especialmente utilizadas en
entornos de programación como Processing y Adobe Flash.
1.2.1 Box2D
ttp://box2d.org/
Box2D es un motor open source de simulación física en 2D escrito en C++ por Erin Catto y que ha
sido utilizado en conocidos juegos como el Crayon Physics Deluxe, Rolando, Fantastic Contraption,
Incredibots, Angry Birds, Transformice y Stripe physics.
El motor se originó como parte de un tutorial de simulación física para la Game Developer Conference
en marzo del 2006 y es es compatible para plataformas Nintendo DS, Wii, Android y iPhone como
también en la mayoría de los sistemas operativos. El motor ha sido adaptado en varias librerías para
otros entornos y lenguajes de programación, como Java, Adobe Flash y Processing.
El sistema de detección y resolución de partículas consta de tres partes: un barrido incremental y
corte de fase amplia, una unidad de detección de colisiones continua y generador de contacto en
tiempo continuo. Estos algoritmos permiten eficientes simulaciones rápidas y con grandes pilas sin
perder colisiones o causar inestabilidad.
Dentro de las capacidades del motor, podemos mencionar las siguientes:
Colisiones:
- detección continua de colisiones
- detección simultánea de múltiples contactos
- círculos y polígonos convexos
Física:
- gravedad
- contacto, fricción, restitución
- corrección de posición desacoplada
- precisión de fuerzas de reacción e impulso
Uno de los principales conceptos de Box2D es el de mundo (world).El mundo definido en Box2D
maneja todo dentro de la simulación definida. Este almacena un listado de todos los objetos
presentes, así como todos sus puntos de conexión.
Al ser creado, el mundo requiere de 3 parametros:
4
- AABB (“axis-aligned bounding box”), es decir una “caja” que define los bordes del universo a
simular. Estoes importante, porque Box2D ignora cualquier cosas existente fuera de esa “caja”
- Gravedad, se debe definir un vector de gravedad, su fuerza y dirección. No tiene porque ser fija,
puede ser modificada en cualquier momento en que el programa este siendo ejecutado.
- DoSleep, este es un argumento boleano que por lo general se define siempre como verdadero,
indica al sistema que los objetos pueden “dormir” (sleep) cuando se les indica que “descansen” (rest).
Conociendo estos tres conceptos mencionados, es posible crear un mundo Box2D.
Podemos mencionar como ejemplo de la aplicación de esta librería los siguientes proyectos:
1.2.1.1
TouchPhysics
http://www.info-design.net/multitouch/
TouchPhysics es un prototipo de software educativo para el aprendizaje de leyes físicas
implementado sobre una mesa tangible creado por Andrea Müller y Jürgen Röhm de la Stuttgart
Media University (HdM), Stuttgart , en Alemania.
La aplicación fue desarrollado para una pantalla Evoluce-ONE 2 integrada con GestureWorks3 en
plataforma Flash, empleando ActionScript3 y el motor físico Box2D.
Figura 4: Touch Physics |
1.2.1.2
http://www.info-design.net/multitouch/
Crayon Physics
http://www.crayonphysics.com/
Crayon Physics es un video juego diseñado por Petri Purho en 2008, y emplea como motor físico a
Box2D. El juego es un atecedente importante en la simulación fisica de distintos comportamientos
como la gravedad, masa y energía kinetica. Estos principios son parte esencial del juego, ya que el
mismo consiste en dibujar una serie de elementos que, según su comportamiento físico y la acción
que el usuario realice sobre los mismos, permitan poner en movimiento una pelota y moverla desde
su posición original hasta un punto de llegada para poder cumplir con la meta de la escena.
2
Evoluce es una mesa sensible multi touch con función háptica y Full HD, con una resolución de 1920×1080 píxeles, el
dispositivo de la pantalla permite reconocer manos, dedos y lápices como interfaces de control. http://evoluce.com
3
GestureWorks es una librería de código abierto para captación de gestos orientada a la creación de aplicaciones para
pantallas táctiles con más de 200 gestos identificados. Este motor se integra fácilmente en plataformas como Flash o Flex.
Es compatible con el protocolo TUIO permitiendo diversos modos de colectividad. www.gestureworks.com/
5
Figura 5: Crayon Physics
1.2.1.3
|
http://www.crayonphysics.com/
Limbo
http://limbogame.org/
Limbo es un jugo de platformas de origen danes, se lanzó en julio del 2010 de manera exclusiva para
Xbox Live Arcade, y posteriormente para PlayStation Network and Microsoft Windows. Es una
aplicación de recorrido en 2D que incorpora un sistema físico diseñado con Box2D, que maneja los
objetos del entorno y el personaje del jugador. Siguiendo una línea similar al Crayon Physics, en
Limbo el jugador debe guiar al personaje para que atraviese diferentes obstaculos y debe encontrar
soluciones a diferentes problemas para poder continuar su recorrido. El juego se presenta en forma
monocromatica en blanco y negro, utilizando luces y grano de pelicula asi tambien como minimos
sonidos de ambiente paa crea una atmosfera densa, cercana al horror.Es considerado un ejemplo del
video juego como arte.
Figura 6: Capturas de Limbo Game |
http://limbogame.org/media/
La librería Box2D cuenta con varias versiones adaptadas para diferentes entornos, especialmente
Processing, dentro de las cuales podemos mencionar las siguientes:
1.2.1.4
JBox2D
http://www.jbox2d.org/
Es una versión para Java del motor Box2D creado por Erin Catto. El proyecto esta encabezado por
Daniel Murphy, alis toucansam, y fue iniciado a finales de 2007 por quixote_arg ( www.jengibre.com.ar ) y ewjordan ( http://www.ewjordan.com/ ).
6
1.2.1.5
Pbox2d
https://github.com/shiffman/PBox2D
Daniel Shiffman (http://www.shiffman.net/) observo que algunas librerias desarolladas para
processing, como Jbox2D por ejemplo, tenian un excelente renidmiento pero al instalarla el usuario se
encontraba con una gran colección de archios java, que no eran ciertamente muy accesibles para los
programadores de processing. Su objetivo fue crear una serie de ejemplos simples que, aunque no
son tan variados como los que ofrece jbox2d.org, facilitan bastante el abordaje a Box2D dentro de
processing.
De esta manera desarrolló Pbox2D, una librería para Processing que básicamente lo que realiza es
definir una serie de parámetros para creación del mundo (world) y ofrece un facil acceso a algunas
funciones que son llamadas constrantemente, sin embargo requiere un conocimiento previo de los
objetos de Jbox2D.
Figura 7: Proyectos desarrollados por Daniel Shiffman | http://www.shiffman.net/
1.2.1.6
Box2DFlash
http://www.box2dflash.org/
Librería open source creada por Boris (http://personal.boristhebrave.com/ ) en base del motor Box2d
anteriormente mencionado, que permite ser ejecutado dentro del entorno de Flash, podríamos
definirlo como una versión en actionScript3 de Box2d.
1.2.1.7
Fisica
http://www.ricardmarxer.com/fisica/
Librería creada por Ricard Marxer para el entorno de Processing a inicios del 2011. Es un simple
wrapper4 de Jbox2D que intenta hacer mucho mas fácil la creación de modelos físicos utilizando
objetos del motor dentro del mismo Processing
Podemos mencionar como ejemplo de esta librería una serie de atractores realizados por el autor de
la librería, donde trata de explotar el potencial intuitivo de las interacciones mas básicas y que logran
producir a partir de procesos simples resultados interesantes y sorprendentes.
4
Envoltura. En programación se denomina de esta forma a un programa que controla el acceso a un segundo programa.
Facilita el acceso y la inclusión de librerías y motores en diversas plataformas.
7
Figura 8: Serie de atractorres |
1.2.1.8
http://www.ricardmarxer.com/mechanical_attractors/
BoxWrap2D
http://jbox2d.nfshost.com/processing/
Es un un proyecto bastante reciente que se encuentra en una versión pre-alpha, desarrollado por
ewjordan, BoxWrap2D es una aplicación que corre por encima de Jbox2D, permitiendo su integración
con Processing.
1.2.2 APE
http://www.cove.org/ape/
APE (Actionscript Physics Engine) es un motor de simulación física 2D gratuito de código abierto
escrito en AS3 para Flash y Flex, desarrollado bajo la licencia de MIT por Alec Cove. Presenta las
siguientes caracteristicas:
Partículas circulares:
- fijas o no fijas
- de masa , elasticidad y fricción variable
Partículas rectangulares:
- rotación
- fijas o no fijas
- de masa , elasticidad y fricción variable
Partículas toroidales:
- tracción y velocidad angular
- de masa , elasticidad y fricción variable
Resortes:
- limitaciones
- colisionables o no colisionables
figura 9: Demos | http://www.cove.org/ape/demo1.htm
8
1.2.3 Fisix Engine
www.fisixengine.com/
Fisix Engine es un motor de simulación física en 2D diseñado para Adobe Flash, que utiliza
algoritmos Verlet5. Esta escrito completamente en AS3 ( ActionScript3 ) para poder ser utilizado en en
flash player mejorando las capacidades del CPU. Aunque la plataforma de Flash es mas lenta
comparada con otras como c/c++, or java, este motor permite realizar interesantes aplicaciones 2D
con una óptima simulación de partículas y cuerpos rígidos en tiempo real.
Como se menciono anteriormente , este motor utiliza métodos del algoritmo Verlet debido a que son
métodos rápidos y estables. La estructura de la librería del motor es orientada a objetos, con lo cual
cada parte funciona como un objeto independiente con tareas específicas.
Figuar 10: Capturas de “Mona the Ragdoll” y “Bike Game” | www.fisixengine.com/
1.2.4 FOAM
http://code.google.com/p/foam-as3/
FOAM es un motor físico 2D de cuerpos rígidos escrito en ActionScript 3.0. Fue pensado como una
referencia estructural y matemática para desarrolladores interesados en simulaciones físicas en el
área de los video juegos.
Figura 11: Demos |
5
http://drawlogic.com/2007/11/07/as3-foam-2d-physics-engine/
Método más ampliamente usado en los programas de dinámica molecular. Este algoritmo usa las posiciones y
aceleraciones al tiempo t, y las posiciones del paso previo, r(t-δt) para calcular las nuevas posiciones en t+δt, r(t+δt).
9
1.3
Librerías simulación física de entornos en 3D
1.3.1 Bullet Physics
http://www.bulletphysics.com
Bullet Physics es una importante librería de código abierto para la detección de colisiones y
simulación física de cuerpos rígidos en 3D que esta siendo utilizada por las principales empresas en
el área de los video juegos. Recientemente el estudio de programación Disney Avalanche ha lanzado
al mercado su juego Toy Story 3 para las plataformas PlayStation 3, XBox 360 y Wii, empleando para
su desarrollo Bullet physics. La librería se ha probado a si misma en otros emprendimientos de la
industria cinematográfica como 2012 (Sony Pictures ), Megamind y Shrek ( Dreamworks ).
Figura 12: Cuadro de la pelicula Megamind |
http://wikysdiary.blogspot.com/2010/12/megamind.html
1.3.2 Momentum
http://www.exocortex.com/simulation/momentum
Momentum es una librería desarrollada por Exocortex Technologies 6, escrita y diseñada por Helge
Mathee, fue pensada desde su concepción para generar resultados en tiempo real y al mismo tiempo
mantener la flexibilidad, el control y la solidez en la simulación que necesita el artista o usuario. La
herramienta esta basada en otra librería que ha demostrado gran solidez, la ya mencionada Bullet
Physics.
Provee soporte para los siguientes fenómenos físicos y sus interacciones: Cuerpos rígidos y blandos,
ropa, cuerdas, restricciones y deformaciones para Diagramas de Confiabilidad de Bloques (RBD),
intereacciones, filtrado de colisiones y plasticidad.
6
Exocortex Technologies es una compañía tecnológica que se especializa en el desarrollo de avanzado de software en las
áreas de visualización y simulación de imagen en 3D orientadas a la creación de efectos visuales para contenidos de cine,
video juegos y aplicaciones artísticas basados en C#, C++ y .NET.
1
Figura 13: Ejemplos de simulaciones |
http://www.exocortex.com/simulation/momentum
1.3.3 Newton
http://www.newtondynamics.com
Desarrollada por ulio Jerez y Alain Suero, Newton Game Dynamics es una libreía de código abierto
para la simulación de entornos físicos en tiempo real. La librería ofrece manejo de escena, detección
de colisiones y conductas dinámicas. El motor que posee implementa algoritmos deterministas que no
están basados en los tradicionales métodos interactivos o LCP ( Link Control Protocol ) , pero que sin
embargo logra una estabilidad y velocidad similares a las obtenidas si se utilizaran los métodos
mencionados. Actualmente se encuentra disponible para Windows, Linux, MAC (incluyendo iPhone y
iPod touch).
Entre los proyectos desarrollados con esta librería, podeoms mencionar los siguientes video juegos:
Disc Drivin (Pixelocity Software) y 10 Pin Shuffle (Digital Smoke) ambos para iphone, Titanic - Der
Tauchfahrt Simulator (TML-Studios) y Barrel Mania.
figura 14: Disc Drivin | http://www.pixelocitysoftware.com/
1.3.4 Solid
http://www.dtecta.com
SOLID es una librería para la detección de colisiones de objetos geométricos en en 3D que permite
realizar teste de proximidad con diferentes tipos de formas, incluyendo: mallas triangulares
deformables, cajas, elipses, y poliedros convexos. La herramienta es especialmente útil para la
detección de colisiones entre objetos que e mueven lentamente en el tiempo. El movimiento de los
objetos es controlado por la aplicación cliente y no son afectados por Solid. También se puede
emplear para la simulación físicas, aunque no se considera un motor físico propiamente, delega en
otras librerías la aplicación de las leyes físicas.
El empleo de la herramienta es ideal en las áreas de desarrollo de juegos , realidad virtual e
investigación.
1
1.3.5 PhysX
http://physxinfo.com/
PhysX es un motor de simulación física que funciona como aplicación intermedia o "middleware"
diseñado para llevar a cabo cálculos físicos muy complejos. Conocido anteriormente como la SDK de
NovodeX, fue originalmente diseñado por AGEIA y actualmente desarrollado por Nvidia e integrado
en sus placas gráficas y en consolas como la Playstation, por lo cual también podemos considerarlo
como un hardware. Estas placas integradas con PhysX producen una aceleración en el proceso,
liberan a la CPU de tareas propias del renderizado de la imagen, proporcionando imágenes más
fluidas.
Los motores físicos de middleware permiten a los desarrolladores de animaciones y video juegos
abstraerse durante el desarrollo, ya que la herramienta proporciona funciones especializadas en
simulaciones físicas complejas, lo cual da como resultado una alta productividad en la escritura de
código. Actualmente se encuentra disponible para desarrolladores en plug-in para Autodesk 3ds Max
y Maya
figura 15: pantallas de los plug-in para 3Ds Max y Maya | http://physxinfo.com/
1.3.6 Simulink
http://www.mathworks.com/products/simulink/
Simulink motor de simulación de alto nivel que funciona sobre el entorno de programación Matlab 7 .
Podríamos definirlo como una herramienta de simulación de modelos o sistemas, con cierto grado de
abstracción de los fenómenos físicos involucrados en los mismos. Se hace hincapié en el análisis de
sucesos, a través de la concepción de sistemas (cajas negras que realizan alguna operación).
Se emplea arduamente en Ingeniería Electrónica en temas relacionados con el procesamiento digital
de señales (DSP), involucrando temas específicos de ingeniería biomédica, telecomunicaciones,
entre otros. También es muy utilizado para la stintesis y procesamiento de imagen, video, y en
Ingeniería de Control y Robótica.
Una aplicación básica de simulink combinado con arruino, una cámara y motores servo permite
reproducir un modelo físico conocido como “Ball on Plate” (bola en plato) donde una plataforma
robótica hace mover una pelota pero manteniéndola siempre dentro de la misma, calculando los
ángulos de inclinación y la duración de los movimientos para que la pelota no caiga fuera de la
plataforma.
7
MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemático de alto nivel que ofrece
un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M) y que permite realizar tareas
y cálculos mas rápidamente en relación a otros lenguajes como el C, C++ o Fortran. Está disponible para las plataformas
Unix, Windows y Apple Mac OS X. Entre sus prestaciones básicas se hallan: la manipulación de matrices, la
representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la
comunicación con programas en otros lenguajes y con otros dispositivos hardware.
1
Figura 16: Ball on plate | http://www.youtube.com/watch?v=JwS0zQOs_oA
1.3.7 Sapphire Visual Effects
http://www.genarts.com/
El motor Sapphire es desarrollado por la empresa GenArts, fundada por el anteriormente mencionado
Karl Sims.
Es un software utilizado mundialmente por los mejores artistas y creadores para diseñar efectos
realmente sorprendentes. Posee un plug-in llamado ParticleIllusion especialmente diseñado para el
trabajo con simulacion de particulas y sistemas complejos.
Figura 17: Visa del antes y despues de una escena aplicando Sapphire | http://www.genarts.com/
1.4
Hardware
1.4.1 Cámara Kinect
http://openkinect.org/
El lanzamiento de Kinect en noviembre del 2010 marco un hito importante en la historia de los
videojuegos y aplicaciones interactivas.
Kinect para Xbox 360, o simplemente Kinect (originalmente conocido por el nombre en clave «Project
Natal»), es un dispositivo, cuyo elemento central es la propia cámara Kinect, creado por Alex Kipman,
desarrollado por Microsoft para la videoconsola Xbox 360. Lo novedoso del dispositivo es que permite
a los usuarios controlar e interactuar con la consola sin necesidad de tener contacto físico con un
controlador de videojuegos tradicional, mediante una interfaz natural de usuario que reconoce gestos,
comandos de voz, objetos e imágenes.
1
Resulta interesante analizar este dispositivo ya que da total libertad al usuario y es la combinación
ideal para varias de las herramientas de simulación anteriormente analizadas, ya que permite un
control intuitivo y real, es un complemento para que la simulación no solo esté presente en el
contenido de la aplicación, sino tambien su control e interactividad física real.
Lo más novedoso de la cámara Kinect es que incorpora unos sensores 3D, unos leds infrarojos que
proyectan una trama, que al reflejarse en algun objeto o usuario, reconstruyen una matriz
tridemencional, lo que le permite al dispositivo tener un registro en profundidad de los objetos,
ademas de una captacion optica en 2D.
Figura 18: Cámara kinect. Puntos proyectados por los leds infrarrojos para la captación en 3D
http://www.xbox.com/es-es/kinect
El dispositivo tuvo como objetivo primordial aumentar el uso de la Xbox 360 y competir con los
sistemas Wiimote y PlayStation Move, que también controlan el movimiento para las consolas Wii y
PlayStation, respectivamente. Sin embargo rápidamente las potencialidades de la cámara fueron
empleadas para el desarrollo de otras aplicaciones, utilizando la cámara de manera independiente en
en diversos sistemas operativos y plataformas, como un dispositivo que excede a la consola Xbox.
OpenKinect ies una comunidad abierta de desarrolladores interesada en utilizar la asombrosa cámara
Kinect en computadoras y otros dispositivos, desarrollando librerías de código abierto que permiten a
las Kinect ser usada con Windows, Linux y Mac. La tendencia impuesta por esta comunidad de
desarrolladores y programadores ha dado origen a lo que se conoce como Kinect hacking, del cual
han surgido varias librerias y aplicaciones. De estos desarrollos podemos mencionar las librerías de
código abierto para Processing openkinect desarrollada por Daniel Shiffman y dLibs de Thomas
Diewald, como así tambien primeSense, un emprendimiento alternativo a la kinect.
Como ejemplos de aplicaciones orientadas al area de la creación artística cabe mencionar el trabajo
Kinect Graffiti&trade del artista frances Jean-Christophe Naour ( jcnaour.com/ ).
Kinect Graffiti es una herramienta de graffiti digital que utiliza la cámara "Microsoft Kinect". La idea es
utilizar la cámara Kinect para registras el movimiento que genera el graffiti. Visualizando el cuerpo y
dibujando desde diferentes ángulos en tiempo real, comprendiendo el espacio que rodea al sujeto,
deteniendo el tiempo, etc... Kinect Graffiti es una herramienta creada con bibliotecas openGL,
SimpleOpenNI, openNI y primeSense.
1
Figura 19: Kinect Graffiti&trade | http://jcnaour.com/#Kinect-Graffiti-
Otro ejemplo es Catalina, un video clip creado por Moullinex. Para la realización de este video se
utilizo la librería de Daniel Shiffman. Se realizaron algunas modificaciones a la misma para poder
obtener la data 3D y colocarla dentro del editor de imagen, en este caso el Cinema 4D y After Effects.
Figura 20: Catalina | http://www.creativeapplications.net/processing/moullinex-catalina-processingkinect/
1.5
Conclusión
Primeramente debemos aclarar que inicialmente la idea de este trabajo era ampliar el relevamiento de
estas herramientas al ámbito del sonido. Si bien el empleo de la simulación física para control de
movimientos e interacciones entre objetos en un entorno 3D se ha vuelto algo casi común en relación
a la producción de imagen, esta idea no se ha extendido en un sentido general al ámbito del sonido.
Por lo general los componentes de un sistema sonoro dinámico comprenden sonidos pre-grabados
que son ejecutados en respuesta a determinados eventos.
En el proceso de elaboración de este trabajo no se han encontrado librerías o aplicaciones que
permitan emplear los modelos de simulación de una manera análoga a las librerías relevadas y
anteriormente descritas para la producción de imágenes.
Finalmente luego del recorrido realizado por las diferentes herramientas de software y hardware para
la simulación física y de sistemas complejos, es posible concluir en primer lugar que el avance
tecnológico de los últimos años, en especial aquellos provenientes de la industria del entretenimiento,
han favorecido el desarrollo de diversas herramientas que actualmente se encuentran fácilmente
disponibles para desarrolladores y artistas en una serie de librerías, la gran mayoría de código abierto
gratuito. Estás aplicaciones no requieren el elevado nivel de conocimientos en programación que
requeriría la generación completa de algoritmos para la creación de los modelos de simulación, sino
que brindan una serie de modelos básicos ya resueltos, como quien dice “listo para usar”.
Como segunda reflexión, podemos indicar que la implementación de estas herramientas en el
proceso de creación artística es un aporte positivo, ya que pone a disposición de los artista un
recurso más de expresión y comunicación, donde la tecnología contribuye en la creación del
contenido y del enriquecimiento estético del discurso.
1.6
Referencias bibliográficas
[1] http://processing.org/
[2] http://www.wikipedia.org/
1
[3] http://web.mit.edu/
[4] http://elybob.wordpress.com/2011/05/21/physics-engines/
[5] John Maeda (2004) “Creative Code: Aesthetics + Computation”,Ed. Thames & Hudson
[6] Kenny Erleben/Sporring “Physics Based Animation" , Ed. Charlers River Media.
[7] Christer Ericson "Real-time collision detection" Ed. Morgan Kaufmann.
[8] Gino van den Bergen "Collision Detection in 3D environments", Ed. Elsevier.
1