你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
对象边界
对象边界表示实体及其子对象占用的空间量。 在 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;
// ...
}
}
);
}