Bagikan melalui


Batas objek

Batas objek mewakili volume yang ditempati entitas dan turunannya. Di Azure Remote Rendering, batas objek selalu diberikan sebagai kotak pembatas yang disejajarkan dengan sumbu (AABB). Batas objek dapat berada di ruang lokal atau di ruang dunia. Bagaimanapun, mereka selalu selaras sumbu, yang berarti tingkat dan volume mungkin berbeda antara representasi ruang lokal dan dunia.

Mengkueri batas objek

Kotak pembatas yang disejajarkan dengan sumbu lokal dari jala dapat dikueri langsung dari sumber daya jala. Batas-batas ini dapat ditransformasikan ke dalam ruang lokal atau ruang dunia dari suatu entitas menggunakan transformasi entitas. Untuk informasi selengkapnya, lihat Jala.

Dimungkinkan untuk menghitung batas seluruh hierarki objek dengan cara ini. Pendekatan itu memerlukan melintas hierarki, mengkueri batas untuk setiap jala, dan menggabungkannya secara manual. Operasi ini membosankan dan tidak efisien.

Cara yang lebih baik adalah memanggil QueryLocalBoundsAsync atau QueryWorldBoundsAsync pada suatu entitas. Pendekatan ini membongkar komputasi ke server dan kembali dengan penundaan minimal.

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

Dokumentasi API

Langkah berikutnya