Limites do objeto
Os limites do objeto representam o volume que uma entidade e seus filhos ocupam. No Azure Remote Rendering, os limites do objeto são sempre fornecidos como AABB (caixas delimitadoras alinhadas do eixo). Os limites do objeto podem estar no espaço local ou no espaço de mundo. De qualquer forma, eles são sempre alinhados por eixo, o que significa que as extensões e o volume podem ser diferentes entre a representação de local espaço mundial.
Como consultar limites do objeto
A caixa delimitadora alinhada do eixo local de uma malha pode ser consultada diretamente no recurso da malha. Esses limites podem ser transformados no espaço local ou no espaço de mundo de uma entidade usando a transformação da entidade. Para mais informações, confira Malhas.
É possível computar os limites de uma hierarquia de objetos inteira dessa forma. Essa abordagem requer percorrer a hierarquia, consultar os limites de cada malha e combiná-los manualmente. Essa operação é entediante e ineficiente.
Um modo melhor é chamar QueryLocalBoundsAsync
ou QueryWorldBoundsAsync
em uma entidade. Essa abordagem descarrega a computação para o servidor e retorna com o mínimo de atraso.
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;
// ...
}
}
);
}