MixedRealityKit 0.1.7

MixedRealityKit 0.1.7

测试已验证
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2017 年 9 月
SwiftSwift 版本"4.0"
SPM支持 SPM

Scott Finkelstein 维护。



  • Scott Finkelstein

将立体 ARKit SceneView 简单添加到您的项目的常用方法。

MixedRealityKit 类扩展了 ARSCNView,并将相机分割成两个立体 SceneView。适用于 Google Cardboard 或支持非桶形畸变 VR 的任何 VR 观看器。

虚拟现实演示(封闭房间场景) 虚拟现实示例

混合现实演示(在现实世界中查看虚拟对象) 虚拟现实示例

为使用 MixedRealityKit 设置新项目

  1. 添加到您的 Podfile

pod 'MixedRealityKit'

  1. 在终端中,导航到您的项目文件夹,然后

pod update

pod install

  1. 确保在 info.plist 中设置了 Camera Usage Description 键。
  2. 为了获得最佳结果,请在设备方向中取消勾选 纵向。由于场景会翻转过来,您需要勾选 横屏左横屏右

将您的 ViewController 类修改为以下样式

import UIKit
import SceneKit
import ARKit
import MixedRealityKit

class ViewController: UIViewController, MixedRealityDelegate {

    var sceneView:MixedRealityKit?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        sceneView=MixedRealityKit(frame: view.frame)
        sceneView?.mixedRealityDelegate = self

        let scene=SCNScene()
        sceneView?.scene=scene

        view.addSubview(sceneView!)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        sceneView?.runSession()
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        sceneView?.pauseSession()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MixedRealityKitDelegate Methods
    func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {

    }

    func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    }

    func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor) {

    }

    func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor) {

    }


}

您可以使用这个仓库中提供的 Room.scn 文件,或者创建一个空的 SCNScene(),并将您自己的节点添加到其中。如果您要向场景中添加地面,您需要调整 y 轴位置,使其与相对眼睛水平相匹配。我发现 -1.7 工作得很好。

代理

我向 MixedRealityKit 类中添加了一个新代理,名为 mixedRealityDelegate,这允许您选择性地覆盖 ViewController 中的 ARSCNViewDelegate 方法,就像您通常所做的那样,将它们传递给 MixedRealityKit 类。虽然您无需覆盖这些代理,但您需要在 ViewController 中实现它们。错误消息中的“修复”按钮会为您做这件事,如果您偷懒的话 :) 我希望在未来版本中修复这个要求。

选项

disableSleepMode - (默认: ): 当设置为 时,您的设备在空闲时不会关闭。这可以被覆盖,但由于您的设备可能在Google Cardboard中,您可能不想让它进入睡眠状态。

runSession() 方法接受一个可选参数 detectPlanes(默认: )。到目前为止,仅提供默认的横向平面检测。

作者

Scott Finkelstein Twitter

MIT 许可证的条款下作为开源软件提供。