NVIDIA PhysX, Instalando NxOgre

19 05 2010

PhysX es un chip y un kit de desarrollo diseñados para llevar a cabo cálculos físicos muy complejos. Conocido anteriormente como la SDK de NovodeX, fue originalmente diseñada por AGEIA y tras la adquisición de AGEIA, es actualmente desarrollado por Nvidia e integrado en sus chip gráficos más recientes. (Fuente Wikipedia)

Para poder utilizar el SDK de PhysX en nuestros desarrollos en Ogre3D utilizaremos una librería intermedia que facilita su uso llamada NxOgre.

Primero necesitamos compilar las fuentes de NxOgre para generar las librerías que utilizaremos en nuestro proyecto, para ello necesitamos tener instalado el SDK y el System Software de nVidia. A continuación descargamos NxOgre BloodyMess que es la versión estable.

Tras instalar el SDK, el System Software y descomprimir NxOgre tenemos todo lo necesario para compilar las librerías (tengo en cuenta de que disponemos del SDK de Ogre3D también en el sistema). Accedemos a la carpeta \build\msvc donde encontraremos dos proyectos preparados, para Visual Studio 2005 y 2008.

Debemos crear una variable de sistema llamada PHYSX_DIR que apuntará a la carpeta donde se instaló el SDK de PhysX.

Para compilar el proyecto debemos configurar las librerías que utilizará visual studio para compilar el proyecto. Accedemos al menú Tools y a la opcion Options…

En el apartado Projects and Solutions, en la sección VC++ Directories debemos indicar las librerías de Ogre3D necesarias para compilar el proyecto. En Include files debemos indicar la carpeta Include de Ogre3D, la carpeta Include de Samples\Commons\Include también de ogre y la carpeta boost dentro de boost_1_42 también en Ogre3D. En Executable files indicamos la carpeta bin de Ogre3D y en Library files la carpeta lib de Ogre3D y la que hay dentro de boost_1_42 también en Ogre3D.

Modificaremos las operaciones post-compilado de la librería para que no intente copiar las librerías generadas a los ejemplos Cake y Flour de NxOgre ya que si no los tenemos descargados nos dará un error de compilado que aunque nos generará las librerías correctamente, puede llevar a confusión. Para ello accedemos a las propiedades del proyecto de NxOgre y en la sección Configuration Propeties > Build Events > Post-build Event pulsamos en el botón con tres puntos en el campo Command Line y eliminamos las dos últimas lineas:

  • copy «$(SolutionDir)..\..\sdk\NxOgre_Debug.dll» «$(SolutionDir)..\..\..\BloodyCake\application\»
  • copy «$(SolutionDir)..\..\sdk\NxOgre_Debug.dll» «$(SolutionDir)..\..\..\BloodyFlour\application\»

Ahora simplemente vamos al menú Build y seleccionamos Build Solution. Según la opción de compilado obtendremos en la carpeta sdk del directorio de NxOgre una librería NxOgre.dll o NxOgre_Debug.dll, las cuales usaremos según la opción de compilado en nuestros proyectos. (Al final indico algunos posibles problemas que pueden surgir al compilar la librería y cómo solucionarlo)

Para utilizar las librerías de NxOgre con nuestro proyecto de Ogre3D debemos incluirlas de la misma forma que para compilar NxOgre. En VC++ Directories incluimos en Include files la carpeta sdk de NxOgre y en Library files también incluímos la carpeta sdk. Para utilizar las dll accedemos a las propiedades de nuestro proyecto Ogre3D y en la sección Input de Configuration Properties > Linker hacemos click en el botón con los tres puntos del campo Additional Dependences y añadimos en el campo de texto superior las siguientes lineas:

  • NxOgre.lib
  • NxOgreOGRE3D.lib
  • Si compilamos en modo Release
  • NxOgre_Debug.lib
  • NxOgreOGRE3D_Debug.lib
  • Si compilamos en modo Debug

Para terminar y poder ejecutar nuestro proyecto compilado de Ogre3D, debemos copiar las librerías NxOgre.dll o NxOgre_Debug.dll (según compilemos el proyecto) en la carpeta donde se genere nuestro ejecutable. En nuestro caso en la carpeta debug y release dentro de la carpeta bin en Ogre3D.

Para poder utilizar todos los ejmeplos que expondremos aqui hará falta el BloodyCake usado en la wiki de NxOgre el enlaze es este: MeshYUtilidades

Posibles problemas:

No deberían de producirse estos problemas si está todo bien configurado, pero por si acaso, aquí tenéis cómo solucionarlos.

  • Si al compilar no encuentra el archivo Ogre.h debemos ir a la configuración de las librerías incluidas en VC++ Directories y en Include files debemos indicar las carpetas OGRE y OIS dentro de Include en vez de solo la carpeta principal.
  • Si al compilar no encuentra el archivo OgreMain_d.lib actuaremos de la misma forma que en el punto anterior salvo que incluiremos las carpetas debug y release de la carpeta lib en la seccion Library files en vez de la carpeta principal solo.
  • Si al compilar no encuentra el archivo tss.hpp debemos copiar la carpeta boost de boos_1_42 a la carpeta Include de Ogre3D e incluirla en Include files de VC++ Directories en Visual Studio.

Espero que os sea de utilidad el tutorial Si os resulta algo difícil de seguir indicadlo en los comentarios o al mail freakteam.mail@gmail.com y le echaremos un vistazo para redactarlo de nuevo.


Acciones

Information

2 responses

2 09 2010
fede

como es el nombre de la carpeta original de physx? porque le cambie el nombre sin querer y ya no me funciona

3 09 2010
freakteam

¿La carpeta de Physx o de NxOgre?

Replica a freakteam Cancelar la respuesta