개체 경계
개체 경계는 엔터티 및 해당 자식이 차지하는 볼륨을 나타냅니다. 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;
// ...
}
}
);
}