Estaba echandole un vistazo al nveffectsbrowser, y me ha molao el cartoon shading.... pero parece que no soporta texturas... :triste: pq he cargao un archivo X q tenia una unica textura pero no me la saca... :'(
¿Alguien sabe si es posible hacer cartoon shading con modelos con texturas? ¿Algun ejemplo? :sonriendo:
PD: He estado pensado al respecto, y me huelo que lo que quiero hacer es imposible o una estupidez,.. pero weno, por preguntar q no quede :loco:
[ Este Mensaje fue editado por: Lord Trancos el 2002-06-06 00:40 ]
Una pregunta, que és el Cartoon Shading ?
gracias
Weno los de nVidia lo llaman Toon Shading, pero tambien lo he visto llamar Cell Shading
http://developer.nvidia.com/view.asp?IO=Toon_ShadingConsiste en renderizar un modelo con un sombreado como el de los dibujos animados
Bueno,
si te mola el cartoon shading del live! boxing, te puedo explicar como lo hice. Y si usas dos capas de textura, si podrias usar texturas, una para la iluminacion y otra para la textura. El Outline es lo mas facil de calcular.
Ale.
Jostras! muchas gracias. Pues no se como es el cartoon shading de ese juego, si me dices donde le puedo pegar un vistazo te podre decir si me gusta o no, pero lo mas seguro es que si me gustara :ojo:
Así q empiezo a preguntas. Lo haces en DX ? Necesita una tarjeta con soporte de pixel shaders ?
Citar
El 2002-06-06 00:31, Lord Trancos escribió:
Estaba echandole un vistazo al nveffectsbrowser, y me ha molao el cartoon shading.... pero parece que no soporta texturas... :triste: pq he cargao un archivo X q tenia una unica textura pero no me la saca... :'(
¿Alguien sabe si es posible hacer cartoon shading con modelos con texturas? ¿Algun ejemplo? :sonriendo:
PD: He estado pensado al respecto, y me huelo que lo que quiero hacer es imposible o una estupidez,.. pero weno, por preguntar q no quede :loco:
[ Este Mensaje fue editado por: Lord Trancos el 2002-06-06 00:40 ]
Hola, recien he llegado a este foro y no entiendo de estos temas pero he visto tu mensaje. Por casa tenia un programa que toma un modelo .mdl y lo procesa duplicandolo pero a un tamaño mayor y con las normales invertidas, esto produce el efecto de outline remarcado caracteristicos de los cartons. Luego le ponias una skin especial, simplificado y ya tienes el efecto ese..
Si te interesara esto deberias mirar el proyecto de sourceforge Run-Rabit-Quake donde estaban las src de esta utilidad. Igual te sirve de algo.
Por cierto, ese programa que hablas supongo que vendra en algun sdk ¿donde lo has descargado?.
Y luego... ¿de que sirve conocer efectos que solo puedes aplicar en una tarjeta concreta?
1 saludo
Tei
Pues le echare un vistazo tb.
El SDK me lo he bajado de nvidia.com (vas a la seccion de "Developer" y despues busca por ahi).
En ningun momento he dicho que solo sirva para una tarjeta.
Bueno, una respuesta rapida...
Lo dividimos en dos partes;
- Iluminacion, para calcularla se usa el algoritmo del environment maping, osea calcular la u y v de la texturas de ilumincaion para cada vertice segun su angulo con la luz. La textura debe ser un degradado de el color mas oscuro al color mas claro de arriba a la izquierda a abajo a la derecha, repectivamente.
- Outline, para calcular el outline yo use un sistema muy sencillo, miraba q caras enfrentaban la pantalla y a la vez q las metia en el index buffer para pintar, las marcaba como posibles bordes, luego recorria las q no se pintaban y miraba si alguna de las aristas del poligono se compartian, si eras asi, añadia la arista a una lista de lineas a pintar.
Ale.
Mirar que sistema de outline:
http://www.flipcode.com/articles/article_o...ctoutline.shtmlEs tan estúpidamente sencillo que parece mentira. Lo malo: que dibuja dos veces la malla. Preferiria otro método más rapido, como el que dice Gunder, pero bueno, echarle un vistazo.
Es para OpenGl.
[ Este Mensaje fue editado por: Loover el 2002-06-07 11:59 ]
Hay otro más estúpido todavía para el outline, pero es bastante más cutre.
Consiste en dibujar una segunda vez el objeto con el color constante del outline (negro por ejemplo), con el culling de caras invertido y con el test del zbuffer puesto a GL_LEQUAL (less or equal) en vez de GL_LESS.
Lo que hace es dibujar la parte trasera del objeto, que no pasa el test de z-buffer salvo en las aristas que forman el contorno (recordad, less or equal) y que por tanto se dibujan negras.
Gunder he intentado usar el metodo que me indicas para la iluminacion (he probado el outline que dice ithaqua, pero tal y como él indica es bastante cutre xD; aun tengo q probar el resto), pero todo el tema de las matematicas no lo controlo mucho y no se como hacerlo :triste:
Copiando de un ejemplo del SDK yo hacia en environment maping asi:
var _mat : TD3DXMatrix;
begin
// ...
with _mat do
begin
_11 := 0.25; _12 := 0.00; _13 := 0.00; _14 := 0.00;
_21 := 0.00; _22 :=-0.25; _23 := 0.00; _24 := 0.00;
_31 := 0.00; _32 := 0.00; _33 := 1.00; _34 := 0.00;
_41 := 0.50; _42 := 0.50; _43 := 0.00; _44 := 1.00;
end;
D3DDEV8.SetTransform(D3DTS_TEXTURE0, _mat);
D3DDEV8.SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
D3DDEV8.SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
He modificado ese codigo; probado a iniciar la matriz _mat con D3DXMatrixIdentity y despues modificandola con D3DXMatrixRotationYawPitchRoll pasandole para los valores Yaw Pitch Roll la direccion X Y y Z de la luz (es una luz direccional)
No se si lo que estoy haciendo se parece a lo que tengo que hacer o es una estupidez, pero el resultado es bastante psicodelico xDDDD y mola. Lastima que no sea lo que quiero hacer (cartoon shading)
¿Voy por buen camino? :loco: ¿o mas perdido que un pedo en un yakuzzi?
_________________
SaludoteZ de Lord Trancos!
www.dxlab.tk - programación de DirectX con Delphi.[ Este Mensaje fue editado por: Lord Trancos el 2002-06-08 17:40 ]
Teneis un ejemplo de Cartoon Rendering en el MSDN que usa vertex shaders, con grosor de línea variable:
http://msdn.microsoft.com/code/default.asp...ompositedoc.xmlY los fuentes en:
http://msdn.microsoft.com/library/en-us/dn...amples/Toon.exeEstá bastante bien explicado todo.
Ok, gracias. Lo probare a ver que tal.
Por cierto, los vertex shaders son para modificar los vertices sin tener que bloquear el vertex buffer, ¿no? ¿o tienen alguna utilidad mas?
En este caso servirían para calcular la U y V de cada vértice por hardware.
Ya lo se, me referia a su utilidad en general. De todos modos, el ejemplo en cuestion (no se pq) usa software processing...