我正试图把我的头脑集中在苹果的ARKit API上,我已经把他们的项目推向了GitHub。
在这个演示/样例项目中,你移动你的手机相机在你的环境,它似乎自动检测平面和放置一组“焦点广场”在你的相机是在这个表面的中心位置。如果然后按下一个"+" UI按钮,并从几个对象(灯、杯子、花瓶等)中选择一个。它将用虚拟物体代替焦点方块。你可以在行动中看到所有这些,就在这里,这可能比我试图解释它更好!
我试图在代码中找到在屏幕上实际调用和呈现虚拟对象的位置。这将是在它被选中之后,我认为这发生在这里
@IBAction func chooseObject(_ button: UIButton) {
// Abort if we are about to load another object to avoid concurrent modifications of the scene.
if isLoadingObject { return }
textManager.cancelScheduledMessage(forType: .contentPlacement)
performSegue(withIdentifier: SegueIdentifier.showObjects.rawValue, sender: button)
}但本质上,用户选择一个虚拟对象,然后在焦点广场当前所在的地方呈现出来--我在寻找这种情况发生的地方,有什么想法吗?
发布于 2017-09-12 13:44:22
它将virtualObject实例(它是SCNNode的子类)添加为SCNScene的根节点的子节点:
func virtualObjectSelectionViewController(_: VirtualObjectSelectionViewController, didSelectObjectAt index: Int) {
guard let cameraTransform = session.currentFrame?.camera.transform else {
return
}
let definition = VirtualObjectManager.availableObjects[index]
let object = VirtualObject(definition: definition)
let position = focusSquare?.lastPosition ?? float3(0)
virtualObjectManager.loadVirtualObject(object, to: position, cameraTransform: cameraTransform)
if object.parent == nil {
serialQueue.async {
self.sceneView.scene.rootNode.addChildNode(object)
}
}
}https://stackoverflow.com/questions/46174840
复制相似问题