Hranice objektů
Hranice objektů představují svazek, který entita a její podřízené objekty zabírají. Ve službě Azure Remote Rendering jsou hranice objektů vždy uvedeny jako osu zarovnaná ohraničující pole (AABB). Hranice objektů můžou být buď v místním prostoru, nebo ve světě. V obou směrech jsou vždy zarovnané osou, což znamená, že rozsahy a objemy se můžou lišit mezi reprezentací místního a světového prostoru.
Dotazování hranic objektů
Místní osu zarovnanou ohraničující rámeček sítě se dá dotazovat přímo z prostředku sítě. Tyto hranice lze transformovat do místního prostoru nebo světa entity pomocí transformace entity. Další informace najdete v tématu Sítě.
Tímto způsobem je možné vypočítat hranice celé hierarchie objektů. Tento přístup vyžaduje procházení hierarchie, dotazování hranic pro každou síť a jejich ruční kombinování. Tato operace je zdlouhavá i neefektivní.
Lepší způsob je volat QueryLocalBoundsAsync
nebo QueryWorldBoundsAsync
na entitu. Tento přístup přesměruje výpočty na server a vrací s minimálním zpožděním.
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;
// ...
}
}
);
}