Sdílet prostřednictvím


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

Dokumentace k rozhraní API

Další kroky