Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Advanced Toon Shading

Iniciado por Lord Trancos 2, 30 de Abril de 2005, 10:19:22 PM

« anterior - próximo »

Lord Trancos 2

 Wep!

Estoy intentando encontrar recursos sobre como conseguir un efecto de toon shading lo mas parecido al anime japones.

Lo unico que he encontrado son ejemplos bastante sencillos, donde suele flojear en especial el "outline".

Conoceis algun paper, libro, tutorial, chuleta, o lo que sea que trate el tema en profundidad?

Assias d'antemano.

pd. preferiblemente en OpenGL (+GLSL si hace falta), pero me da igual DirectX, HLSL, o lo que sea... mientras sea en tiempo real.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

ajmendoza

 http://www.cs.uni-magdeburg.de/~cgraf/NZ/C...t/Tutorial.html ¿eso?

En la web de opengili hay un tuto externo de introduccion a shading y al final ponen un ejemplo simple de toonshading. Este es el link: http://www.clockworkcoders.com/oglsl/tutorials.html

Supongo que ya los habrias visto, pero por si ;). Un saludor

seryu

 mira en pdf/libros de shaders

http://www.cs.uni-magdeburg.de/~cgraf/NZ/C...t/Tutorial.html


en general el ceel/toon shading tiene hoy dia mas de truco que de shader/tecnica. Si te fijas en juegos como zelda o jet set radio, veras que estan muy apoyados en el ladro del grafista (tanto en texturas como en las formas). Incluso el WOW sin llegar a ser cartoon si tiene esa misma estetica en sus escenarios, con un toon shading seguramente pareceria ya el mismismo zelda de gamecube.


Lord Trancos 2

 Erh.... el primer link tendre q mirarlo en detalle, pero no parece ser lo que quiero.
Quiero unos bordes finos y no esas enormes manchas negras.

El segundo; tampoco lo es. Bueno,... si lo es, pero solo para el "relleno".
Como ya he comentado la parte mas floja q suelo ver es la del "outline".

Busco un poco un documento q entre mas en detalle...

Aplicandole algoritmos como los que has puesto a mi modelo 3D, veo que tengo que mejorar el rostro (pq la cara le desaparece) y que el outline deja que desear bastante....

Asi que me surgen dudas... como por ejemplo:
- Es bueno mezclar texturas + el efecto toon shading para darle un rostro?
- Como consigo un outline finito? No quiero el tipico outline que solo aparecen en los bordes, y deja manchas negras en la parte mas oscura. Ademas, necesito un outline en el cambio de material....

no se...

busco algo mas que el tipico ejemplo de toon shading...
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

seryu

 Definitivamente un rostro debe mezclar texturas y el toon, ya que de lo contrario perderas toda la expresividad de una mirada.

De todas formas, creo que todavia no entiendo exactamente lo que buscas. Quizas si explicas exactamente lo que quieres, te puedan echar una mano.


Quieres personajes con este look?

http://www.game.es/pantallazos/pantallas/0...32906/4_xxl.jpg

http://www.game.es/pantallazos/pantallas/0...32906/5_xxl.jpg

http://www.game.es/pantallazos/pantallas/0...32906/6_xxl.jpg



Lord Trancos 2

on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

seryu

 Aja... pues como puedes ver tu mismo

http://ps2media.gamespy.com/ps2/image/cowb..._051504_005.jpg
http://ps2media.gamespy.com/ps2/image/cowb..._051504_006.jpg
http://ps2media.gamespy.com/ps2/image/cowb..._051504_007.jpg

Estos juegos lo 'unico' que hacen es pintar la linea exterior del modelo, mientras que el modelo en si tiene una textura del estilo cartoon, y es una buena solucion cuando vas a ejecutar el juego en un hardware tan limitado como puede ser la ps2 (y no queda mal, la verdad).

Si fuera tu, me concentraria en dibujar unicamente la silueta del modelo, como comentan en esta pagina:

http://www.cgl.uwaterloo.ca/~jiexu/Assignment2.htm
http://www.cgl.uwaterloo.ca/~mmwasile/cs798/as2/

o esta:

http://www.geocities.com/tom_j_hall/


Y si quieres buscar entre paginas y paginas:

http://www.red3d.com/cwr/npr/


Resumiendo, para el efecto que me comentas yo lo haria con:

·Un modelo con texturas tipo cartoon, no necesitan shader alguno para ser dibujadas, aunque segun que partes del cuerpo si te puede interesar aplicarle un shader para tratar la iluminacion/sombras o simplemente cambiarle la textura.

·Dibujar la silueta del personaje. Yo te recomiendo que le pongas un trazo gordo, como las capturas del tales of symphonia que te enseñe, queda mas chulo  :P  

averbell

 puedes usar el cartoon reyes. Para renderizarlos con ese efecto.

ethernet

 Nehe tiene un tuto de cell-shading en el que pone bordes, aunque no sé realmente si necesitas algo más que:


void RenderOutlines(float grosor,Mesh* m)
{
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);

glLineWidth(grosor);
m->Render();

}


saludos

DraKKaR

Cita de: "ethernet"Nehe tiene un tuto de cell-shading en el que pone bordes, aunque no sé realmente si necesitas algo más que:


void RenderOutlines(float grosor,Mesh* m)
{
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);

glLineWidth(grosor);
m->Render();

}


saludos
Creo que ese código te dibujará todos los bordes de todos los polígonos que forman el modelo, no so la silueta.

Lo más sencillo es usar el truco de renderizar las caras traseras de la misma malla "engordada" y pintada de negro.

ethernet

 Es cierto, no me había dado cuenta del detalle del resto de polígonos.. :P Nehe hace lo siguiente:
( http://nehe.gamedev.net/data/lessons/lesso...n.asp?lesson=37 )


// Outline Code
if (outlineDraw)     // Check To See If We Want To Draw The Outline
{
 glEnable (GL_BLEND);    // Enable Blending
 // Set The Blend Mode  
 glBlendFunc (GL_SRC_ALPHA ,GL_ONE_MINUS_SRC_ALPHA);

 glPolygonMode (GL_BACK, GL_LINE);  // Draw Backfacing Polygons As Wireframes
 glLineWidth (outlineWidth);   // Set The Line Width

 glCullFace (GL_FRONT);    // Don't Draw Any Front-Facing Polygons

 glDepthFunc (GL_LEQUAL);   // Change The Depth Mode

 glColor3fv (&outlineColor[0]);   // Set The Outline Color

 glBegin (GL_TRIANGLES);    // Tell OpenGL What We Want To Draw

  for (i = 0; i < polyNum; i++)  // Loop Through Each Polygon
  {
   for (j = 0; j < 3; j++)  // Loop Through Each Vertice
   {
    // Send The Vertices
    glVertex3fv (&polyData[i].Verts[j].Pos.X);
   }
  }

 glEnd ();  
               glDepthFunc (GL_LESS);    // Reset The Depth-Testing Mode

 glCullFace (GL_BACK);    // Reset The Face To Be Culled

 glPolygonMode (GL_BACK, GL_FILL);  // Reset Back-Facing Polygon Drawing Mode

 glDisable (GL_BLEND);    // Disable Blending
}



y queda bastante bien:





un saludo

Lord Trancos 2

 Wenooo... veremos que consigo... gracias gente! ;)
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)






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.