Limites dos objetos
Os limites de objeto representam o volume que uma entidade e seus filhos ocupam. Na Renderização Remota do Azure, os limites de objeto são sempre fornecidos como caixas delimitadoras alinhadas por eixo (AABB). Os limites de objeto podem estar no espaço local ou no espaço mundial. De qualquer forma, eles estão sempre alinhados por eixos, o que significa que as extensões e o volume podem diferir entre a representação espacial local e mundial.
Consultando limites de objeto
A caixa delimitadora alinhada ao eixo local de uma malha pode ser consultada diretamente do recurso de malha. Esses limites podem ser transformados no espaço local ou no espaço mundial de uma entidade usando a transformação da entidade. Para obter mais informações, consulte Malhas.
É possível calcular os limites de toda uma hierarquia de objetos dessa maneira. Essa abordagem requer percorrer a hierarquia, consultar os limites de cada malha e combiná-los manualmente. Esta operação é tediosa e ineficiente.
Uma maneira melhor é chamar QueryLocalBoundsAsync
ou QueryWorldBoundsAsync
chamar uma entidade. Essa abordagem descarrega a computação para o servidor e retorna com atraso 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;
// ...
}
}
);
}