ARARKitを使っていると、ARとは別にカメラからの映像を取得したい場合があります。そこで、この記事ではARFoundationを使ってカメラ映像を取得する方法を紹介したいと思います。目次は次のとおりです。ARFoundationのセットアップカメラ映像をフックするスクリプトを作るunsafeコードの設定アウトレット接続ARFoundationのセットアップまずはARFoundationを使うため、ARSessionとARSessionOriginをインスペクタから追加します。Origin」を追加します。Camera)の映像を映すための平面を作ります。常にカメラに映るように、カメラに正対するように配置して、カメラの子要素にしておきます。このPlaneがライティングの影響を受けないように、プロジェクトウィンドウで右クリックしてCreate→Materialを選択してマテリアルを作ります。マテリアルのShaderをUnlit→Textureに設定してからPlaneにドラッグしておきましょう。カメラ映像をフックするスクリプトを作る続いて、ARFoundationで使用しているカメラ映像をフックするスクリプトを作成します。ARFounationでカメラ映像を取得する流れは次のようになります。Scriptでスクリプトを作成し、CamerImageControllerという名前で保存してください。保存できたら先程のPlaneにアタッチしておきましょう。アタッチできたら、CameraImageControllerに次のスクリプトを入力します。}}このスクリプトではframeReceivedイベントにOnCameraFrameReceivedメソッドを追加しています。これにより、カメラのフレームが更新されるたびにOnCameraFrameReceivedメソッドが呼び出されるようになります。OnCameraFrameReceivedメソッドではTryGetLatestImageメソッドを使ってカメラ映像をXRCameraImage型のimage変数に代入しています。続いて、XRCameraImageクラスのConvertメソッドを使って取得したカメラ映像をTexture2D型に変換しています。変換後の画像フォーマットはXRCameraImageConversionParamsで指定します。ここではカラーフォーマットはRGBA32、回転フォーマットは無しで映像を取得しています。カラーフォーマットには次のような値を指定できます。BGRAの4チャネルで各8bit画像また、回転フォーマットには次の値を指定できます。Rendererに設定してPlaneにカメラ映像を表示しています。上記のスクリプトではunsafeコードを使っているため、そのままではコンパイルエラーになってしまいます。codeにチェックを入れます。アウトレット接続スクリプト中で宣言したARCameraManagerに値を代入します。Cameraをドラッグ&ドロップしてください。これでカメラ映像がPlaneにも映るようになっているはずです。ビルドして確かめてみてください。C#ソリューションウインドウ(表示されていない場合はメニューバーから「表示」→「パッド」→「ソリューション」)のプロジェクト名の上で右クリックして「オプション」を選択します。ソースコード→コードのフォーマット→C#のソースコードを選択します。ポリシーの欄で「Default」を選択するか、またはテキストファイルの規定の設定を使用のチェックを外して、タブ幅、インデント幅を設定してから、右下の「OK」ボタンを押します。-liPhone-lib」というエラーが出ることがあります。invocation)Xcodeプロジェクトより上の階層に日本語のフォルダがあるとこのエラーが出るようです。解決策としては次の3つがあります。Pathの方法だけ、少し手順が複雑なので詳しく説明します。Settingsタブを開きます。Pathsを見つけて下さい。Pathsのパス名をダブルクリックするとウインドウが開くので、「"$(SRCROOT)"」を選択して、マイナスボタンで削除します。設定できたら、再度ビルドボタンを押してビルドが通ることを確認して下さい。申し訳ございませんが、ブログに関する質問は受け付けておりませんので、よろしくお願いいたします。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。