Condividi tramite


Limiti degli oggetti

I limiti degli oggetti rappresentano il volume occupato da un'entità e dai relativi elementi figlio. In Rendering remoto di Azure i limiti degli oggetti sono sempre assegnati come rettangoli delimitatori allineati all'asse (AABB, Axis Aligned Bounding Box). I limiti degli oggetti possono trovarsi nello spazio locale o nello spazio globale. In entrambi i casi, sono sempre allineati all'asse, il che significa che gli extent e il volume possono differire tra la rappresentazione dello spazio locale e globale.

Esecuzione di query sui limiti degli oggetti

Il rettangolo di delimitazione allineato all'asse locale di una mesh può essere sottoposto a query direttamente dalla risorsa mesh. Questi limiti possono essere trasformati nello spazio locale o nello spazio globale di un'entità usando la trasformazione dell'entità. Per altre informazioni, vedere Mesh.

È possibile calcolare i limiti di un'intera gerarchia di oggetti in questo modo. Questo approccio richiede l'attraversamento della gerarchia, l'esecuzione di query sui limiti per ogni mesh e la combinazione manuale. È un'operazione noiosa e poco efficiente.

Un metodo più efficiente consiste nel chiamare QueryLocalBoundsAsync o QueryWorldBoundsAsync su un'entità. Questo approccio esegue l'offload del calcolo nel server e restituisce con un ritardo minimo.

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;
                // ...
            }
        }
    );
}

Documentazione sull'API

Passaggi successivi