Consultas de escena PhysX - Guía del usuario de Lumberyard

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Consultas de escena PhysX

Puede utilizar consultas de proyección de rayos (raycast) o de proyección de forma para determinar si un segmento de línea concreto hace intersección con la geometría física. Por ejemplo, puede que desee determinar qué objeto está delante de otro objeto o bien probar una línea de visión. En el caso de una proyección de forma, el segmento de línea tiene la forma deseada (por ejemplo, una esfera). Todas las consultas de escena se deben llevar a cabo en un objeto Physics::World. Para obtener más información, consulte Notas de programación del mundo PhysX.

Puede utilizar las consultas de escena para buscar objetos cercanos mediante los siguientes métodos.

nota

Las consultas de escena pueden tener un costo de rendimiento.

Raycast

Las consultas de proyección de rayos son las consultas de escena más habituales. Una consulta de proyección de rayos adopta un punto y dirección, con una distancia, y devuelve el colisionador más cercano que se cruza con el rayo.

ejemplo

La consulta de proyección de rayos solo tiene intersección con el pentágono.


                        Ejemplo de consulta de proyección de rayos en el mundo PhysX.

Para realizar una consulta de proyección de rayos, utilice WorldRequestBus.

ejemplo Proyección de rayos más cercana

Physics::RayCastRequest request; Physics::RayCastHit result; WorldRequestBus::BroadcastResult(result, &WorldRequests::RayCast, request);

También puede recuperar objetos que se cruzan con el rayo utilizando la versión múltiple.

ejemplo Proyección de rayos múltiple

Physics::RayCastRequest request; vector<Physics::RayCastHit> results; WorldRequestBus::BroadcastResult(result, &WorldRequests::RayCastMultiple, request);
nota

Puede especificar el número máximo de resultados que pueden recogerse de una consulta de RayCastMultiple. Puede especificar la propiedad Raycast Buffer Size (Tamaño del búfer de proyección de rayos) en la ventana PhysX Configuration (Configuración de Physx). Para obtener más información, consulte Configuración del mundo.

En las tablas siguientes se describen las propiedades de los objetos RayCastRequest y RayCastHit.

Propiedades de RayCastRequest
Propiedad Descripción

m_distance

Distancia máxima a lo largo del rayo para probar la existencia de intersecciones.

m_start

Punto del espacio del mundo donde comienza el rayo.

m_direction

Dirección de la proyección del rayo. Este vector debe estar normalizado.

m_collisionGroup

Especifica qué capas para probar. Utilice esto solo para probar capas específicas.

m_filterCallback

Función de devolución de llamada personalizada proporcionada por el juego para filtrar objetos específicos.

m_queryType

Incluya objetos estáticos, objetos dinámicos, o ambos.

Propiedades de RayCastHit
Propiedad Descripción
m_distance

Distancia a lo largo del rayo en la que se encontró el impacto.

m_position

Posición en el espacio del mundo del impacto.

m_normal

Normal en el espacio del mundo de la superficie del impacto.

m_body

Cuerpo que recibe el impacto.

m_shape

Forma en el cuerpo que recibe el impacto.

m_material

Forma en el cuerpo que recibe el impacto.

Shapecast

Un consulta de proyección de forma es similar a una consulta de Proyección de rayos salvo que adopta una forma, así como un punto y una dirección. La forma se barre a lo largo del rayo para formar un volumen. Todo lo que se cruce con este volumen se devuelve desde la consulta.

ejemplo

La consulta de proyección de forma tiene la forma de una esfera y se cruza con las entidades pentágono y rectángulo.


                        Ejemplo de consulta de proyección de forma en PhysX.

Para realizar una consulta de proyección de forma, utilice WorldRequestBus.

ejemplo Proyección de forma más cercana

Physics::ShapeCastRequest request; Physics::RayCastHit result; WorldRequestBus::BroadcastResult(result, &WorldRequests::ShapeCast, request);

Al igual que en la proyección de rayos, hay una versión múltiple para recuperar todos los objetos que se cruzan con el volumen.

ejemplo Proyección de forma múltiple

Physics::ShapeCastRequest request; vector<Physics::RayCastHit> results; WorldRequestBus::BroadcastResult(results, &WorldRequests::ShapeCastMultiple, request);
nota

Puede especificar el número máximo de resultados que pueden recogerse de una consulta de ShapeCastMultiple. Puede especificar el valor Shapecast Buffer Size (Tamaño del búfer de proyección de forma) en la ventana PhysX Configuration (Configuración de Physx). Para obtener más información, consulte Configuración del mundo.

Propiedades de ShapeCastRequest
Propiedad Descripción
m_distance

Distancia máxima a lo largo de la m_direction de prueba.

m_start

Transformación en el espacio del mundo donde comienza la proyección de forma.

m_direction

Dirección de proyección. El vector debe estar normalizado.

m_shapeConfiguration

Forma que debe barrerse a lo largo del rayo.

m_collisionGroup

Especifica qué capas para probar. Utilice esta propiedad solo para probar capas específicas.

m_filterCallback

Función de devolución de llamada personalizada proporcionada por el juego para filtrar objetos específicos.

m_queryType

Incluye estático, dinámico o ambos.

Overlap

Las consultas de solapamiento son más sencillas, ya que no tienen dirección o distancia. Las consultas de solapamiento simplemente devuelven todos los objetos que se cruzan con una forma en una ubicación especificada en el mundo. Solo hay una versión múltiple con este método.

ejemplo

La consulta de solapamiento tiene forma de esfera que se cruza con ambas entidades.


                        Ejemplo de consulta de solapamiento en PhysX.

ejemplo Solapamiento más cercano

Physics::OverlapRequest request; vector<Physics::OverlapHit> results; WorldRequestBus::BroadcastResult(results, &WorldRequests::Overlap, request);
nota

Puede especificar el número máximo de resultados que pueden recogerse de una consulta de Overlap. Puede especificar el valor Overlap Query Buffer Size (Tamaño del búfer de consulta de solapamiento) en la ventana PhysX Configuration (Configuración de Physx). Para obtener más información, consulte Configuración del mundo.

Propiedades de OverlapRequest
Propiedad Descripción
m_pose

Transformación en el espacio del mundo de la forma.

m_shapeConfiguration

Forma que se va a utilizar para el solapamiento.

m_collisionGroup

Especifica qué capas para probar. Utilice esto solo para probar capas específicas.

m_filterCallback

Función de devolución de llamada personalizada proporcionada por el juego para filtrar objetos específicos.

m_queryType

Incluye estático, dinámico o ambos.

Propiedades de OverlapHit
Propiedad Descripción

m_body

Cuerpo que recibe el impacto.

m_shape

Forma en el cuerpo que recibe el impacto.

m_material

Material en la forma que recibe el impacto.