Aún no estoy seguro que sea error de FireMonkey, probablemente sea que estoy utilizando mal las funciones, la verdad soy nuevo en esto del 3D y me cuesta un poco de trabajo saber cuando utilizar AbsoluteToLocal3D, AbsoluteToLocalVector, AbsoluteToLocalDirection, y otro tanto de funciones. Sin embargo estaré en esa tarea hasta que termine el proyecto en el cual estoy enfocado, así que si es posible les estaré comentando lo que vaya aprendiendo.
Problema con la función RayCastIntersect
#21
Escrito 15 julio 2016 - 03:21
#22
Escrito 21 febrero 2022 - 12:45
Hola amigos.
Estoy haciendo una aplicación donde requiero conocer el punto de colisión de una esfera con otro objeto. hasta allí es sencillo.
Dada una posición inicial y la dirección del objeto se puede obtener el punto de colisión con la instrucción RayCastInteserct, el primer paso es cambiar la referencias de coordenadas de las globales, hacia el local.
Todo esto funciona perfectamente, incluso si el objeto de destino tiene rotaciones, sin embargo si el objeto de destino tiene una traslación, los cálculos ya no dan.
El ejemplo con la Objeto.position.Point := Point3D(0,1,0); ya no lo puede detectar.
Alguna idea? Gracias.
php
Position := Objeto.AbsoluteToLocal3D(Position); FDir := Vector3D(Objeto.AbsoluteToLocalVector(FDir)); Objeto.RayCastIntersect(Position, FDir, HitPos); Sphere1.Position.Point := Objeto.LocalToAbsolute3D(Objeto.AbsoluteToLocal3D(HitPos));
Quisiera saber, si con RayCastIntersect, o alguna otra cosa puedo detectar el choque de un Circle con una Rect. Tengo un proyecto donde necesito eso y he tenido que escribir como un loco a mano, verificando todo el tiempo las coordenadas. Se puede hacer mas simple con ese metodo o algo parecido?