【发布时间】:2017-09-12 11:06:45
【问题描述】:
我正在尝试围绕 Apple 的 ARKit API 进行思考,我已将他们的 example ARKitExample project 推送到 GitHub。
在此演示/示例项目中,您将手机摄像头在您的环境中移动,它似乎会自动检测平面并在您的摄像头居中的位置放置一组“焦点方块”那个表面。如果您随后按下"+" UI 按钮并从多个对象(灯、杯子、花瓶等)中选择一个,它将渲染该虚拟对象以代替焦点方块。您可以在right here 中看到所有这些,这可能比我试图解释它更好!
我试图在代码中找到实际调用虚拟对象并在屏幕上呈现的位置。这将是在它被选中之后,我认为发生here:
@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)
}
但本质上,用户选择了一个虚拟对象,然后在焦点方块当前所在的任何地方渲染它——我正在寻找发生这种情况的地方,有什么想法吗?
【问题讨论】:
-
你很接近。
performSegue函数应该告诉您该操作发生在另一个ViewController中,在本例中为ViewController+ObjectSelection.swift,更具体地说,virtualObjectSelectionViewController(_: VirtualObjectSelectionViewController, didSelectObjectAt index: Int)。 -
谢谢@axelspark (+1) - 所以看起来
virtualObjectManager.loadVirtualObject是对象被加载到屏幕上特定位置的地方? -
它会被加载,但不会加载到设备屏幕上的特定位置。该函数的第三个参数将“屏幕局部”坐标转换为“真实世界全局”坐标,因此您可以将相机视图“移出设备屏幕”,但当您移动相机时,对象仍保持在同一位置返回
标签: ios swift augmented-reality arkit