ご覧くださりありがとうございます。
SwiftでARKitでセッションを開始するも、func session(_ session: ARSession, didUpdate frame: ARFrame)が全く実行されない状況で困っております。
解決に至らなくても何か情報あれば大変助かります。
発端はこの質問ですが、ここで新たに投稿させて頂きました。
よろしくお願いします。
開発環境:
Swift:3.2, Xcode:9.2, Unity:2017.3.0f1, iOS:11.2.1
###前提
SwiftでUnityのNativeプラグインを作成しようとしています。
こちらのサイトの内容通りにプラグインを作る事はでき、iPhone実機でも問題なく動きました。
その上でさらにARKitをimportしてクラス宣言にARSessionDelegateを追記、ビルドも通りました。
###実現したいこと
ARSessionDelegateによって取得できるはずのフレーム情報を取得できない状況なので、取得できるようにしたいです
###問題のコード
CameraRollViewController.swift
Swift
1import UIKit 2import ARKit 3 4@available(iOS 11.0, *) 5 6public class CameraRollViewController: UIViewController, 7 ARSCNViewDelegate, ARSessionDelegate 8{ 9var sceneView = ARSCNView() 10 11override public func viewDidLoad() { 12 super.viewDidLoad() 13 14 UIApplication.shared.isIdleTimerDisabled = true 15 sceneView.session.delegate = self 16 sceneView.automaticallyUpdatesLighting = true 17} 18 19override public func viewDidAppear(_ animated: Bool) { 20 super.viewDidAppear(animated) 21 22 let configuration = ARWorldTrackingConfiguration() 23 sceneView.session.run(configuration) 24 25 //ARSCNView描画 26 self.view.addSubview(sceneView) 27 sceneView.translatesAutoresizingMaskIntoConstraints = false 28 sceneView.topAnchor.constraint(equalTo: 29 self.view.topAnchor).isActive = true 30 sceneView.leftAnchor.constraint(equalTo: 31 self.view.leftAnchor).isActive = true 32 sceneView.rightAnchor.constraint(equalTo: 33 self.view.rightAnchor).isActive = true 34 sceneView.bottomAnchor.constraint(equalTo: 35 self.view.bottomAnchor).isActive = true 36} 37 38//フレーム取得(これが実行されない) 39public func session(_ session: ARSession, didUpdate frame: ARFrame) { 40 print("Frame Get!") 41} 42 43override public func didReceiveMemoryWarning() { 44 super.didReceiveMemoryWarning() 45} 46} 47
CameraRollViewControllerPlugin.mm
ObjectiveC
1#import <ARKit/ARKit.h> 2#import <GetDepthSample-Swift.h> 3 4extern "C" { 5 void OpenCameraRoll(const char *path) { 6 if (@available(iOS 11.0, *)) { 7 CameraRollViewController *cameraRollViewController = [CameraRollViewController new]; 8 UIViewController* parent = UnityGetGLViewController(); 9 [parent.view addSubview:cameraRollViewController.view]; 10 } 11 } 12}
###調べたこと
- アプリ起動 -> ボタンタップ -> ARSCNView描画 はできております
- デバックログに特にエラーは出ていないようです
- Xcodeで一から新規Swiftプロジェクトを作成して上記Swiftコードを適用すると
public func session(_ session: ARSession, didUpdate frame: ARFrame) は問題なく実行されます

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。