9

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

所需的解决方案:

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

  • 我们如何在不影响它的场景图的情况下将.glb/ .gltf/ .obj/.dae文件等格式转换为使用 Apple 基于 Python 的工具?.usdz

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

4

1 回答 1

2

工作 ARKit 的 MoCap 解决方案


  • 在 Autodesk Maya 2020 中创建角色
  • 下载 Apple 的模型 Biped 骨架并将其导入 Maya
  • 适当地装配 Apple 的骨骼以进行动作捕捉
  • Skin使用-<code>Bind Skin将骨架绑定到网格
  • 在 Outliner 中选择骨架和网格并使用File-<code>Game Exporter
  • 选择文件类型:Binary和版本:FBX 2020然后按Save

在此处输入图像描述

然后下载USDZ Tools for Xcode 12FBX Python SDK

这是我的POST,您可以在其中找到如何.zshrc在 macOS 中创建文件的说明。

测试 MoCap 模型:

import RealityKit
import ARKit

class ViewController: UIViewController, ARSessionDelegate {

    @IBOutlet var arView: ARView!
    
    var character: Entity?
    let characterAnchor = AnchorEntity()
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        arView.session.delegate = self

        guard ARBodyTrackingConfiguration.isSupported
        else { fatalError("MoCap is available on A12 & later") }
        
        let config = ARBodyTrackingConfiguration()
        arView.session.run(config)
        arView.scene.addAnchor(characterAnchor)
        
        character = try? Entity.load(named: "character")
    }
    
    func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
        
        for anchor in anchors {
            
            guard let bodyAnchor = anchor as? ARBodyAnchor
            else { continue }

            let bodyPosition = simd_make_float3(bodyAnchor.transform.columns.3)
            characterAnchor.position = bodyPosition
            characterAnchor.orientation = Transform(matrix: bodyAnchor.transform).rotation

            if let character = character, character.parent == nil {

                characterAnchor.addChild(character)
                characterAnchor.scale = [0.02, 0.02, 0.02]
            }
        }
    }
}
于 2020-01-04T19:49:27.690 回答