質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

903閲覧

ARKitのセッションからフレームを取得する記述をご存知ないでしょうか

tpro

総合スコア27

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/12/22 03:14

編集2018/02/04 15:12

ご覧くださりありがとうございます。

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) は問題なく実行されます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

viewDidAppear関数の最後に以下を記載したら取得できました。

Swift

1 DispatchQueue.main.asyncAfter(deadline: .now() + 2147483647) { 2 self.sceneView.session.pause() 3 }

Unity側に処理が戻らないようにIntの最大値をセットします。遅延実行の内容はself.sceneView.sessionを含むものです

投稿2018/02/04 15:20

tpro

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問