jueves, abril 20, 2006

Y nos entregaron la casa

I'm happy

martes, abril 11, 2006

Determinando la silueta

Para generar sombras se debe extruir la silueta del modelo. Entonces el paso previo es determinar la silueta del modelo. Par esto sedebe encontrar aquellas aristas cuyo triangulos que la comparten apuntan en direcciones contrarias con respecto a la posición de la luz, es decir si uno de ellos apunta a un angulo visible por la luz y el otro no, entonces esa arista conforma parte de la silueta del modelo. Es por esta razón que se debe determinar cuales pares de triángulos pertenecen a cada arista. Entonces:
El primer paso es determiar esta relación, para lo cual se recorren las mallas del modelo, por cada malla se recore la lista de triángulos y por cada triángulo se genera 3 estructuras con dos indices de vértices y dos punteros a triángulo cada una.
Esta estructura es el Edge: struct { long v1, v2; triangle *t1,*t2; } Edge; Además se debe tener un lista de las aristas, estas relaciones no cambian, asi que se puede efectuar después de la carga del modelo. Entonces por cada par de vértices: si no se encuentra en la lista de aristas se agrega y se le conecta el triangulo, sino (si se encuentra el par ), entonces se le agrega el triángulo y se destruye la estructura de búsqueda. El problema de este algoritmo es que requiere que al modelo se le apliquen sus transformaciones locales, por lo tanto, se debe generar la matriz de transformacion y copiar sus vertices transformados en un arreglo auxiliar del mismo tamaño de l arreglo principal para efectuar los calculos de visibilidad con respecto a la luz. Una vez transformados todos los vertices se puede proceder a aplicar el prosducto punto entre la normal de cada traingulo de cada edge con respecto a la fuente de luz , si uno es positivo y el otro negativo, la arista forma parte de la silueta.