次の方法で共有


オブジェクトの境界

オブジェクトの境界は、エンティティとその子が占めるボリュームを表します。 Azure Remote Rendering では、オブジェクトの境界は常に軸平行境界ボックス (AABB) として与えられます。 オブジェクトの境界は、ローカル空間またはワールド空間内に指定できます。 どちらの場合でも、これらは常に軸と平行です。つまり、エクステントとボリュームは、ローカルとワールドの空間表現で異なる場合があります。

オブジェクトの境界の照会

メッシュのローカル軸配置境界ボックスは、メッシュ リソースから直接クエリで問い合わせられます。 これらの境界は、エンティティの変換を使用して、エンティティのローカル空間またはワールド空間に変換できます。 詳細については、「メッシュ」を参照してください。

この方法で、オブジェクト階層全体の境界を計算できます。 このアプローチでは、階層を走査し、各メッシュの境界を照会し、それらを手動で結合する必要があります。 この操作は、煩雑で非効率的です。

より良い方法は、エンティティで QueryLocalBoundsAsync または QueryWorldBoundsAsync を呼び出すことです。 このアプローチでは、計算をサーバーにオフロードし、最小限の遅延で返します。

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

API ドキュメント

次のステップ