ARKit – 在 Motion Capture RealityKit 中复制机器人角色

Ame*_*mza 9 augmented-reality swift arkit mo-cap realitykit

我正在尝试制作一个 3d 模型,例如 Apple 在 Motion Capture 示例中提供的机器人(在 WWDC 2019 中显示),它可以通过替换 Apple 提供的机器人角色来模仿我在动作捕捉 ARKit 3.0 中的动作。

所需的解决方案:

  • 苹果有没有什么特殊的软件可以用来创建robot.usdz文件?如果是,那么请提供详细信息?

  • 我们怎样才能转换格式,如.glb/ .gltf/ .obj/.dae文件来.usdz使用苹果的基于Python的工具,而不影响它的场景图?

  • 我们如何.usdz在 Xcode 中编辑文件的场景图并将更改成功保存到 .usdz 文件中?

ARG*_*Geo 3

为 AR 应用程序创建您自己的 MoCap 模型

\n
    \n
  • 在 Autodesk Maya 2024 中导入或创建角色
  • \n
  • 下载Apple的双足机器人模型
  • \n
  • 解除网格与骨架的绑定并删除机器人网格
  • \n
  • Skin使用\xe2\x80\x93Bind Skin菜单将骨架绑定到你的角色
  • \n
  • 将模型导出为 FBX 文件格式
  • \n
  • 在 Reality Converter 中将导出的 FBX 模型转换为 USDZ
  • \n
\n

在此输入图像描述

\n

在 RealityKit 中加载 MoCap 模型:

\n
import RealityKit\nimport ARKit\n\nclass ViewController: UIViewController, ARSessionDelegate {\n\n    @IBOutlet var arView: ARView!\n    \n    var character: Entity?\n    let characterAnchor = AnchorEntity()\n    \n    override func viewDidAppear(_ animated: Bool) {\n        super.viewDidAppear(animated)\n\n        arView.session.delegate = self\n\n        guard ARBodyTrackingConfiguration.isSupported\n        else { fatalError("MoCap is available on A12 & later") }\n        \n        let config = ARBodyTrackingConfiguration()\n        arView.session.run(config)\n        arView.scene.addAnchor(characterAnchor)\n        \n        character = try? Entity.load(named: "character")\n    }\n    \n    func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {\n        \n        for anchor in anchors {\n            \n            guard let bodyAnchor = anchor as? ARBodyAnchor\n            else { continue }\n\n            let bodyPosition = simd_make_float3(bodyAnchor.transform.columns.3)\n            characterAnchor.position = bodyPosition\n            characterAnchor.orientation = Transform(matrix: bodyAnchor.transform).rotation\n\n            if let character = character, character.parent == nil {\n\n                characterAnchor.addChild(character)\n                characterAnchor.scale = [0.02, 0.02, 0.02]\n            }\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n