我对ARKit和SceneKit和3D建模/ Blender 2.8还是很陌生,所以请耐心等待,并为冗长的详细说明道歉,我只是觉得我缺少一些简单的东西,在线上没有很多指南我可以找到有关如何执行此操作的信息。
我正在尝试使用ARKit和Scenekit构建自己的animoji / memoji,并且尝试将其导出到.dae / .scn并访问所有Blend形状,以便能够使用ARFaceAnchor混合形状进行修改
所以我的3D模型具有所有必要的混合形状:
我已将3d模型从Blender导出到COLLADA(.dae),并选择了以下内容: 主要- 仅选择, 包括形状键
宝石- 应用修饰符-视图 三角剖分
如果我随后在文本编辑器中打开.dae文件,则可以在其中看到所有Blend形状和材料。
然后将文件导入到.scnassets文件夹中,并获得以下实体:
在此阶段,我设法找到了一些示例.scn文件,其中包含混合器形状作为几何变形器。但是,我的仅包含以下内容,无法添加它们。
我设置了场景,并且SCNNode正常工作,出现在视图内部。我也无法在此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来访问混合形状。但是,如果我能获得关于如何以及在何处的一些指导。另外,如果有人知道如何在节点检查器中将变形器设置为属性,那就太好了。
答案 0 :(得分:0)
您需要将 instance_controllers 添加到Blender dae
文件中,以便SceneKit
可以正确读取混合形状。您可以使用this great tool修复文件,然后再将其导入SceneKit。然后,形状关键点出现在Xcode SceneKit编辑器中,然后可以使用SCNMorpher
类在代码中进行修改。