【Unity/PlayMaker】カスタムアクション 「GetARCameraTexture」の使い方

PlayMakerのカスタムアクション「GetARCameraTexture」が新たに追加されました。 

GetARCameraTextureはスマートフォンのカメラの画像または映像の情報をリアルタイムにテクスチャに写すことができます。

GetARCameraTexture機能を使用するには、前提としてSTYLY plugin、PlayMakerの導入が必須となります。

サンプルシーン(Every Frame)

https://gallery.styly.cc/scene/92c29701-0d1b-4ccb-b3ca-64b4efc634ad

Sample Scene

Sample Scene

カスタムアクションとは

PlayMakerには、ゲームロジックやインタラクションを制作するためにさまざまな機能が実装されています。
このそれぞれの機能のことを、アクションと言います。

STYLYではVR / ARシーンでの表現力を広げるために、複数のアクションが独自に実装されています。
この“独自に実装されたアクション”は、カスタムアクションと呼ばれます。

カスタムアクションは、STYLY Plugin for Unity(カスタムアクションを使用する場合は、PlayMakerが必要となります)をダウンロードすると使用できます。

また、STYLYで利用できるカスタムアクション一覧については以下の記事をご参照ください。

動作プラットフォーム

「GetARCameraTexture」はMobile環境でのみ動作いたします。

プラットフォーム

動作

VR ×
Web ×
Mobile

サンプルシーン作成

この記事ではGetARCameraTextureを使って、スマートフォンの映像をCubeのテクスチャに移し続けるアセットを作成します。

マテリアルの作成

RenderTextureを作成します。プロジェクトウィンドウ > Assetsを右クリックしてCreate→RenderTextureを選択します。

Create→RenderTexture

Create→RenderTexture

RenderTextureの解像度(Size箇所)を1024に変更してください。今回は1024にしていますが、こちらの解像度は任意で大丈夫です。

Resolution of RenderTexture

Resolution of RenderTexture

マテリアルを作成し、インスペクターのshaderからUnlit→Textureを選択します。

shader→Unlit→Texture

shader→Unlit→Texture


shader→Unlit→Texture

shader→Unlit→Texture


shader→Unlit→Texture

shader→Unlit→Texture

None(Texture)の箇所に先ほど作成したRenderTextureをドラッグアンドドロップします。

RenderTexture→None(Texture)

RenderTexture→None(Texture)

シーンにCubeを追加してここで作成したマテリアルを適応させます。このCubeにカメラの情報が投影されることになります。

Add new cube

Add new cube

ARシーン上でCubeのテクスチャが分かりやすいように回転のアニメーションを追加しておきます。CubeにPlayMaker FSMを追加し、Action Browserからrotateを追加します。

X,Y,Zの値を0.1に変更します。

Action Browser→rotate→X,Y,Z=0.1

Action Browser→rotate→X,Y,Z=0.1

メインシステムの作成

次にメインとなるFSMを作成します。

ヒエラルキーで右クリックしてGameObjectを追加し、PlayMaker editorでFSMを追加します。

GameObjectの名前は分かりやすいように変更しても良いと思います。

Add new GameObject and FSM

Add new GameObject and FSM

追加したFSMにアクションを追加します。

状態1を選択し、Action BrowserでGet ARと検索してGet AR Camera Textureを追加します。

Get AR Camera Texture

Get AR Camera Texture

RenderTextureにある2本線のアイコンをクリックして新たに「RenderTexture」という変数を作成します。

New variable→RenderTexture

New variable→RenderTexture

Error Eventの箇所にも「error」という変数を新規作成しておきます。

Every Frameにチェックを入れてください。

Every Frameにチェックを入れると、毎フレームカメラの情報を表示する動作を繰り返すので、おのずとリアルタイムにカメラの映像を取得することが出来ます

Every Frame

Every Frame

状態1を右クリックしてAdd Transitonから先ほど作成したerrorを追加します。

Add Transiton→error

Add Transiton→error

ここまでできたら新規Stateを作成し、状態1と繋ぎます。

Add new state

Add new state

FSMのVariablesのNew VariableにCubeと入力してVariable TypeをGameObjectに変更しAddで追加してください。

Variable Type→GameObject

Variable Type→GameObject

追加したらCube、Render Texture共にInputにチェックマークをいれます。

Input

Input

そうするとFSMのインスペクターにInputのリストが表示されるので先に作成したCubeとRenderTextureを指定します。

Select Cube and RenderTexture

Select Cube and RenderTexture

ここまで出来たらヒエラルキーのPlayMakerGUIを削除し、新規GameObjectを作成してCubeとFSMを格納してまとめます。

そしたらGameObjecをAssetsにドラッグアンドドロップしてPrefab化し、STYLYにアップロードします。

Prefab

Prefab

STYLYへアップロード

実際にSTYLYへアップロードして使用しましょう。
今回はUnityのシーンをそのままSTYLYにアップロードするので、こちらをご参照ください。

STYLYアカウントを作成する

アカウント作成方法

本記事はGetARCameraTextureの概要となっていますので、具体的な使用例の解説については下記の記事に詳しい解説が記載されています。