Ir al contenido


Foto

Problema con la función RayCastIntersect

Delphi 3D FireMonkey Games

  • Por favor identifícate para responder
21 respuestas en este tema

#21 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 mensajes
  • LocationCali, Colombia

Escrito 15 julio 2016 - 03:21

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.


  • 0

#22 zealot2

zealot2

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

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
  1. Position := Objeto.AbsoluteToLocal3D(Position);
  2. FDir := Vector3D(Objeto.AbsoluteToLocalVector(FDir));
  3.  
  4. Objeto.RayCastIntersect(Position, FDir, HitPos);
  5.  
  6. Sphere1.Position.Point :=
  7. 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?


  • 0





Etiquetado también con una o más de estas palabras: Delphi, 3D, FireMonkey, Games

IP.Board spam blocked by CleanTalk.