SwiftでGoogle Cardboardのような画面を2分割して左右に同じコンテンツを表示させるには(ストーリーボード上で複数のSceneViewを表示するには)
タイトルの通りです。
ARKitとスマホ用ゴーグルでHololensもどきのようなものを実現しようと思っているのですが、ゴーグルがGoogle Cardboardのように2分割された画面の左右に同じシーンが映っていることを前提に作られているので、この仕様に対応したいです。
諸事情でUnityを使うことができないので、Swiftでこれを実現する方法があれば教えていただきたいです。添付写真のように分割したそれぞれの画面の端が丸みを帯びていなくても、単に画面が2分割されていればそれでよいです。
よろしくお願い致します。
【追記】
その後いろいろトライしてみたところ、単純にSceneViewを2つ並べて画面に配置することで所望のものに実現することができました(写真)。ただこれだと片方のViewが何も表示されなかったり、止まってしまいます。
import UIKit
import SceneKit
import ARKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
@IBOutlet var sceneView2: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
sceneView2.delegate = self
// Show statistics such as fps and timing information
sceneView.showsStatistics = true
sceneView2.showsStatistics = true
// Create a new scene
let scene = SCNScene(named: "art.scnassets/ship.scn")!
// Set the scene to the view
sceneView.scene = scene
sceneView2.scene = scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Create a session configuration
let configuration = ARWorldTrackingConfiguration()
// Run the view's session
sceneView.session.run(configuration)
sceneView2.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Pause the view's session
sceneView.session.pause()
sceneView2.session.pause()
}
}
上のコードではview変数を2つ用意していますが、変数として用意するViewは1つだけで、画面に表示する左右のviewはおなじview変数とアウトレット接続されている(あるいは片方のviewがもう片方のviewと同じ内容を表示する)ということが実現できれば解決するかと思うのですが、どうすればよいでしょうか……?