Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Vanch en 21 de Diciembre de 2003, 12:28:51 AM

Título: Colisiones Con Traslaciones
Publicado por: Vanch en 21 de Diciembre de 2003, 12:28:51 AM
 Si todos los objetos que utilizo nunca muevo sus vertices, sino que los traslado con las funciones adecudas. Despues puedo detectar colisiones ?.

Grancias  :(  
Título: Colisiones Con Traslaciones
Publicado por: ProD en 21 de Diciembre de 2003, 01:08:58 PM
 Si por cada objeto tienes un bounding sphere o un bounding box tendrás que recalcularlos por cada transformación que hagas a los vértices.

Un saludo
Título: Colisiones Con Traslaciones
Publicado por: Vanch en 21 de Diciembre de 2003, 01:37:21 PM
 :(  :(  :( cachis ...  :(  :(  :(

es lo que me temia, mejor muevo los objetos 'fisicamente' (sus vertices) en vez de trasladarlos.

thanks.
Título: Colisiones Con Traslaciones
Publicado por: MChiz en 21 de Diciembre de 2003, 05:38:58 PM
 No acabo de entender muy bien tu pregunta.
Si te refieres a si puedes utilizar un bounding volume en varios sitios, trasladandolo, rotandolo y lo que quieras, si que puedes. Porque no?
Título: Colisiones Con Traslaciones
Publicado por: Vanch en 21 de Diciembre de 2003, 07:24:54 PM
 A ver si me explico mejor:

El objeto A se desplaza en hacia el fondo. Es decir:

( pseudocodigo )

PAINT

tanslateZ ( tZ );
Render ( objeto );
tZ--;

cada vez que se pinte el objeto, este se traslada cada vez más al fondo, pero sus coordenadas son las mismas. Si miro  objeto.vertices?[?] tendre siempre los mismo resultados, " no se movio 'fisicamente' ".

Si ahora quiero que choke este objeto con otro ? que comparo ? pueden colisionar visiblemente sin que comparando que sus coordenadas me lo chiven.

Un saludo.
Título: Colisiones Con Traslaciones
Publicado por: ALBSIM en 22 de Diciembre de 2003, 12:55:54 PM
  No entiendo lo que quieres decir, si el objeto se desplaza sobre el eje z, cómo no van a cambiar sus coordenadas, es decir, el objeto tiene un sist. de referecia local en el cual sus coordenadas no cambian, pero las traslaciones que le aplicas hacen que sus coordenadas de mundo sí lo hagan.
Título: Colisiones Con Traslaciones
Publicado por: MA]Mestre en 22 de Diciembre de 2003, 05:07:45 PM
 mi tampoco entender.

prueba con esto.

Un saludo.
Título: Colisiones Con Traslaciones
Publicado por: Loover en 23 de Diciembre de 2003, 01:43:31 AM
 La clave está en lo que te ha dicho Albsim. Estas confundiendo el sistema de referencia local del objeto (es decir, sus coordenadas locales respecto a un punto que suele ser el centro del objeto) con las coordenadas que ocupa una vez multiplicado por la matriz de mundo (una vez que está situado en algún sitio con una traslación, rotación o lo que sea).
Por supuesto que no cambian los valores cuando accedes a objeto.vertices?[?]. Esas son coordenadas locales ;)

Un saludo!
Título: Colisiones Con Traslaciones
Publicado por: BeRSeRKeR en 23 de Diciembre de 2003, 02:53:26 AM
 
Cita de: "Vanch"cada vez que se pinte el objeto, este se traslada cada vez más al fondo, pero sus coordenadas son las mismas. Si miro  objeto.vertices?[?] tendre siempre los mismo resultados, " no se movio 'fisicamente' ".
Son las mismas porque lo que se está transformando no es la copia de la geometría que tienes en memoria de sistema sino la copia que hay en la memoria de video. Si quieres tener una copia transformada, deberás transformar los vértices por tí mismo, multiplicándolos por la matriz de transformación.

Cita de: "Vanch"Si ahora quiero que choke este objeto con otro ? que comparo ? pueden colisionar visiblemente sin que comparando que sus coordenadas me lo chiven.

Para averiguar si dos objetos colisionan, puedes utilizar sus bounding volumes que siempre serán menos costosos de transformar. Otra cosa es que una vez sepas que ambos objetos han colisionado, quieras detectar la colisión triángulo-triángulo.

Saludos.