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.
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.htmlSupongo que ya los habrias visto, pero por si ;). Un saludor
mira en pdf/libros de shaders
http://www.cs.uni-magdeburg.de/~cgraf/NZ/C...t/Tutorial.htmlen 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.
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...
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.jpghttp://www.game.es/pantallazos/pantallas/0...32906/5_xxl.jpghttp://www.game.es/pantallazos/pantallas/0...32906/6_xxl.jpg
Aja... pues como puedes ver tu mismo
http://ps2media.gamespy.com/ps2/image/cowb..._051504_005.jpghttp://ps2media.gamespy.com/ps2/image/cowb..._051504_006.jpghttp://ps2media.gamespy.com/ps2/image/cowb..._051504_007.jpgEstos 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.htmhttp://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
puedes usar el cartoon reyes. Para renderizarlos con ese efecto.
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
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.
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:
(http://nehe.gamedev.net/data/lessons/lesson37.jpg)
un saludo
Wenooo... veremos que consigo... gracias gente! ;)