Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Model Viewer pruebas

Iniciado por Prompt, 25 de Agosto de 2009, 09:10:34 AM

« anterior - próximo »

Prompt

Hola a todos, estoy realizando una nueva herramienta con el Viewer en glut, de momento, cuando esté terminado utilizaré Qt para añadir usabilidad.

He escrito un post donde se pueden ver pruebas al cargar modelos Obj. Con textura difusa y de normales:
http://www.alvaromartin.net/2009/08/25/edge-detect-with-depth-buffer/

Justo ayer cambié el shader y lo mezclqué todo para utilizar mi Deferred Rendering. Dentro de poco añadiré más mapas, Ambient Oclussion, Specular Map, Height Map, tengo el cavity map pero no me aventuraré tanto.

Colgaré la tool para que todo el mundo la pueda usar, creo que es una buena herramienta que puede ayudar a muchos que usais zBrush ya que no es tan facil como exportar... De hecho en este modelo de zBrush hecho por Abral:
http://1.bp.blogspot.com/_kO5HZUzGXIE/SPM18_Bw6zI/AAAAAAAAAG0/6d1r2iVW6nQ/s1600-h/4313Dragon.jpg

La geometría resultante es complicada de renderizar en tiempo real y tiene cortes de la textura en sitios poco "buenos". En el post de mi blog doy más información.

Las pruebas son de mi Edge Antialias, no obstante me gustaría probar a hacerlo con las normales ya que ahora lo hago con el depth buffer y puede que no sea la mejor opción. Analizo 5 pixeles del depth buffer para analizar y marcar si hay un borde o no. Es un buen método que me dió buen resultado con la silueta y he conseguido hacerle un "truquito" para sacar los valores interiores de esa silueta. Algo parecido a cuando intentas hacer Bump Mapping:

vec4 bumpColor = texture2D(normalMap, gl_TexCoord[0].st) * 2.0 - 1.0;

La clave es ese * 2.0 - 1.0 que hace aumentar los valores para tener más distancia y así generar "mas sombreado". Es un truco habitual, lo mejor sería una textura más adaptada o valores más amplios, pero por regla general manejar un bumpColor "mayor" ensucia menos el código. Lo mismo he hecho con el depth map para los 5 pixeles y el resultado ha sido bueno, ha conseguido sacar la geometría de dentro de la silueta. Pero! hay un corte de la textura en el hombro derecho (solo aquí) que me tiene cabreado y me gustaría informarme acerca de como hacerlo con las normales. La teoría es muy sencilla:

if pixelPerpendicularValueToCamera > X then
    isEdge = true
end

Algo así :)

Prompt

Según me comenta un compañero del departamento de arte, los problemas del hombro son de UV y por exportar la malla desde zBrush con el LOD 0, hay que hacerlo con el LOD 1. Curioso asunto :)






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.