Motores de Fisica

Hay varios motores de física para su uso en OpenSimulator. Actualmente, son "basicphysics", "OpenDynamicsEngine", "RealPhysX" & "BulletX" (versión modificada). El plugin "basicphysics" es el valor por defecto y se puede ver en el archivo  OpenSim.ini .

-physics=OpenDynamicsEngine - para ejecutar el OpenDynamicsEngine (ODE) en lugar de basicphysics, o cambiar el parámetro correspondiente en  OpenSim.ini .
 * Al arrancar OpenSimulator en Windows o Linux, se puede añadir

-physics=RealPhysX si se tiene las DLLs que no están incluídas en el paquete de OpenSimulator debido a las limitaciones de la licencia.
 * Al arrancar OpenSimulator en Windows, se puede añadir

-physics=modified_BulletX para ejecutar una versión modificada de la motor de Física BulletX alias BulletX Modificado. Véase la siguiente información acerca de los detalles y el progreso.
 * Al arrancar OpenSimulator en Windows o Linux, se puede añadir

Para concluir, basicphysics y OpenDynamicsEngine ambos son apropiados para Linux y además, RealPhysX es adecuadopara Windows si se tienen sus DLLs. BulletX Modificado debería funcionar bien para Windows y Linux (no el original BulletX).

A partir del 10/9/07, ODE ha sido sometido a un testeo bastante importante. Soporta colisiones básicas con primitivas con forma de cubo, así como primitivas con esta forma que tenga con agujeros con forma de cubo. BulletX soporta primitivas con forma de cubo y parece ser estable; pero ha sido poco provado y se sabe que tiene problemas con la fricción (se patinan en torno a las superficies sin nivel). Physx no se ha actualizado en mucho tiempo.

Compilar ODE desde el código fuente (Linux)
Si uno quiere compilar el OpenDynamicsEngine (ODE) por su cuenta, se pueden obtener las últimas el código fuente en las librerías OpenSimulator (Ver. 0,9 como de Octubre'07) en el SVN: http://opensimulator.org/svn/opensim-libs Cambiar el directorio de ode y compilar de la siguiente manera:

./configure -- enable-shared make -k

(Se solía sugerir --with-trimesh=gimpact, pero ya no. Desde ODE 0,9, se prefiere Opcode porque soporta mejor la librería de colisiones)

Esto debería crear los archivos libode.a y lidode.so en el archivo subdirectorio src/ode . Copie estos dos archivos al directorio de opensim bin</tt> (después de haber hecho una copia de los archivos originales). [-er, No creo que el archivo .a sea necesario de poner en el bin!]

Compilar ODE desde el código fuente (Windows)
La distribución estándar de ode.org tiene una compilación, en el cual se encuentran subdirectorios para diferentes compiladores de Microsoft.

Los archivos .sln estándars (por lo menos para VS2005) compilan ode.dll tal que dependen de al menos dos runtime dlls de Microsoft. Esto puede causar que falle y algo de confusión, así que hacer lo siguiente: Pulsar con el botón derecho en ode en el Explorador de Soluciones, y seleccione Propiedades. Bajo Configuración Propiedades/General, cambiar "Usar MFC" por "Usar MFC en una librería estática".

Luego compilar como de costumbre.

ODE Plugin en OpenSimulator
Actualmente, el plugin de ODE suporta colisiones Avatar vs Avatar, Avatar vs Prim y Prim vs Prim. Avies y prims (activos) físicos están soportados.

El comportamiento de las colisiones es actualmente:
 * Para avies, una cápsula de .2 m de radio y una longitud de .9 m y 50Kg de masa


 * Para la posición, como un recuadro con una masa de una Caja de = 0.5Kg / L = 0.5Kg/dm3 = 500Kg/m3.


 * Los prims están separados en espacios de ~30m con su propio cubo de contorno para accelerar el cálculo de proximidad.


 * La fricción está reducida en el avatar con las colisiones objeto/terreno cuando este se mueve.

Lista de tareas a hacer(próximos cambios)

 * Afinar todas las colisiones
 * Introducir más tipos de forma de Prim a parte del cubo utilizando el generador tri-mesh Meshmerizer.
 * Corregir errores
 * Implementar agarrar y tirar
 * Linksets
 * Vehículos

Errores conocidos

 * Colisiones con el terreno: Algunos terrenos pueden causar al avatar que rebote en el aire sin ningún aviso
 * Terreno desalineados: El terreno visible está levemente desalineado con el mapa de altura. Esto hace al avatar aparecer como estando en un espacio vacío y provoca que éste aparezca con las rodillas dobladas.
 * Los Linksets no funcionan: Hacer un linkset físico, deja el geometrías de sus prims hijos donde se encuentran... incluso si el prim padre se mueve.
 * Arrastrar es tratado como 'moverse':arrastrar un prim dentro de otro hace que se interpenetren y la fuerzas restaurativas los golpean enviando el prim fuera de órbita.

Cambios Recientes

 * La altura del Avatar altura se obtiene traducido a ODE
 * 30m Espacio separación por prim.

BulletX Plugin en OpenSim: BulletX Modificado
BulletX Plugin en OpenSimulator se ejecuta con una versión modificada de BulletX. La versión original de BulletX se ejecuta y tiene dependencias de código con MS.XNA. La versión original BulletX se puede encontrar en XNADev.ru. La versión modificada elimina la totalidad de las dependencias de código con MS.XNA. Por otra parte, es necesario trabajar con otra librería. Esta biblioteca se basa en Mono.Xna y se llama MonoCompactMaths. BulletX modificado y MonoXnaCompactMaths pueden encontrarse en el svn de OpenSimulator. Debido a su independencia código de MS.XNA, BulletX modificado se puede ejecutar tanto en MS.Net como Mono y, por lo tanto, ya sea Windows o Linux (obviamente puede combinar Windows + Mono)

Actualmente, el plugin de BulletX soporta colisiones Avatar vs Avatar, Avatar vs Prim y Prim vs Prim. El movimiento de Prims y avies está soportado. Por cierto, las colisiones necesitan afinarse. El comportamiento de las colisiones es el siguiente:
 * Para avies, y como esfera de 1m de radio y 50Kg de masa
 * Para los prims, como un cubo de del tamaño del tamaño del prim y una masa que depende de su tamaño. La masa es la masa de un cubo lleno de agua de densidad = 1Kg / L = 1Kg/dm3 = 1000Kg/m3 (Be water my friend! :D).

Lista de tareas a hacer (próximos cambios)

 * Afinar las colisiones
 * Introducir el tipo de forma de Prim para tener más que solo la forma de cubo.
 * Más de 1 región en un Sim y luego más de 1 sim (red)
 * Corregir errores

Errores conocidos

 * Bug de pista de hielo: el avatar actúa como si estuviese sobre hielo y tiende a irse fuera de los límites del sim después de un tiempo
 * Crash sobre BulletX. Se puede dar el siguiente mensaje en la consola: Overflow in AABB, object removed from simulation If you can reproduce this, please email bugs@continuousphysics.com Please include above information, your Platform, version of OS. Thanks.
 * Las rotaciones parecen no funcionar

POS Plugin en OpenSimulator
POS es Physics Of Simplicity (física de la simplicidad). Es BasicPhysics con colisiones.

El algoritmo que está implementado en POS  no  modela el avatar como una esfera, sino más bien como un sólido rectilíneo, lo mismo que los prims. Sin embargo, la detección de colisiones siempre se hacen el marco rotacional del prim, a sí que por lo que dependiendo del prim sobre el cual se actue el avatar se orienta de manera diferente.

Lista de tareas a hacer (al lado próximos cambios)

 * (A hacer)

Errores conocidos

 * (A hacer)

ODE

 * 360 Prims (Sim 'peta') [11/08/2007 rev.2308]

QuickTime > http://www.nebadonizumi.com/vid/opensim/opensim_ODE_physics_test_01.mov Stage6 > http://stage6.divx.com/user/3dlibre/video/1847652/ YouTube > http://www.youtube.com/watch?v=Y0olsWlTc0A
 * 180 Prims (Sim no 'peta') [11/08/2007 rev.2308]

QuickTime > http://www.nebadonizumi.com/vid/opensim/opensim_ODE_physics_test_02.mov Stage6 > http://stage6.divx.com/user/3dlibre/video/1847715/ YouTube > http://www.youtube.com/watch?v=9lR_2H7VODU
 * 90 Prims (Sim no 'peta') [11/08/2007 rev.2308]

Quicktime > http://www.nebadonizumi.com/vid/opensim/opensim_ODE_physics_test_03.mov Stage6 > http://stage6.divx.com/user/3dlibre/video/1847731/ YouTube > http://www.youtube.com/watch?v=t9ulYO8I26Q

BulletX

 * 360 Prims (Sim 'peta') [11/08/2007 rev.2308]

QuickTime > http://www.nebadonizumi.com/vid/opensim/opensim_BulletX_physics_test_01.mov Stage6 > http://stage6.divx.com/user/3dlibre/video/1847745/
 * 180 Prims (Sim 'peta') [11/08/2007 rev.2308]

QuickTime > http://www.nebadonizumi.com/vid/opensim/opensim_BulletX_physics_test_02.mov
 * 90 Prims (Sim 'peta') [11/08/2007 rev.2308]

QuickTime > http://www.nebadonizumi.com/vid/opensim/opensim_BulletX_physics_test_03.mov

Second Life Havok 1

 * 360 Prims [11/08/2007]

http://www.nebadonizumi.com/vid/opensim/SecondLife_physics_test_01.mov

Second Life Havok 4

 * 360 Prims [11/08/2007]

http://www.nebadonizumi.com/vid/opensim/SecondLifeBetaHavok_physics_test_01.mov
 * 1000 Prims [11/09/2007]

http://www.nebadonizumi.com/vid/opensim/SecondLifeBetaHavok_physics_test_02.mov
 * 1000 Prims [11/09/2007]

http://www.nebadonizumi.com/vid/opensim/SecondLifeBetaHavok_physics_test_03.mov