Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2012
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Añadir texturas diffuse, normal y specular a un objeto tridimensional en GLScene

Hola,

Quiero añadir texturas diffuse, normal y specular a un objeto tridimensional en GLScene con Delphi 6.

Tengo las tres texturas en tres archivos.

Diffuse_Map: Obj_Colors.jpg
Normal_Map: Obj_Normal.jpg
Specular_Map: Obj_Spec.jpg

Código:
Bola.Material.Texture.Image.LoadFromFile('Obj_Colors.jpg'); // Añado la textura diffuse
Bola.Material.Texture.Disabled := False;
Pero no se cómo cargar las texturas normal y specular. ¿Alguna idea?

Hasta luego.
Responder Con Cita
  #2  
Antiguo 23-01-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Curiosamente llevo una semana o así repasando el Red Book para re-aprender OpenGL, y no veo en él nada sobre los tipos de textura que dices. Diffuse y specular son dos cualidades que tienen la iluminación y los materiales (esto es, glLight* y glMaterial*), por otro lado las normales son los vectores perpendiculares a un plano, que en gráficos se utilizan para calcular cómo se refleja la luz. Pero ya te digo que estoy re-aprendiendo y puede que lo haya olvidado (ahora estoy con las mezclas [blending], no he llegado a las texturas todavía, aunque ya he repasado materiales e iluminación).

Quizá si nos explicas cuál es el efecto que pretendes conseguir te podamos ayudar más.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 23-01-2012 a las 12:51:56.
Responder Con Cita
  #3  
Antiguo 23-01-2012
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Te cuento un poco más como lo veo yo:

Diffuse_Map: Es el mapa o textura que da el color al objeto, los juegos más simples que se pueden correr en prácticamente cualquier maquina tienen únicamente este tipo de textura en sus modelos.

Normal_Map: Es la textura que puede hacer que un objeto con pocos polígonos luzca como si tuviese millones de vértices, este mapa es el que da los increíbles detalles de los juegos next-gen (Por ejemplo en las arrugas de la cara de un personaje).

Specular_Map: Es la textura que le dice al objeto como debe “brillar” o reflejar la luz , en donde debe hacerlo y con que intencidad, por ejemplo un objeto que tiene plástico y metal no brilla de la misma manera en los dos materiales.

Te adjunto unas capturas:

Objeto con textura diffuse:



Objeto con textura normal:



Objeto con textura especular:



Lo que yo quiero es cargar las tres a la vez para lograr el efecto correcto.

Saludos.
Responder Con Cita
  #4  
Antiguo 24-01-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No sé en GLScene...

En blender, tú tienes varias texturas como dice noob y las añades a texturas, después en el material es donde se especifica si modificará:
- el color
- las normales
- especularidad (brillo o como quieras llamarlo).

Además tendrás un shader activo que es el responsable de analizar los vértices (en caso de que la tarjeta trabaje así), o bien por píxeles, para aplicar el brillo y normal a cada vértice.

En el tema de Shaders hay muchas y de muchos tipos, bump shader, normal shader, normal + bump shader y el llamado monster shader que es una de las mejores ya que integra las tres cosas que estáis pidiendo, color, normales y especularidad. Es ésta shader la que necesita recibir las 3 texturas ya comentadas por noob.

Mirando, en sourceforge tienes el foro de shaders por si quieres investigar: http://sourceforge.net/apps/phpbb/gl...wforum.php?f=7


Ah, por cierto, para tener un diffuse más espectacular, detallado y realista, te aconsejo aplicarle un Ambient occlussion y después en Gimp multiplicar la capa diffuse con ésta nueva creado.

Saludetes
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 24-01-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
¡Ahhhh...! Vale, ahora ya está más claro.

Lo que tú llamas "textura normal" es, en realidad, mapeado de bultos o bump mapping, y hay varias técnicas para conseguirlo (el bump mapping propiamente dicho, paralax mapping, sub-división o tesselation, los famosos pixel shader... ). Lo que no sé es si GLScene tendrá alguna propiedad o método para hacerlo directamente (he intentado consultar en su documentación en línea pero me sale un error 503), pero si lo hace casi seguro que es el método más simple (bump mapping).

En cuanto al otro, supongo que también puede conseguirse mediante pixel shader. También se me ocurre una forma de hacerlo dibujando, primero, con un material donde se establezca el valor specular que se quiera y luego dibujar encima de nuevo con otro material sin specular pero aplicando la textura como una máscara usando el mapa de iluminación como canal alpha.

Pero ya digo, los de GLScene tienen la documentación on-line caída así que no tengo ni idea de si sus modelos poseen alguna propiedad o método que permita hacerlo. [Actualizo] Consultando a Duckduckgo, me ha salido que TGlLibMaterial puede usarse para describir bump mappings. Tira del hilo, a ver qué sale.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Añadir llamada desde consola a una App normal Bauhaus1975 Varios 7 16-12-2010 21:47:07
¿Bug, o es algo normal? Peri Varios 3 26-06-2008 20:10:38
Color en un Button normal brakaman Varios 1 12-08-2007 11:35:13
Problemas al aplicar texturas a un Dodecahedro en GLScene kakarotv5 Gráficos 2 02-03-2007 15:20:52
Bug o es normal? - Trunc function xEsk Varios 6 14-09-2006 01:54:02


La franja horaria es GMT +2. Ahora son las 08:55:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi