Mostrando entradas con la etiqueta MDX - Desarrollo. Mostrar todas las entradas
Mostrando entradas con la etiqueta MDX - Desarrollo. Mostrar todas las entradas

7 de febrero de 2008

La Evolución Natural

Hace un tiempo les contaba sobre mi trabajo con Manager DirectX y la librería OdeDotNet que tanto me estaba dando dolores de cabeza. Bueno, estoy aquí para contarles en que quedó ese tema y que estoy haciendo ahora.

En esos dias en el que publiqué la nota anterior, me volví loco depurando el programa, haciendo pruebas, sacando allá, poniendo aca y realmente no llegué a buen puerto. Asi que de tantas pruebas y al ver que el foro oficial estaba lleno de spam pornográfico y que nadie posteaba algo serio desde hace años, decidí consultar al creador de la librería, Rob Loach.

El tema es que referenciando la dll, no desde su código fuente, la excepción no se lanzaba, en cambio de eso los objetos desaparecian en determinado momento y si uno consultaba los valores de x, y, z de las posiciones todas arrojaban el valor NaN. Pero algo me decía que el problema era básicamente el mismo, asi que le envié el siguiente mail preguntándole esto:

Dear Rob, My name is Ariel. Sorry for my english, but i´m from Argentina and here we speak Spanish. I am trying to use OdeDotNet, but I have a problem. Sometimes, the scene disappears without a clear reason and the values that sheds the XYZ of the bodys is NaN (I think that means NotANumber). Do you know something about this mistake? Can you help me? If you need I can give you more information about the source code I´ve done. Thank you. Looking forward to hearing from you, Yours Faithfully. Ariel Nader

En ese momento imaginé que iba a recibir una respuesta con contenido, bien fundamentada y dando en el clavo a la solución. Pero esta fue la respuesta:

Hey Ariel,Thanks for getting in contact with me. I've been wanting to visitArgentina, lots of nice places to see.Unfortunately you know more about OdeDotNet than I do. I just startedhacking it together thinking it might lead to something. Although itdid work, it was still really buggy and I had no practical uses of it...So I'm really sorry to leave you with no solution, but that's all Ihave. You might like to take a look at another solution like Bullet, orsome other C# physics library. Send a message on the Tao mailing listasking them what some alternatives are.Really sorry, and good luck!

No fue muy alentador que digamos el hecho de que el creador de la librería me diga que vaya buscando otra solución para el tema de la física. Pero finalmente le hice caso y largue todo a los caños.

Dias después de todo este episodio, me decidí por empezar a meterme con XNA. Hace dos meses que estoy leyendo un libro y la idea es aplicar los conocimientos adquiridos en MDX para poder tener un mayor entendimiento de la nueva plataforma. Pero eso es parte de otra historia... la historia sin fin (sale una tecnología nueva, comienzo a entenderla y luego es reemplazada por otra, y asi sucesivamente ... :P)

24 de noviembre de 2007

Implementando Física con ODE

Hola! Este es mi primer nota y la idea es contar lo que estoy haciendo en estos dias. Que bueno que voy a poder contestar solo con un link cuando mis amigos me pregunten por MSN “en que andas, loco?”. ;-)

En los últimos meses le he dedicado mucho tiempo al aprendizaje de Managed DirectX con C#. Hemos hecho mucho software de prueba con Ana que en otras entradas voy a contar. Pero hoy voy a aburrirlos con el tema que me tiene ocupado en este momento: La física de los objetos!!!

Como decía Einstein: “mi mujer tiene un buen físico” :-P, bueno, en este caso yo quiero tener un buen modelo de física para los juegos que hagamos(estaba harto de que los objetos 3D se atravesaran! :P). Por eso me decidí por implementar un engine de física no muy complejo y conocido. Ese motor es Open Dynamics Engine (http://www.ode.org/) en su sabor Managed: OdeDotNet (http://odedotnet.sourceforge.net/). La idea es ver como esta hecho el binding para .net de ODE y hacer algo parecido pero por ahora quiero saber como funciona OdeDotNet.

Para eso que mejor que armar una “demo tecnológica” (que grande que le queda ese nombre al programa que hice :P) de un bowling para ver como gira la bola y choca contra los pinos. Me quedo algo como esto:

El usuario puede apretar F1, F2, F3 o F4 para darle fuerza a la bola y así derribar los pinos (me imagino que se dieron cuenta cual era la idea :P). Con esto pude probar lo que se llama el Contact Joint que es la forma en que los objetos colisionan (si hay rebote, si hay rozamiento, etc) entre los pinos y la bola y entra la bola y el suelo, obvio.


Ahí tienen una captura de la bola chocando con los pinos. Si! Ya se, la bola debería ser pesada como para no levantarse al chocar con los pinos, pero decíselo al sr. ODE que no reacciona antes las diversas pruebas que hice. Estoy aprendiéndolo, aun no tengo claro varias cosas. Otra cosa que no pude hacer andar bien aun es el rozamiento. Asi que por ahora me armé una función que le va disminuyendo fuerza a la bola a medida que avanza apoyada en el suelo hasta dejarla en cero (funciona muy bien!!). Lo que si ya tengo bastante claro es el rebote y como hacer que la superficie sea blanda (tipo cama elástica).
Por supuesto, no todo es tan alentador, de vez en cuando OdeDotNet me tira un error feo feo que tiene que ver con el acceso a memoria. No tengo la mas mínima idea de que puede ser, pero no tengo dudas que lo voy a solucionar tarde o temprano.


Bueno, por ahora solo eso. Espero mas adelante poder poner un video de cómo hago una chuza!! (cuando funcione mejor todo) y asi dejarles el link para que se lo bajen y lo prueben.

Saludos!