我对 ARKit 和 SceneKit 以及 3D 建模/Blender 2.8 非常陌生,所以请耐心等待,并对冗长的详细解释表示歉意,我只是觉得我错过了一些简单的东西,而且在线指南并不多,我可以找到有关如何执行此操作的信息。
我正在尝试使用 ARKit 和 Scenekit 构建自己的动话表情/拟我表情,并尝试将其导出到 .dae/.scn 并访问所有混合形状,以便能够使用 ARFaceAnchor 混合形状修改它们.
所以我的 3D 模型具有所有必要的混合形状:
我已将 3D 模型从 Blender 导出到 COLLADA (.dae),并选择了以下内容: 主要的 - 仅限选择, 包括形状键
几何- 应用修改器 - View 三角测量
如果我随后在文本编辑器中打开 .dae 文件,我可以在其中看到所有混合形状和 Material 。
然后,我将该文件导入到我的 .scnassets 文件夹中并获取以下实体:
在此阶段,我已设法找到一些示例 .scn 文件,其中包含作为几何变形器的搅拌器形状。然而,我的只包含以下内容,无法添加它们。
我设置了场景,SCNNode 工作正常,出现在 View 内。我在 SCCNode 中也找不到混合形状。
func sceneSetup() {
let scene = SCNScene()
DispatchQueue.main.async {
if let filePath = Bundle.main.path(forResource: "smiley_8.16-1", ofType: "dae", inDirectory: "Models.scnassets") {
let referenceURL = URL(fileURLWithPath: filePath)
self.contentNode = SCNReferenceNode(url: referenceURL)
self.contentNode?.load()
scene.rootNode.addChildNode(self.contentNode!)
}
}
sceneView.scene = scene
sceneView.allowsCameraControl = true
sceneView.backgroundColor = UIColor.gray
}
我假设我必须在某处设置 SCNMorpher 才能访问混合形状。但如果我能得到一些关于如何以及在哪里的指示。另外,如果有人知道如何将变形器设置为节点检查器中的属性,那就太好了。
最佳答案
您需要将 instance_controllers 添加到您的 Blender dae
文件中,以便 SceneKit
可以正确读取混合形状。您可以使用 this great tool在将文件导入到 SceneKit 之前修复它。然后,形状键出现在 Xcode SceneKit 编辑器中,您可以使用 SCNMorpher
类在代码中进行修改。
关于ios - 如何从 Xcode 中导入的 .dae 混合器访问混合形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57420620/