Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





frustum a portal

Iniciado por Jackal, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Jackal

                                hola colegas. Estoy implementando un motor basado en portals y tengo el problema de crear el nuevo frustum contra cada nuevo portal. En mi programa, cada portal consta de 4 vértices.
El caso es que cuando quiero calcular el nuevo frustum algo me falla. El proceso que sigo es el siguiente:
- para cada 2 vértices del portal calculo su resta con el vector de vista de la cámara transformado a espacio objeto.
- con los 2 nuevos vectores resultantes calculo el producto cruzado contra el vector de dirección de cámara y ya tengo el plano (así construyo los 6 planos).

Creo que el fallo lo tengo en no saber cómo ordenar los puntos del portal para sacar los planos correctamente (top-left-right-buttom). Alguien puede ayudarme?

Gracias de antemano.                                

BeRSeRKeR

                                Para calcular los planos podrías hacer lo siguiente (que no sé si es exactamente lo que tú haces):

Suponiendo que el portal esté formado por ejemplo por los vértices consecutivos v1, v2, v3 y v4 y que tenemos la posición de la cámara en el vector "camPos", para calcular un plano para las aristas v1/v2 del portal sería:

vec1 = v1 - camPos
vec2 = v2 - camPos

// Producto vectorial
Normal = vec2 x vec1

// Normaliza la normal
Normaliza(Normal)

// Producto escalar
D = camPos * Normal

Y eso con todas las aristas del portal, es decir v1/v2, v2/v3, v3/v4 y v4/v1

Con eso supuestamente debería tener listos los planos de tu frustum (aunque yo no lo he probado)

Saludos

_________________
"Ninguna lágrima rescatará nunca a este mundo que se muere ni al sueño que se desvanece..."
http://www.planetquake.com/digitalys">DiGiTALYS TEAM

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-06-18 04:03 ]                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Jackal

                                Gracias Berserker, ya conseguí crear los planos y lo hice tal y como me comentas, aunque utilicé directamente funciones de la librería D3DX. De lo que me he percatado es que si no seleccionas correctamente los pares de vértices puede que algún plano se forme en base a la diagonal del cuadrado que forma el portal. Si quisiera ordenar los vértices, debería hacerlo para dos coordenadas (X-Z por ejemplo) o debo tener en cuenta las 3?

Gracias por tu ayuda de nuevo. Saludos                                

Ithaqua

                                Ten en cuenta que no siempre todos los planos del nuevo frustum van a ser los que se formen a partir del eyepoint y las aristas del portal. Habrá ocasiones donde tengas que conservar uno o más planos del frustum previo.


                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org






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.