You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Reality Kit获取USDZ Entity的metersPerUnit元数据?

获取USDZ的metersPerUnit元数据(RealityKit/MDLAsset)

当然可以获取这个元数据,两种常用路径:

从MDLAsset直接读取

如果已经将USDZ加载为MDLAsset,可以直接通过unitScale属性拿到对应的值——这个属性和USDZ里的metersPerUnit完全对应(比如你遇到的0.01会直接返回)。

代码示例:

guard let asset = MDLAsset(url: yourUSDZURL) else { return }
let metersPerUnit = asset.unitScale

如果unitScale无法满足需求,还可以尝试直接读取USD的元数据属性:

if let metersPerUnitProp = asset.property(with: "metersPerUnit"),
   let metersPerUnit = metersPerUnitProp.floatValue {
    // 使用metersPerUnit
}

从RealityKit Entity追溯获取

如果已经加载成Entity(通常是ModelEntity),可以从它的模型资源关联到底层的MDLMesh,再拿到对应的MDLAsset,进而获取metersPerUnit:

代码示例:

guard let modelEntity = loadedEntity as? ModelEntity,
      let mdlMesh = modelEntity.model?.mesh as? MDLMesh,
      let asset = mdlMesh.asset else {
    return
}
let metersPerUnit = asset.unitScale

拿到metersPerUnit后,你可以把visualBounds返回的尺寸乘以这个值,转换成统一的米单位,这样不同单位的实体边界就具备可比性了。

内容的提问来源于stack exchange,提问作者Marcus Raty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:04:55