物件界限
物件界限代表實體及其子系佔用的磁碟區。 在 Azure 遠端轉譯 中,物件界限一律會指定為座標軸對齊周框方塊 (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;
// ...
}
}
);
}