lunes, 26 de septiembre de 2011

Instalar Bullet Physics para Codeblocks

1. Bajar la última versión de bullet en:
En mi caso bullet2.79.


2. Descomprimir Bullet preferiblemente en una carpeta de ruta corta, yo cree una carpeta en C:\Bulletcodeblocks
La ruta para bullet quedo C:\Bulletcodeblocks\bullet 2.79
Bajar CMake de:
http://www.cmake.org/cmake/resources/software.html la versión que yo tengo es CMake 2.8.5


3. Poner en las variables de entorno en path minGW/bin con la version de minGW que se quiera compilar, en mi caso configure el path para minGW 32 bits por problemas con las versión de bullet 2.78 para compilar en 64bits. 

Nota: En el siguiente paso es importante lo del punto 3 debido a que Cmake se configura de acuerdo a esto y nos ahorra el tener que hacerlo a mano.


4. Configuración Cmake
Despues de instalar Cmake abrir CMake-gui
  •     where is the source code: En mi caso C:\Bulletcodeblocks\bullet 2.7
  •     Where to build the binaries: en mi caso C:\Bulletcodeblocks

Dar en configure, saldrá otra ventana donde debemos poner el compilador en nuestro caso codeblocks 
minGW y dejar el radio button en Use default native compilers. Después habrá errores debido a que no esta
completamente configurado.  “Los errores aparecen en rojo”.

Es necesario chekear advanced para que salgan el resto de opciones y también chekear grouped para mayor orden.


pestaña BUILD:
Se checkea los demos que se quieran construir pero hay que tener cuidado en tener instalado antes lo que se requiere por ejemplo para nvidia opencl demos tener ya instalado Cuda. 
Si se chekea build opencl demos es necesario tener opencl ya sea para Nvidia o para intel  instalado. En el caso de chekear para nvidia configurar como sigue:
  • Nvidia Opencl_ICD_CFG colocar la ruta C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/lib/Win32
  • Nvidia Opencl_INCLUDES C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/include/CL
  • libraries C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\Win32\Opencl.lib.


Pestaña Cmake:
Ya estara todo configurado si se puso minGW/bin en el path. Unicamente en:
  • Cmake_Codeblocks_executable poner la ruta de codeblocks. 


Pestaña GLUT:
Si se checkea Los Demos y extras es necesario configurar la ruta de glut y checkear glut, aquí simplemente poner las rutas a las librerías de glut. Ojo, bullet trae una carpeta llamada Glut por lo tanto sacar las librerías y headers de aquí y copiarlas en minGW y configurar las ruta de mingw, también son necesarias las librerias glew.lib así que copiarlas tambien , después borra la carpeta ya que si se deja compilara con errores en esta carpeta.


Pestaña NVIDIA:

Si se chekea build opencl demos es necesario tener opencl ya sea para Nvidia o para intel  instalado. En el caso de chekear para nvidia configurar como sigue:
  • Nvidia Opencl_ICD_CFG colocar la ruta C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/lib/Win32
  • Nvidia Opencl_INCLUDES C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/include/CL
  • libraries C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\Win32\Opencl.lib.
  • Para intel hacer algo parecido pero con el sdk de Intel.


Pestaña USE
Si se quiere se puede chekear  Use_custom_Vector_Math, esto no es indispensable pero si se checkea estar seguro que se escoge la ruta: C:/Bulletcodeblocks/bullet-2.79/src/vectormath/scalar ya que sse genera errores en la compilación. esta ruta puede ser cambiada en la pestaña Ungrouped entries.
¿Utilizar o no utilizar doble precisión?
Yo creo que los computadores de nuestro tiempo ya son lo suficientemente adelantados como para utilizar doublés pero si se quiere crear un juego o aplicación para un teléfono u otro dispositivo  es necesario utilizar floats.
Finalmente Chekear use glut y graphical_Benchmark.
Por ultimo presionar Configure y si ya no hay nada en rojo podemos proceder a dar en Generate.
A continuación las imágenes para mayor comprensión:



5. Construyendo el proyecto
  •  Ahora ir a la carpeta en mi caso C:\Bulletcodeblocks\ y abrir el archivo .cbp. se abrirá codeblocks con el proyecto.
  • Si le damos en build nos compilara el proyecto pero si aparece nada para compilar entonces debemos configurar el compilador. El problema se debe a que muchas veces nosotros tenemos mingw32-g++.exe  en codeblocks y   g++.exe en las opciones de CMake. No cambiar la opciones de CMake, cambiar las opciones de Codeblocks y poner g++.exe en vez de mingw32-g++.exe  y asi con todos los demás para que la configuración de Codeblocks coincida con la de CMake.
  • Le damos build y listo. No debe aparecer ningún error si se elimino la carpeta de Glut de bullet.
  • Puede haber un error si se configuro con Use_custom _math _vector en cmake. Cambiar la linea 8 de C:\Bulletcodeblocks\bullet\src\vectormath\vmInclude.h por: #include "scalar/vectormath_aos.h".
  • Si le dimos que compile los demos de opencl estos no apareceran compilados debido a que no encontraron la libreria glew32.lib o glew34.lib esto se debe a que eliminamos la carpeta glut. Pero el haber eliminado la carpeta no esta mal ya que de igual manera al enlazar con glew32.lib nos genera errores.
  • Para solucionar el problema debemos enlazar con glew32.dll para esto debemos
  • abrir el archivo C:\Bulletcodeblocks\Demos\ParticlesOpenCL\NVidia\CMakeFiles\AppParticlesOCL_Nv.dir\link.txt
  • Poner C:\Bulletcodeblocks\bullet-2.79\glew32.dll después de ..\lib\libLinearMath.a y eliminar la ruta anterior que se enlazaba a la carpeta glut\glew32.lib.
  • Por ultimo construir en codeblocks unicamente para appParticlesOCL_Nv hay que hacer esto con cada demo que no se construyo, seguramente porque utilizan glew. Ojo se puede construir cada demo no es nesesario darle bulild a todo el proyecto.

6. Probando bullet
Copiar el ejemplo de getting started de la wiki de la pagina web de bullet.
en un nuevo proyecto bullet es necesario poner la definición  en la pestaña compiler settings -> #defines poner BT_USE_DOUBLE_PRECISION si se construyeron las librerías para que funcionen con doble precisión. Si todo funciona correcto ya podemos trabajar con bullet.
No olvidar enlazar las librerías creadas, pero tomar atención al orden sin no no enlazara bien el programa.

  • libBulletWorldImporter.a (opcional)
  • libBulletFileLoader.a (opcional)
  • libBulletMultiThreaded.a (opcional)
  • libBulletSoftBody.a (opcional)
  • libBulletDynamics.a
  • libBulletCollision.a
  • libLinearMath.a
el orden de enlazar es importante por ejemplo si enlazan bulletFileLoader en la parte superior bulletWorldImporter no funcionara debido a que necesita de bulletFileLoader.



Y listo a programar con física!

viernes, 16 de septiembre de 2011

Humanoide corriendo en UDK

Ahora si el humanoide se muestra en el siguiente vídeo corriendo en el engine Unreal Develpment Kit.


Ahora el humanoide ya corre en UDK.

jueves, 15 de septiembre de 2011

Exportando animación de blender a UDK

En este post explicare de una manera sencilla como exportar un skeletal mesh o modelo animado a Unreal Development Kit.

1. Activar el Add-on que viene ya preinstalado con blender 2.59 como se muestra en la siguiente imagen



2.Crear la animación en el action editor y al exportar tener abierta la animación que se necesita. También se puede exportar todas las animaciones checkeando all en el exportador.

3.Es importante que tanto la armature como la mesh estén centrados en el punto (0,0,0) también es importante que entes escalados en (1,1,1). Las escalas deben corresponder, si es necesario cambiar el tamaño de la mesh en edit mode.

4. Como en el exportador de ogre también es necesario que máximo 4 huesos afecten un vértice, ademas es importante saber que no se puede exportar un armature con un único hueso.

5. para exportar se activan las casillas de lo que se quiere exportar sea animación(.psa) o únicamente el skeletal mesh(.psk). 

6. En UDK simplemente importar el archivo .psk en el content browser.
7. Para cargar las animaciones en UDK es necesario crear un animset. Para crear un animset dar click derecho en el content browser y escoger new animset.

Para importar dar en el animset file y import psa.

Y listo.




jueves, 8 de septiembre de 2011

Humanoide caminando en Ogre3D

Ahora coloco un vídeo en el cual se muestra al humanoide caminando en el engine Ogre3D. En la primera parte del vídeo aparece el render hecho en blender, en la segunda y tercera parte aparece el humanoide en ogre3D caminando a distintas velocidades.

Nota: en el cambio de velocidad se hizo necesario cambiar la velocidad de la animación en blender para que coincida con la traslación en Ogre.

A continuación el vídeo:



El humanoide aprendió a caminar!.

martes, 6 de septiembre de 2011

Exportando animación de blender a Ogre3D

Para exportar las mallas, el sistema de huesos y las animaciones utilizo el plugin que se puede bajar de aquí:

http://code.google.com/p/blender2ogre/

Antes de instalar el plugin es necesario bajar OgreCommandLineTools que se puede encontrar en la pagina de Ogre3D ya que estos ejecutables nos transforman los archivos xml que produce el exportador a archivos .mesh, .material, .skeleton necesarios en Ogre.

Primero instalar OgreCommandLineTools y luego el plugin los reconocerá automáticamente.

Este plugin hay que adicionarlo a blender, para hacer esto se descomprime el archivo y se copia el archivo con extensión .py en la carpeta addons de blender, para encontrar esta carpeta en windows se debe habilitar ver archivos ocultos del sistema y luego entrar a la siguiente ruta según el usuario y la versión de blender.

RUTA: C:\usuarios->nombreusuario->AppData->Roaming->Blender Foundation->Blender->version->scripts->addons

Después de copiar el archivo simplemente se habré blender, luego se presiona en user preferences y en la pestaña Add-Ons buscar Ogre Exporter y despues se activa el cuadro que esta al frente del nombre en el cual debe aparecer una marca de verificación.

Para que la animación hecha en blender pueda se exportada correctamente a ogre 3D es necesario lo siguiente:

1. Lo usual para crear una animación es crear huesos de deformación y otros de control, la animación se suele hacer rotando, escalando y moviendo estos huesos de control y lógicamente insertando sus respectivas keyframes. Pero si exportamos la animación de la manera anterior esta no funcionara en ogre ya que ogre solo utiliza los huesos de deformación por lo que cuando se inserte una keyframe del hueso de control se hace necesario hacer lo mismo con los huesos de deformación que se utilicen.

2. Es necesario que la rotación de la armature este en el mismo valor que la rotación de la mesh esto se ve en el panel de propiedades que se abre presionando N.

3. Si se tiene algún problema en la animación es necesario rotar la mesh con respecto a la armature para que coincida en Ogre3D.

4. Máximo cuatro huesos de deformación pueden estar asociados a un vertex si no es así cambiar los valores de weight a cero en los vértices que sobrepasen este limite.

5. Se requiere abrir el NLA editor y allí crear el strip respectivo a la acción, se cambia el nombre en el panel de propiedades presionando N en el NLA editor y se cambia el nombre en Active Track, ojo este sera el nombre que necesitaremos para llamar a la acción en Ogre.

Para Exportar se selecciona la mesh y la armature, despues se activan la opciones como se ve en la imagen:
Muchas veces no coincide la animación con la mesh en Ogre y puede generar mala animación como se ve en la siguiente imagen:
Para arreglar lo anterior es necesario rotar la mesh con respecto a la armature hasta que coincida en Ogre.
En la siguiente imagen se explica de una manera visual algunos puntos anteriores.


Esto es todo, en el próximo post mostrare al humanoide caminando en Ogre3D.