Compartir a través de


Límites de objetos

Los límites de objetos representan el volumen que ocupa una entidad y sus elementos secundarios. En Azure Remote Rendering, los límites de objetos siempre se dan como cuadros de límite alineados por el eje (AABB). Los objetos enlazados pueden estar en el espacio local o en el espacio universal. En cualquier caso, siempre están alineados por el eje, lo que significa que las extensiones y el volumen pueden diferir entre la representación del espacio local y el espacio universal.

Consulta de los límites de objetos

El rectángulo de selección alineado con el eje local de una malla se puede consultar directamente desde el recurso de malla. Estos límites se pueden transformar en el espacio local o en el espacio universal de una entidad mediante la transformación de la entidad. Para más información, consulte Mallas.

Es posible calcular los límites de una jerarquía de objetos completa de esta manera. Ese enfoque requiere recorrer la jerarquía, consultar los límites de cada malla y combinarlos manualmente. Esta operación es tanto tediosa como ineficaz.

Una manera mejor es llamar a QueryLocalBoundsAsync o QueryWorldBoundsAsync en una entidad. Este enfoque descarga el cálculo en el servidor y devuelve resultados con un retraso mínimo.

public async void GetBounds(Entity entity)
{
    try
    {
        Task<Bounds> boundsQuery = entity.QueryWorldBoundsAsync();
        Bounds result = await boundsQuery;
    
        Double3 aabbMin = result.Min;
        Double3 aabbMax = result.Max;
        // ...
    }
    catch (RRException ex)
    {
    }
}
void GetBounds(ApiHandle<Entity> entity)
{
    entity->QueryWorldBoundsAsync(
        // completion callback:
        [](Status status, Bounds bounds)
        {
           if (status == Status::OK)
            {
                Double3 aabbMin = bounds.Min;
                Double3 aabbMax = bounds.Max;
                // ...
            }
        }
    );
}

Documentación de la API

Pasos siguientes