首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARKit API实例

ARKit API实例
EN

Stack Overflow用户
提问于 2017-09-12 11:06:45
回答 1查看 582关注 0票数 0

我正试图把我的头脑集中在苹果的ARKit API上,我已经把他们的项目推向了GitHub。

在这个演示/样例项目中,你移动你的手机相机在你的环境,它似乎自动检测平面和放置一组“焦点广场”在你的相机是在这个表面的中心位置。如果然后按下一个"+" UI按钮,并从几个对象(灯、杯子、花瓶等)中选择一个。它将用虚拟物体代替焦点方块。你可以在行动中看到所有这些,就在这里,这可能比我试图解释它更好!

我试图在代码中找到在屏幕上实际调用和呈现虚拟对象的位置。这将是在它被选中之后,我认为这发生在这里

代码语言:javascript
复制
@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)
}

但本质上,用户选择一个虚拟对象,然后在焦点广场当前所在的地方呈现出来--我在寻找这种情况发生的地方,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-12 13:44:22

它将virtualObject实例(它是SCNNode的子类)添加为SCNScene的根节点的子节点:

代码语言:javascript
复制
    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)
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46174840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档