Si todos los objetos que utilizo nunca muevo sus vertices, sino que los traslado con las funciones adecudas. Despues puedo detectar colisiones ?.
Grancias :(
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
:( :( :( cachis ... :( :( :(
es lo que me temia, mejor muevo los objetos 'fisicamente' (sus vertices) en vez de trasladarlos.
thanks.
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?
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.
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.
mi tampoco entender.
prueba con esto.Un saludo.
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!
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.