Dixion

Este proyecto consiste en la adaptación a C# del motor dinámico ODE (Open Dynamics Engine). Realmente la adapatación ha sido desde Java a C# a través del proyecto ode4j, que es mucho más fácil que portar el código desde C-C++ ¡Muchísimo más facil!.

Dixion (CsODE) es código abierto bajo la licencia GNU LGPL versión 2.1.

http://i1378.photobucket.com/albums/ah113/descargator09/floppy4_zps1f0hq27z.gif

Dixion v11.XX (Fecha de publicación: XX de XX de 2011)

CsODE v11.03 (Fecha de publicación: 08 de Marzo de 2011)

¡La adaptación (port) a C# del proyecto Od4j ha terminado!. He portado todo excepto lo referente a mallas de triángulos (trimesh), el código se basa en la librería "gimpact" y no me ha gustado nada, creo que el código aún no se ha portado bien a Java y por tanto no funciona muy bien. No obstante si alguien quiere continuar con el portado (port) aquí dejo el trabajo realizado CsODE-trimesh.

He eliminado una cantidad enorme de interfaces que realmente no servían para nada y he agrupado clases en espacios de nombres relacionados. También he añadido unas demos que he encontrado en este sitio web demura y las he adaptado para comprobar su funcionamiento, todo parece funcionar bien.

CsODE v11.02 (Fecha de publicación: 22 de Febrero de 2011)

¡Atención! Esta es una versión en desarrollo, aunque las demos funcionan, aún queda mucho por hacer. CsODE es el proyecto previo a Dixion, CsODE es solo la adaptación (port) del proyecto Ode4j (escrito en Java) a C#. CsODE está parcialmente orientado a objetos, Dixion lo estará totalmente y tendrá una API diferente de la API de ODE (Open Dynamics Engine), aunque será compatible.

Conclusiones de esta adaptación:

http://i1378.photobucket.com/albums/ah113/descargator09/floppy4_zps1f0hq27z.gif
    • Ode4j implementa un sistema de destrucción de objetos (métodos destroy() y DESTRUCTOR()), que supongo incorpora desde la implementación original de ODE, que no está implementado totalmente en CsODE. Aún no tengo claro si es necesario implementarlo, puede que el trabajo de destrucción de ODE no sea necesario en CsODE porque C# implementa un recolector de basura.

    • La adaptación (port) de DrawStuff (sub-sistema gráfico de ODE) en el proyecto Ode4j como su propio autor indica es terriblemente lenta y por lo tanto la adaptación en CsODE es igual de lenta. Esto es algo que no me preocupa porque el objetivo final es integrar Dixion junto a Trixion3D y en teoría el problema de la lentitud de los gráficos debería solucionarse.

    • CsODE en su implementación (para mi gusto) hace un uso demasiado intensivo de las interfaces, en la medida de lo posible, intentaré al implementar Dixion simplificar la jerarquía de clases para evitar usar tantas interfaces.

    • El sistema de monitoreo de errores que implementa Ode4j no se ha implementado en CsODE, me he limitado a insertar "throw new Exception()" donde ha sido necesario.

    • No he portado todas las demos y pruebas que incluye el proyecto Ode4j.

Trabajo futuro:

Desde aquí animo a continuar portando el resto de demos y pruebas, el proceso que recomiendo es instalar NetBeans e integrar el proyecto Ode4j en el (puedo enviar un archivo comprimido con el proyecto Ode4j preparado para netbeans si es necesario) y simplemente ir adaptando el código que se vaya necesitando método a método. Intentar portar grandes cantidades de código con el método de copiar y pegar es una locura ya que aparecen grandes cantidades de errores.