見出し画像

AR開発サポートツール「CFA(シーファ)」の使い方

前回はクリエイター向けAR開発サポートツール「CFA(シーファ)」の想いやコンセプトをご紹介させてもらいました。
今回は、具体的な使い方について紹介させてもらいます!

前回の記事はこちら↓

CFAの3つのツール

CFAはAR開発の工程を分解して、3つのツールに分けました。

画像1

配置ツール:ロケーションに合わせてオブジェクト(キャラクターやアイテム)の配置位置を決める
作成ツール:配置ツールから受け取った配置位置情報(Jsonデータ)を受け取って、モックを作成していく
ビューワーアプリ:作成ツールで作成したモックを手元のスマートフォンで確認する

ツール説明:配置ツール

配置ツールは位置データを作成するツールです。
Microsoft Azure の Spatial Anchors で作成されたアンカーの位置を基準にして、コンテンツを配置したい場所のデータ(座標、回転座標、スケール)をJson化します。

下記デモ動画は実際に配置ツールを使用して、コンテンツを配置したい場所のデータ(座標、回転座標、スケール)をJson化している様子です。

ここで作成したデータは次のステップで使用する作成ツールで使用します。

ツール説明:作成ツール

作成ツールはUnity上でコンテンツを配置したい場所のデータを参照することができます。作成ツール側でJsonデータを読み込んだ際はこんな風になります。

簡単に言うと、作成ツールは現地で登録した場所にまつわるデータをUnity上に再現できます。
この現地を再現する機能がある為、現地で細かい位置合わせを何度も行う工程をスキップできます。

さらに、作成ツールにはBoltをベースとしたノードによるコンテンツ作成機能があります。

Boltはノードベースのビジュアルスクリプティングツールです。
簡単に言うと、コードを記述することなくプログラムを動かすことができるツールです。

実際に使用している様子がこちらです。

例えば、特定のキャラクターをA地点からB地点に移動し、移動後にキャラクターボイスを再生… といったシナリオを作りたい場合、プログラミングの知識がない方でも作成ツール上でノードとノードを繋いで順番に実行させることで、直感的にプログラムと同様の処理を組み込むことが可能です。

ツール説明:ビューワーアプリ

ビューワーアプリは作成ツールで作成したARコンテンツの動作を確認するツールです。
作成ツールで作成したものをビルドすればスマートフォン上で簡単に確認が可能です。現地で起動することで細かい挙動や位置を確認できます。

作成ツールの使用例

先ほど、作成ツールの説明において「直感的にプログラムと同様の処理を組み込むことが可能」と述べました。

そこで、本記事ではノードベースのビジュアルスクリプティングを用いて、ARコンテンツ作成をどう簡略化したかの説明を進めていきます。

バージョン情報:Unity 2019.4.1f1

作成ツールの使用例:最小単位のノード解説

まずは、最小単位のノードの仕組みを説明します。
ボタンを押したら音が鳴る、という小さな処理から見ていきます。

下記が実際のノードです。

画像2

1つのブロックをユニット(Unit)と呼びます。
青いアイコンに日本語で説明が記述されたユニットがアップフロンティアが作成したオリジナルユニットです。
このようにBoltはユニットを自作することができます。

ユニットとユニットを繋ぐことで逐次実行が可能です。

ノードベースのビジュアルスクリプティングの最初の関門として、Variableの仕組みを理解することが立ちはだかりますが、ここさえ押さえられればあとはスムーズです!

作成ツールの使用例:Variableを理解する

Variable をカンタンに一言でまとめると値を橋渡しする役割です。

例えば、先ほどのボタンを押したら音が鳴るという処理においては、Object Variables という Hierarchy上 のオブジェクトをノード上で参照できる機能を利用しています。

下記のように Variables というコンポーネントを Hierarchy 上に配置し、Value の箇所にノード上で参照したいオブジェクトをアタッチします。
Name の箇所にはノード上で受け取る際の変数名を自由に定義できます。

画像3

Variables は使用頻度の高い便利なコンポーネントのため、CFA では Json データから再構築したメインアンカーのオブジェクトに自動的にアタッチされるようになっています。

ここまで理解できたら、先ほどのノードに戻って再度仕組みを見てみましょう。Get Variable で変数名を指定することでオブジェクトを取得(参照)することが可能になるということがわかると思います。

画像4

Variable の使い方を理解できればもう安心してARコンテンツ作りに臨めます。

デモ1:カップシャッフルゲーム

これまでの説明を踏まえた簡単なデモです。
有名なカップシャッフルゲームを作成してみました。

カップシャッフルのデモだと、ノードのボリュームはこれくらいになります。

画像5

オブジェクトの表示、非表示、生成、破棄、指定時間待つなどはBoltの標準ユニットで、吹き出しなどはCFA独自のユニットとして用意しています。
なので、素材さえ用意すれば簡単に実装が可能です。

CFA吹き出し

デモ2:ARボールすくい

次に、物理演算を利用したARボールすくいです。

アニメーションと物理演算による移動を組み合わせて、ボールをすくった位置がどこであっても桶の中にボールをリリースできるようにしています。
具体的には下記のノードで実現しています。

CFAオブジェクトの移動

下記のように、ターゲットとなるオブジェクトを選択することも可能です。

CFAオブジェクトまで移動

デモ3:雪だるまシューティング

最後に、ランダムに出現した雪だるまを狙い撃つシューティングシミュレーションゲームです。

ランダムな処理には乱数が必要です。
すなわち、実行されるたびに異なる値を返す必要があります。

乱数を生成するノードもCFAには備わっています。
少し複雑ですが、下記は生成した乱数の値に応じて処理を分岐するノードの一例です。

CFA乱数

また、このデモにおいては、タイマー及びランダムに生成される処理はCFAの作成ツールの自作ノードを中心に実装し、その他のタップした際のスコアの加点、エフェクト生成などはコードでプログラムしています。

このデモのように、デザイナーはモデルの配置や移動、シナリオの一連の流れを組み込み、プラグラマーは用意されたユニットで補えない複雑なロジックを実装という分担作業も可能です。

さいごに

前回の想いやコンセプトの記事での通り、ARをはじめ、xRコンテンツの開発は手戻りのコストが大きく、なかなか見た目の確認や調整が簡単にできないところがネックとなっていました。

コロナ禍で現地型ARの開発に制約もかかる中、分担した効率的な開発の一助となってほしい、それぞれの役割のメンバーが気持ちよく開発してほしいと願っています。

もし、CFAの中身やAR開発のご相談がありましたらぜひお気軽にお声がけください!


この記事が気に入ったらサポートをしてみませんか?