sábado, 14 de abril de 2007

Instalando GLScene - conflicto con los componentes Jedi



Como he dicho estoy por meterme en el mundo 3D y toda la matemática asociada a los gráficos para iniciar varios proyectos, y porque puede serme de ayuda en uno que estoy encarando actualmente. Nunca entiendo porqué es tan complejo instalar paquetes de componentes open source para Delphi (o en general), hay que recompilar aca, quitar versiones previas tocando manualmente el registro de Windows, agregar directorios a las configuraciones del IDE, en resumen todo manual. Claro, lo es complicado para mi, y quizas deba colaborar con esos proyectos open source creando una herramienta que automatice las tareas, en vez de quejarme. De momento, la única forma de colaborar es resumiendo mis pasos por si a alguien le sirve.
Uno de los mayores problemas que encuentro, es que por lo general la información de instalación o bien es lacónica, lo que presta a confusiones, o sino está diseminada entre varios tópicos, archivos readme, las FAQ, etc lo que hace que obtener la información necesaria nos insuma mas rato de lectura que el conveniente.

Instalación de GLScene

La instalación se hizo bajo Delphi 7 Enterprise Edition.

  1. Descargar el paquete de GlScene
  2. Descomprimir el paquete en una carpeta (recomiendan C:\Archivos de programa\Borland\Delphi7\Projects)
  3. IDE de Delphi
  4. Asegurarnos que la carpeta donde se encuentra GLScene está en las Libraries Path (Tools - Enviroment Options -> Library Path)
  5. Install New Component GLScene7.dpk (Components -> Install Component)
  6. Compilar y posteriormente Build
  7. Repetir 4 si desea instalarse los paquetes GLSS_FMOD7.dpk, GLSS_FMOD7.dpk, GLSS_BASS7, GLS_SDL7
  8. Instalar Paquete Components ->Install Package (verificar que se encuentre seteado el paquete de GLScene)
Hasta ahí todo bien, siempre y cuando, no tengan los componentes multimedia Jedi instalados. En ese caso cada vez que deseen instalar los componentes GLScene aparecerá un molesto mensaje de error:
"Cannot load package 'JvMMD7R'. It contains unit 'VFW,'which is also contained in package 'GLScene7'.

Causa: GLScene y JVLC usan la misma librería vfw.pas aunque ubicadas en diferentes carpetas. Ese archivo es utilizado por el paquete multimedia de las JVCL. Esta librería es la Video for Windows API translation (traducción Api de Windows para video), debería estar en and \common dentro de las Jvcl.

Solución(es):
Eso me llevó al sitio de GLScene, readme, foros, etc, y encontré algunas respuestas.

  1. Una del foro del Club Delphi , la cual no apliqué.
  2. Las otras estaban dentro de las FAQ de Jedi, sugiere o bien agregar el paquete de GLScene al nodo de 'requeridos' del paquete de JVMMD7R, o a agregar JvMMD7R al nodo de 'requeridos' de GLSscene, y quitar vfw.pas del nodo de contenidos de GLScene o de JvMMD7R, segun cual paquete se haya modificado (en mi caso GLScene).
  3. Reconstruir los paquetes.
Opté la 2, quizás la 1 hubiera sido mas radical y me hubiera permitido tener ambos componentes instalados de manera completa, pero temía por las dependencias de carpetas entre unos y otros. Además, tengo escasa probabilidades de usar los componentes multimedia de Jedi contando con los de GLScene.
Instalé los componentes de GLScene sin problemas, sin embargo los conflictos con los componentes Jedi volvieron cuando decidí instalar los paquetes restantes.
En resumen, si instalan sólo GLScene7.dpk, con la solución que detallé basta y funci
ona correctamente.

Excepciones de la solución:
Conflictos con componetes Jedi cuando decidí instalar los siguientes paquetes de GLScene:
  • GLS_ODE7.dpk - para aplicaciones de la física
  • GLS_SLD7.dpk - para el manejo de SDL
  • GLSS_FMOD7.dpk, GLSS_BASS7.dpk - manejo de sonido en 3D
Solución a mi problema:

  1. Desinstalar el paquete de las librerías multimedia de las Jedi. Components -> Install Package -> Jedi Multimedia -> Remove
  2. Reinstalar las GLScene y los paquetes mencionados.
  3. Por ensayo y error, mas algo de navegación en Google, supe que que los siguientes path deben estar en library path:
    \Source\CgShaders - GLCgShader.pas
    \Source\SoundAPIs - FMod.pas, Bass.Pas
    \Source\PhysicsAPIs - Odegl.pas

    \Source\GameAPIs - SDLWindow.pas
    Los archivos en rojo son los que deben estar al momento de instalar los paquetes (Components->Install Component) mencionados, los mismos van en el cuadro de la Unit Name (son los .pas correspondientes), si ponen el archivo incorrecto genera conflictos.
  4. Para instalar GLSS_FMOD7 y GLSS_BASS7 deben copiarse los archivos fmod.dll y bass.dll de \Source\SoundAPIs en Windows\System32
  5. Para instalar GLS_SLD7 de copiar el archivo sld.dll de \Source\GameAPIs en Windows\System32
  6. Para GLS_ODE7 copiar ode.dll de \Source\GameAPIs en Windows\System32

De este modo, previa eliminación de los componentes multimedia de las Jedi, quedaron instalados los paquetes de GLScene en el IDE de Delphi.
En este post intenté resumir las diferentes variantes de instalación de GLScene, hay varias opciones segun los conflictos que se planteen, y según los componentes de GLScene que deseamos instalar.



Notas
Remover paquetes: Components ->Install Packages -> Marcar -> Remove




Library Path (Tools ->Environment Options)


















Instalar Componente Components->Install Component (ver unit name ..para GLSS_FMOD, GLSS_BASS)















[off topic] insertar imágenes en blogger me resulta muy complicado,
el drag an drop no siempre funciona, y leer el html también también tiene sus vueltas, hay que ver donde se insertan los tags sino la plantilla no se resuelve correctamente.
Disculpen la desproligidad de las últimas imagenes.







4 comentarios:

Anónimo dijo...

Yo lo tengo instalado para Delphi pero no se como instalarlo para Borland C++ Builder 6. ¿Sabes cómo?

rog dijo...

No,lamento no poder ayudarte. Pienso, quizás erróneamente, que sea similar a instalarlo en delphi.
Lo mas que puedo hacer es recomendarte el Grupo en español que hay Yahoo sobre GLSCene (obvio, necesitás cuenta en yahoo):


saludos y suerte

Anónimo dijo...

Descomprimir el paquete en una carpeta (recomiendan Projects de Borland)

Segun yo no se puede descomprimir paquetes en la ruta que indicaste...

Gracias.

rog dijo...

Hola anónimo perdón por responder tarde, la ruta es:
C:\Archivos de programa\Borland\Delphi7\Projects

Ahí los tengo instalados yo, y funcionando sin inconvenientes.

Saludos, y gracias por avisar, ya corrijo el post :)