Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Introducción a Ogre3D

Iniciado por tamudo, 08 de Diciembre de 2007, 02:37:35 PM

« anterior - próximo »

tamudo

Tengo listo el siguiente artículo de introducción a OGRE, pero hay una parte que puede que algunos términos no los halla castellanizado bien, sobre todo nombres de algunas técnicas gráficas. La lista de caracteristicas técnicas la he sacado de aquí. Si encontrais alguna cosa rara me lo comentais, os estaré muy agradecido. Sino veis nada pos lo publicaré tal cual en el blog.

-----------------------------------------------------------------------------------------


Caracteristicas generales

    - Diseño orientado a objetos. Interfaz simple y fácil de usar, diseñada para que requiera poco esfuerzo el renderizado de escenas en tres dimensiones
    - Arquitectura basada en plugins muy flexible que permite extender las funcionalidades del motor
    - Sistema de Carga/Respaldo. Soporte de zip/pk3 para archivar
    - Diseño limpio y bien documentado de las clases del motor
    - Independiente de la API gráfica, se puede utilizar OpenGL o DirectX


Renderizado

    - Material LOD
    - Soporta la gama completa de operaciones de función fija como multitextura y multipass blending, coordinación de generación de texturas
    - Soporte para múltiples técnicas de materiales
    - Objetos transparentes gestionados automáticamente
    - Sistema de fuentes con fuentes TrueType y texturas precreadas
    - Sistema de GUI 2D con botones, listas, cajas de edición, barras de desplazamiento, etc. (Usando CEGUI)


Gestión de escena

    - Altamente personalizable. Flexible gestión de escena no vinculada a ningún tipo de escena. Se puede usar las clases predefinidas si encajan bien o crearse subclases propias para obtener un control total sobre la organización de la escena
    - Grafo de escena jerarquico
    - BSP, Octrees, Occlusion Culling, LOD


Texturizado

    - Básico, multi-texturizado, bumpmapping, mipmapping, texturas volumétricas y proyectadas
    - Texturizado proyectivo automático entre vínculos con texturas unitarias a instancias Frustum
    - Puede registrar textura de fuentes externas
    - Soporta PNG, JPEG, TGA, BMP y DDS  como archivos de imagen


Iluminación

    - Por vértice, por pixel, Lightmapping
    - Puede tener un número ilimitado de luces en la escena
    - Soporte a través de programas de vértices y de fragmentos.

Sombras

    - Shadow mapping, shadow volume
    - Técnicas soportadas: modulative stencil, additive stencil, modulative projective
    - Múltiples esténciles para optimizaciones de sombras, incluyendo programas de vertices de extrusión, luz y sombras inteligentes, integración con la malla LOD, métodos zpass y zfail, esténciles de doble cara y saturación de recorte de región.
    - Textura sombras que se desvanecen a larga distancia


Shaders

    - Vertex y  pixel shaders de alto nivel
    - Soporta programas de vértices y de fragmentos de bajo nivel escritos en ensamblador, y programas de alto nivel en Cg, HLSL, y GLSL


Animación

    - Cinemática inversa, animación esquelética, animación de mezcla:
    - Animación del esqueleto, incluyendo la mezcla de múltiples animaciones y de peso variable de skinning de huesos


Mallas

    - Cargado de malla, skinning, progresivo
    - Aceleración de skinning por hardware
    - Flexibilidad en los formatos de malla de datos aceptados
    - Exportadores para muchas herramientas de modelado incluidas Milkshape3D, 3D Studio Max, Maya, Blender y Wings3D.


Curvas y superficies

    - Splines
    - Caminos Bezier bicuadrados para superficies curvas


Efectos especiales

    - Cartografía de medio ambiente, billboarding, sistema de partículas, motion blur, cielo, agua, niebla
    - Sistemas de partículas, incluyendo emisores fácilmente extensibles y affectors (personalizable mediante plugins). Los sistemas pueden ser definidos mediante scripts para un ajuste fácil
    - Soporte para skyboxes, skyplanes y skydomes, muy fáciles de usar

Scripting

    - El lenguaje de script permite mantener los materiales fuera del código
    - Scripts de renderizado multipaso


Física

    - Física básica, detección de colisiónes, cuerpos rígidos
    - Controladores que permiten organizar fácilmente los valores entre los objetos derivados
    - Incluye bindings para múltiples sistemas de colisión/física de terceras partes, como ODE o Newton


----------------------------------------------------------------------------------

El artículo ya ta casi listo, me queda revisar nada más esta parte, por favor echarle un ojo y me comentais.

Un saludo
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación

tamudo

Sólo deciros que ya acabe con OGRE! He cumplido mi proposito que era aprender y que mi trabajo le sirviera a otros. Me ha gustado mucho la experiencia, y quizás algún día la retome. Más adelante os hablaré un poco del MATVI, que fue el "congreso" para el que realicé el trabajo. Bueno aquí os dejo la dire del compendio de artículos:

http://tamudo84.blogspot.com/2008/01/introduccin-ogre.html

Los que seguís el planet stratos ya os habré dado ya suficiente la brasa. Perdón porque he tenido que actualizar varias veces muchos de los post. Y es que soy bastante tiquismiquis y como vea un fallo no puedo dejarlo: o lo corrijo o me corroe por dentro. Para los que se molesten en verlo de nuevo, decirles que ahora los artículos están encadenados y tienen al final de los mismos los típicos enlaces de "Artículo siguiente" y "Artículo anterior" para una fácil navegación.

Eso es todo. No os dare más el coñazo con el tema de OGRE...    al menos de momento  :twisted:
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación

Tarzan

Hola tamudo,


Te agradezco que hayas publicado esta ayuda de una forma tan ordenada... Me ha venido genial tener los links de ciertas herramientas y las anotaciones sobre la configuración son excelentes.

He seguido las instrucciones al pie de la letra, o eso creo.
Tengo instalado el Visual c++ express 2005 con el service Pack 1.
Me he descargado el sdk de Microsoft Platform, el sdk de las directX y el Ogre3D.
Lo he instalado todo y me he descargado finalmente el plugin que indicas para habilitar la opción de crear un Proyecto de Ogre3D con el VisualC++ 2005.

He registrado el Visual y modificado los archivos de configuración como explicas. También he añadido rutas de includes y ficheros binarios a los Directorios en el menú de herramientas.

Sin embargo, cuando creo un proyecto nuevo (Ogre3D Application) me genera un código automático y, si le doy a compilar me lanza un error:

windows.h such file or directory.

Es como si no encontrar ese archivo .h, pero he comprobado que está en el directorio INCLUDE del sdk Platform de Microsoft que he instalado y AÑADIDO a las rutas de Directorios en: Herramientas->Opciones->Soluciones y Proyectos->Directorios

¿Qué puedo estar haciendo mal para que no encuentre esa librería si está en la ruta de directorios añadida?

tamudo

Tarzan, lo de problemas de compilación con el windows.h suele ser por no actualizar bien los ficheros para que se acople visual studio express con el Platform SDK.

En la wiki de OGRE recomiendan hacer una serie de pasos para que no de problemas con lo de "windows.h"

Cita de: "OGRE wiki"NOTE: If you are using Visual C++ Express (vc 8.0) for the first time, make sure you do all 5 steps here prior to using the Ogre SDK for vc8.0. Visual C++ Express does not come with the windows headers and libraries so the second step in that MSDN link is to download the Microsoft Platfrom SDK (PSDK) which has what Express does not. If you don't install the PSDK and do steps 3, 4, and 5 then you will get compiler errors like can't find 'windows.h' etc. If you get error messages about not finding 'winres.h' then add C:\Program Files\Microsoft Platform SDK\Include\mfc to the list of include directories at Tools|Options|Projects and Solutions|Iclude Files. Yes, the PSDK is a motherload of a download but hey its free :)

Es decir tienes que hacer estos 5 pasos para que funcione correctamente. Yo los incluí en el tutorial, pero alomejor te lo has saltado sin darte cuenta. Para no hacerte sentir mal, tengo que decirte que a mi también me saltó el mismo error cuando lo instale por primera vez antes de preparar el tutorial y tuve que revisar la instalación. Bueno espero que con esta aclaración te funcione correctamente.
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación

Tarzan

Hola Tamudo,

He seguido los 5 pasos al pie de la letra y sigo teniendo problemas al compilar la aplicación. El compilador no encuentra el fichero windows.h.
Te explico un par de cosas en las que dudo que estén bien:

Por una parte, he comentado como decía en tu Post las 4 líneas del fichero AppSettings.htm (líneas 441-444) con los caracteres // al principio de cada línea. Imagino que estos serán los caracteres correctos para comentar esas líneas y no <!-- --> por ser un fichero html, verdad?

Y por otra parte, lo que pienso que no he hecho bien es el tema de los directorios. Herramientas->Opciones->Proyectos y Soluciones->Directorios.... Aquí tengo las siguientes líneas y en este orden:

C:\Utilidades\Programacion\SDK903\Include
C:\Utilidades\Programacion\SDK903\Lib

Estas dos son para las librerías DirectX que, como decías en tu Post, deben estar al Principio.

C:\Utilidades\Programacion\Microsoft SDK\Include
C:\Utilidades\Programacion\Microsoft SDK\Lib
C:\Utilidades\Programacion\Microsoft SDK\Include\mfc
C:\Utilidades\Programacion\Microsoft SDK\Bin

Estas son las que añadí para que capturara las librerías del SDK de Microsoft. He comprobado que dentro de la carpeta include se encuentra el fichero windows.h del cual, el compilador se queja.

$(VCInstallDir)bin
$(VCInstallDir)PlatformSDK\bin
$(VCInstallDir)Common7\Tools\bin
$(VCInstallDir)Common7\Tools
$(VCInstallDir)Common7\ide
$(ProgramFiles)\HTML Help Workshop
$(FrameworkSDKDir)bin
$(FrameworkDir)$(FrameworkVersion)
$(VSInstallDir)
$(PATH)


Estos se crearon de forma automática al instalar el Visual c++ 2005 y no los he tocado. No sé si están bien o si debo modificarlos, si sobran o qué.... El caso es que pienso que algo está mal en estas especificaciones de Directorios porque no encuentra el windows.h que se encuentra en:
C:\Utilidades\Programacion\Microsoft SDK\Include

La ruta de instalación del Visual c++ 2005 Express es:
C:\Utilidades\Programacion\MVC++ 8

¿Ves algo erróneo?... Sabes qué puedo estar haciendo mal...

Gracias por todo.

Saludos.

Juan Mellado

Tarzan, por lo que pones en tu último post, creo que no estás poniendo los directorios para los "includes" en la opción correcta del Visual. Los valores que has puesto, los que dices que "se crearon automáticamente al instalar el Visual" corresponden a los directorios donde se buscan los ejecutables, no los includes.

En la opción "VC++ Directories", donde estás escribiendo los directorios, tienes un desplegable en la parte superior derecha de la ventana donde puedes elegir entre "Executable files", "Include files", "Reference files", ...

Elige "Include files" y no el valor por defecto "Executable files" que es el que creo que estás usando y por eso no te funciona.

Espero te sirva,
saludos

tamudo

Puede ser lo que te dice Juan Mellado
Cita de: "Juan Mellado"En la opción "VC++ Directories", donde estás escribiendo los directorios, tienes un desplegable en la parte superior derecha de la ventana donde puedes elegir entre "Executable files", "Include files", "Reference files", ...

Elige "Include files" y no el valor por defecto "Executable files" que es el que creo que estás usando y por eso no te funciona.

Cada directorio es de un tipo, y se debe de incluir en la lista de su tipo:

Archivos ejecutables:
C:\Archivos de programa\Microsoft Platform SDK\Bin




Archivos de inclusión:
C:\Archivos de programa\Microsoft Platform SDK\Include
C:\Archivos de programa\Microsoft Platform SDK\Include\mfc



Archivos de biblioteca:
C:\Archivos de programa\Microsoft Platform SDK\Lib



A ver si era eso y te consigue compilar el código!
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación

Tarzan

Buenos días,


Teniais razón!! lo había incluído todo en el apartado de ejecutables y por eso no lo encontraba... Lo he cambiado todo según el ejemplo de tamudo... Creo que ahora está bien porque sí encuentra los archivos pero cuando compilo el ejemplo (es simplemente el código generado por el Visual cuando creo un proyecto tipo Ogre3D), me avisa de un error con el archivo winnt.h.

Este error no es porque no lo localice sino que me dice error de sintaxis o falta el especificador de tipo ";".

------ Operación Generar iniciada: proyecto: Prueba1, configuración: Debug Win32 ------
Compilando...
Prueba1.cpp
c:\utilidades\programacion\microsoft sdk\include\winnt.h(222) : error C2146: error de sintaxis : falta ';' delante del identificador 'PVOID64'
c:\utilidades\programacion\microsoft sdk\include\winnt.h(222) : error C4430: falta el especificador de tipo; se presupone int. Nota: C++ no admite default-int
c:\utilidades\programacion\microsoft sdk\include\winnt.h(5940) : error C2146: error de sintaxis : falta ';' delante del identificador 'Buffer'
c:\utilidades\programacion\microsoft sdk\include\winnt.h(5940) : error C4430: falta el especificador de tipo; se presupone int. Nota: C++ no admite default-int
c:\utilidades\programacion\microsoft sdk\include\winnt.h(5940) : error C4430: falta el especificador de tipo; se presupone int. Nota: C++ no admite default-int
El registro de generación se guardó en el "file://c:\Utilidades\Programacion\MVC++ 8\Proyectos\Prueba1\Prueba1\obj\Debug\BuildLog.htm"
Prueba1 - 5 errores, 0 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========


Son 5 errores de sintaxis en el fichero winnt.h de SDK de Microsoft.
Uff... ¿Cómo es posible que falle ése archivo si yo no lo he tocado?


Lo único que he hecho ha sido abrir el Visual, darle a un proyecto nuevo tipo :Ogre3D Application" y compilar. No he incluído ninguna línea ni modificado nada.

¿Hay alguna incompatibilidad con algo?


Os agradezco muchísimo vuestra ayuda...

Un saludo.

tamudo

jo que cosas más raras te pasan, xDDD. Googleando un poco he encontrado esto. A ver si te sirve de ayuda.

CitarI have the same problem, and I have solved changing it to the head winnt.h

typedef void *PVOID;
typedef void *POINTER_64;
typedef void *PVOID64; // <-- :wink:

Good luck!

Se olvidan de poner puntos y comas en el platform SDK. Ya lo nunca visto xD
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación

Tarzan

Buenas Tamudo!!

Pues sí que era eso!!... Esas 3 líneas estaban mal escritas en el fichero winnt.h... Pero ¿Cómo es posible que vengan mal como quien dice "de fábrica"?... Lo nunca visto como tú bien dices...

Te escribo como estaban por si alguien que sigue los pasos de tu guía se encuentra con el mismo problema:

typedef void *PVOID;
typedef void *POINTER_64 PVOID64;


Esto el compilador de Visual C++ 2005 no lo entiende bien y se queja...

Yo escribí esto:
typedef void *PVOID;
typedef void *POINTER_64;
typedef void *PVOID64;


y la aplicación compila de maravilla... sin errores ni nada...

No sé si Microsoft no comprueba las cosas o utilizan el compilador de Borland... en cualquier caso... ya está arreglado.

Por cierto Tamudo, he observado que el ejecutable está dentro de la carpeta debug (en el interior del proyecto) y, al iniciarlo, me indica que debo copiar alguna dll del Ogre3D (ogreMain_d.dll)... Ya había leído yo que esto pasaría..jeje... Voy a buscarlas y probarlo de una vez que tengo muchas ganas de iniciar mi primera aplicación en Ogre3D..

Muchísimas gracias por todo, de verdad!!

Un saludo.

tamudo

ja!  8) me alegro que te vaya ya bien! A darle duro con el ogro!
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación

Martinez

Una cosa tarzan. Hay 2 tipos de DLLs, las de debug y las de release. En debug son las que acaban _d.dll. Ejemplo:

Debug: ogreMain_d.dll
Release: ogreMain.dll

Suerte

Carlanga92

No se si es un poco tarde para hablar en el foro este.. pero a lo mejor te llega al correo que hicieron una respuesta: weno.. mi problema es este: segui al pie de la letra la tutorial esa ( no de esa pagina .. estaba en otra pero era exactamente igual) y posiblemente sea una tonteria lo que me esta pasando pero al darle a proyecto, nuevo, ogre SDK apliccation, le pongo un nombre.. pero luego no me sale la ventana esa que deberia de salir.... simplemente me sale el proyecto pero no se abre ni na.. lo compile pero nada.. nada nada nada.. la unica cosa que no segui fue lo de instalar la version 1.4.5.. que instale la 1.4.6.. pero por todo lo demas es igual :S no entiendo, esque kiero hacer primero la prueba antes de nada

ruso_rbp

hola a todos!!! estoy un poco verde en esto.... y me ha surgido una coas que no se como hacerla.
resulta que quiero meter en mi proyecto sonido, y modificarle. no se como hacerlo. lo he intentado abrir como un fichero pero luego no se ver lo que hay dentro.
si alguien me puede ayudar lo agradeceria...
un saludo

tamudo

Ogre no trabaja con sonidos de forma nativa, tendrás que usar una librería de audio externa. Puedes probar con OpenAL, o quizás con SDL_Mixer. Los chicos de ikaro games saben un poco más de este tema

http://www.ikarogames.com/blog/archives/14-OpenAL,-primer-bache-en-el-camino.html
born to be freak - Blog personal
Introdución a OGRE - Artículos de iniciación






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.