首页 > 解决方案 > Apple ARKit 坐标空间与 VRM 模型不匹配

问题描述

我正在使用 VRM 模型使用 Swift Arkit 进行面部跟踪,但我导入的模型向后看(反向 Z 轴)并且旋转反向工作。据我了解,VRM 使用右手 Y-UP(OpenGL 标准)坐标空间,但 ARKit 使用左手 Y-UP。如何同步这两个系统并正确运行跟踪。谢谢!

//Imported model is added to ARSCNView 
open class AvatarView: ARSCNView {
  ...
  private func setUp(node: VRMNode) {
    let scene = SCNScene()
    scene.rootNode.addChildNode(node)
    self.scene = scene
  }
 ...
}

//Render the head node of the model for face tracking.
extension ViewController: ARSCNViewDelegate {
    

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
    guard anchor is ARFaceAnchor else { return nil }

    return self.avatarView.avatar.humanoid.node(for: .head)
}

}

标签: iosswiftarkitcoordinate-transformationgltf

解决方案


推荐阅读