por deCorvett » Mar Ene 27, 2004 1:15 pm
Aprovecho ahora para hacer públicos los resultados de las investigaciones que he realizado hasta el momento sobre las dichosas texturas alpha.
Para mi investigación, he creado un diseño sencillo, que he llamado Versace, formado por un cubo exterior y un segundo cubo flipado, material transnorm. En su interior he colocado otro cubo, material alphanorm, y dentro de éste, una caja, en material transhalfbright.
Versace ha sido creado en TSM, y a su vez, en GMax. Después, han sido comparados ambos shapes a través del Wordpad de Windows.
Tras desentramar el formato de los archivos .s, y las diferencias de éstos archivos con respecto a los mismos realizados con otros programas (en mi caso, GMax) He llegado a la teoría siguiente, teoría que, imagino, puede tener el mismo acierto que ninguno, pero que, a priori, puede explicar por qué el comportamiento de los materiales alpha en el simulador.
Sólo hay dos diferencias sustanciales entre el mismo modelo en GMax y TSM; ambas afectan al comportamiento de las transparencias en el simulador.
La primera de ellas, es el apartado Sort_vectors. Parece ser, aunque no puedo asegurarlo, que éste apartado indica la posición relativa del centro de cada objeto con respecto a MAIN. La conclusión lógica que se puede extraer de esta suposición es que indica al simulador el punto exacto en que cada pieza se encuentra dentro del entorno simulado, por lo que indicará al simulador lo que se encuentra detrás del objeto para cada posición del observador. Es por esto que, al carecer el .s de TSM de estos vectores, no muestra nada detrás de un canal alpha. De este planteamiento puede surgir la siguiente pregunta: ¿Por qué muestra entonces el terreno?
A esa pregunta no le he encontrado respuesta, aunque teorizando sobre ello, a la única conclusión a la que he podido llegar es que dibuja de forma distinta el "fondo" (entiéndase el terreno) y los objetos. Para el fondo únicamente necesita la posición absoluta del objeto, pero para los objetos utiliza las posiciones relativas de las piezas con material alpha. Parece ser que para el material Trans, en cambio, si que emplea las posiciones absolutas. ¿Error de programación o error de mi teoría?
La segunda diferencia, lo que hace es justificar mi anterior exposición. Dentro de la sección Lod_controls parece ser que en esta sección el .s indica qué polígonos crear de acuerdo a los vectores y puntos indicados en las secciones anteriores. En GMax esta sección está dividida para cada LOD en subobjetos, uno para cada pieza diseñado en GMax. Esto en TSM no ocurre así; para cada LOD, se define un único objeto definiendo todas las piezas diseñadas para ese LOD. Por lo tanto, si TSM define todos los objetos en uno, es imposible que defina posiciones relativas para cada objeto.
Por lo tanto, la única conclusión posible a raíz de esta teoría es que no es posible obligar a un modelo hecho en TSM (versión 1.1 o anterior) a que muestre los objetos detrás de un material alpha.
Lo que si se puede hacer es trampear al simulador. Hay un modo en que el simulador utilice las posiciones absolutas en lugar de las relativas. Este método, sin embargo, no muestra correctamente los objetos, los muestra, bien dibujados, pero sin embargo no les aplica la máscara del alpha que está delante. Para entendernos, lo que hace éste método es dibujar los objetos como si la pieza con material Alpha no existiera.
El método es bien sencillo, teniendo que estar el material alpha como pieza separada de otros materiales. Esto implica que las zonas transparentes o semitransparentes de una textura sean piezas separadas de las zonas opacas de la textura. Esto exige que, en el modelo de un coche de viajeros, por ejemplo, la carrocería del mismo (incluyendo marcos de ventanas, gomas, etc) sea una pieza (o varias) en material Transnorm. Separado en otra pieza se encontrará el cristal de las ventanas, en material alphanorm, y el interior de la carrocería, al igual que el exterior, una o varias piezas en material transnorm. El resto de piezas que compongan el diseño es indiferente el tipo de material que posean, siempre que se respeten escrupulosamente los materiales anteriormente indicados.
Partiendo de esta premisa, y una vez exportado el diseño al simulador, abriremos el .s y buscaremos la sección prim_states del archivo. Dentro de esta sección buscaremos la definición de textura del material alphanorm de los cristales. encontraremos una línea como la que sigue:
prim_state NOMBREDELA PIEZAOSUSUPERIORENJERARQUIA_AlphNorm ( 00000000 0
tex_idxs ( x x ) x x x x 1
)
Donde x será un número variable para cada elemento. nos fijaremos en el último dígito. Siempre será 1, pero nosotros lo reemplazaremos por 3. Guardaremos el .s
Con esto lograremos el efecto que muestro en las capturas adjuntas. Como véis, aunque no aplique la máscara del alpha a los objetos, si que se lo aplica al fondo, con lo que el efecto conjunto de los objetos con el fondo, en la mayoría de los casos, disimula perfectamente este defecto.
Pienso seguir estudiando los .s, y creo que al final si que se podrá solucionar esta gravísima carencia del TSM; no obstante, de momento los usuarios de TSM podremos mejorar la calidad visual de nuestros diseños.
- Adjuntos
-
- Composición doble de Versaces, para comprobar el funcionamiento de dos objetos superpuestos. Observad que en efecto, se aplica dos veces la máscara alpha sobre el fondo, pero ninguno de los objetos se oscurece
- Doble Versace.jpg (47.49 KiB) Visto 25193 veces
Un saludo,
Rafa (deCorvett)