swift 修改模型以使用ARBodyTrackingConfiguration

ryoqjall  于 11个月前  发布在  Swift
关注(0)|答案(1)|浏览(80)

我一直在学习如何使用苹果的sample project执行3D身体跟踪。我的目标是用我自己的3D模型替换这个项目中的模型,我已经建立了匹配苹果的可用robot.usdz样本包含在该项目中。
我已经成功地将我的3D模型导入到Xcode中,在转换为USDZ后,并将模型附加到ARBodyAnchor。然而,我的模型(见附件截图)显示在预期的位置,但看起来完全错误。我使用以下代码加载模型:

var cancellable: AnyCancellable? = nil

cancellable = Entity.loadBodyTrackedAsync(named: "character/mytest").sink(
    receiveCompletion: { completion in
        if case let .failure(error) = completion {
            print("Unable to load model: \(error.localizedDescription)")
        }
        cancellable?.cancel()

        }, receiveValue: { (character: Entity) in
            if let character = character as? BodyTrackedEntity {
                character.scale = [0.5, 0.5, 0.5]
                self.character = character
                cancellable?.cancel()
            } else {
                print("Error: Unable to load model as BodyTrackedEntity")
            }
        })

字符串
当我将同一个模型简单地作为实体导入时,去掉身体跟踪,我可以将它附加到水平面或身体上,它可以正常加载。因此,为了3D跟踪的目的,模型中有些东西是错误的。
有人成功地将自定义3D模型加载到Xcode中用于身体跟踪吗?
x1c 0d1x(使用身体跟踪时模型外观不正确)

(仅作为实体添加时模型外观正确-此处未启用身体跟踪)

pxyaymoc

pxyaymoc1#

为AR身体跟踪准备自定义3D角色

要在实时ARKit/RealityKit mocap中使用自定义角色模型(而不是Apple的robot.usdz),请完成以下步骤(并仔细阅读Rigging a model for MoCap文章):

  • 从Apple开发者资源下载robot biped model
  • 在Autodesk Maya 2024中打开FBX机器人版本
  • 从 backbone 中解除网格绑定,然后去除机器人网格
  • 保持所有 backbone 的原生关节名称和关节层次不变
  • 将自定义网格导入Maya
  • 将自定义网格绑定到 backbone
  • 使用笔刷工具,为装配模型的每个关节绘制新的权重
  • 导出FBX角色(网格沿着骨骼系统)
  • 使用Reality Converter将您的自定义装配角色转换为USDZ模型
  • 太好了!

x1c 0d1x的数据
代码如下:

import SwiftUI
import RealityKit
import ARKit

struct ContentView : View {
    var body: some View {
        ARContainer().ignoresSafeArea()
    }
}

个字符
USDZ模型有两个着色器:OcclusionMaterial用于身体,SimpleMaterial用于衣领:


附言。

唯一的问题是,ARKit/RealityKit的实时MoCap非常不稳定(模型经常无法控制地摇晃),即使视觉系统清楚地区分跟踪的真实世界身体。

相关问题