我在 Blender 中创建了一个对象(一张脸),将其导出为 .obj,然后使用 RealityConverter 将其制作为 .usdz 文件。
我将 .usdz 文件导入到我的 Xcode 项目中。这就是我尝试将 Blender 对象锚定到用户面部的方式:
let cat = try! Entity.loadAnchor(named: "alienCat")
uiView.scene.addAnchor(cat)
当我将上面的代码与我在 Reality Composer 中创建的简单对象一起使用时,它按预期工作并且完美地锚定在用户的脸上。
但是当我用我从 Blender 定制的 .usdz 文件尝试相同的代码时,该对象没有出现在屏幕上。
当我旋转手机时,我看到一个放大的大版本漂浮在上方。我附上了2张截图:
当我运行代码时,这是我在 Xcode 控制台中得到的错误:
Warning: in AppendProperty at line 858 of sdf/path.cpp -- Can only append a property 'preliminary:anchoring:type' to a prim path (/)
Warning: in AppendProperty at line 858 of sdf/path.cpp -- Can only append a property 'triggers' to a prim path (/)
我相信我的错误源于我在 Blender 中创建我的 .obj。如果可能的话,我想在 Blender 中修复这些错误。目标只是导入一个 .usdz,它按预期工作。此处发布了一个答案:RealityKit – Andy Jazz 在 ARView 中放置模型时获取运行时警告。他说
If you setup a preliminary anchoring for USDZ model, then Xcode will not print such warnings.
有没有办法在 Blender 中设置这个初步锚定?
如何消除这些错误并将我的 .usdz 对象按预期放置在脸上,并且大小合适?
从 Blender 或 Maya 导出时,模型的比例默认为
100:1
(因为您以厘米比例导出模型,而不是 RealityKit 的米比例)。运行面部跟踪,面具的枢轴点和面具表面之间的距离总是大于 0,这意味着在 100:1
的比例下,这个距离增加了一百倍。还要检查哪个轴朝上:+Y 或 +Z。
anchor.scale /= 100