Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iPhone と Reality Composer で始める簡単 AR その21 - 音の再生 編

今回は音の再生について。

Reality Composer の音の再生するアクションに関しては以下の3つがある。

  • サウンドを再生
  • 環境音を再生
  • ミュージックを再生

 

「サウンドを再生」はオブジェクトベースの音響になっており、オブジェクトの位置から音が鳴る。
そのため、カメラからオブジェクトが遠ざかれば音が小さく、近づけば音が大きくなる。
用途的には短い効果音などを再生する様な形。

「環境音を再生」「ミュージックを再生」は位置に関係なく鳴るため BGM の様な音を再生する。
ちなみに自分はこの2つのアクションの振る舞いの違いがわからない。

一応、現状で確認している音声ファイルは caf、mp3、m4a の模様。
Apple Music の m4p ファイルは選択できない。

 

試してみる

今回は球を物理シミュレーションで球を落下させ、立方体に接触すると音が再生されるものをつくる。

 

アンカーを選択

新規作成から今回も水平方向のアンカーを選択する。

 

オブジェクトの設定。

上部の「+」ボタンから球体と立方体のオブジェクトを追加し以下を設定する。

 

Y軸を 50cm

f:id:x67x6fx74x6f:20200321055938j:plain

 

上の立方体

Y軸を 30cm、Z軸 -5cm

f:id:x67x6fx74x6f:20200321055945j:plain

 

下の立方体

Y軸を 5m、15cm

f:id:x67x6fx74x6f:20200321055948j:plain

 

また、球に関しては物理の「含める」有効にして、モーションタイプをダイナミックに設定する。

f:id:x67x6fx74x6f:20200321072417j:plain

 

ビヘイビアの設定

ビヘイビアから追加する。
今回はカスタムを選択し、トリガーで「衝突」、アクションで「サウンドを再生」を設定。

f:id:x67x6fx74x6f:20200321054043j:plain

f:id:x67x6fx74x6f:20200321054147j:plain

 

トリガー: 衝突

影響を受けるオブジェクトは球、衝突する対象は2つの立方体を選択する。
ちなみに、今回は影響を受けるオブジェクトと衝突する対象のオブジェクトが逆でも動作は変わらない。

f:id:x67x6fx74x6f:20200321060022j:plain

 

アクション: サウンドを再生

影響を受けるオブジェクトを球に設定し、オーディオクリップをコンテンツライブりから初期状態でインストールされている「パッピーチャイムの音01.caf」を選択する。

f:id:x67x6fx74x6f:20200321054312j:plain

 

画面上部の再生ボタンをタップすると球が落下し、立方体に接触すると音が再生する。

 

サウンドを再生の「動作中にトリガされた場合」の処理

「動作中にトリガされた場合」では以下の設定項目があり、初期値は「無視」となっている。

  • 無視
  • 再起動
  • 停止

f:id:x67x6fx74x6f:20200321073301p:plain

 

無視

続けてトリガーが発生しても再生が終わるまで音の再生の処理は無視される。
今回の場合、続け立方体に接触しても再生されない。

vimeo.com

 

再起動

続けてトリガーが発生された場合、音が停止され、最初から再生し直される。
今回の場合、続け立方体に接触すると再生が止まりまた再生される。

vimeo.com

 

停止

続けてトリガーが発生された場合、 今回の場合、立方体に接触すると再生し、次の立方体に接触すると止まる。
もし、さらにトリガーが動作するとサウンドが停止されているため再生される。

vimeo.com

 

環境音を再生、ミュージックを再生

設定値はボリュームとオーディオクリップの設定しかない。

f:id:x67x6fx74x6f:20200321080549p:plain

f:id:x67x6fx74x6f:20200321080608p:plain

 

サンプルファイル

下記のリンクに行き、右側の緑のボタン「Clone or download」からリポジトリをクローンするか zip をダウンロード。
Sound フォルダが今回のサンプルになる。

iPhone や iPadOS に Reality Composer がインストールされていれば、ダウンロードした zip を展開し rcproject を開いて中身を見ることができる。

github.com

 

まとめ

音の再生のアクションは2点あり、オブジェクトベースのものと一定のものが設定でき、動作中にトリガされた場合に処理が可能である。

次回はシーンの切り替えについて。

iPhone と Reality Composer で始める簡単 AR その20 - 物理アニメーション 力を加える編

今回は前回に引き続き物理アニメーションについて。

直線方向に力を加えるアクションがあり、トリガーの設定よっては Reality Composer や .reality を読み込んだ QuickLook のプレビューで物理シミュレーションを行った操作を行うことができる。

 

試してみる

アンカーを選択

新規作成から水平方向のアンカーを選択し、物理シミュレーションがわかりやすい様に球体のオブジェクト選択する。

今回はわかりやすい様にワープマーブルを選択。

f:id:x67x6fx74x6f:20200320233145j:plain

 

ビヘイビアの設定

今回はタップして「力を加える」アクションをつくる。
ビヘイビアにそのテンプレートがあるのでそれを選択。

 

テンプレートを選択し設定すると「タップ」のトリガーと「力を加える」のトリガーが追加される。

f:id:x67x6fx74x6f:20200320233228j:plain f:id:x67x6fx74x6f:20200320233232j:plain

 

「タップ」の「力を加える」の影響を受けるオブジェクトを 追加した球のオブジェクトに設定する。

 

オブジェクトに物理設定がされていない場合、アラートが出て「アップデート」をタップすると物理のダイナミックの設定が自動でされる。

f:id:x67x6fx74x6f:20200314232511j:plain

 

以上の設定を行い上部の再生ボタンを押し、
球のオブジェクトタップすると上方向へ跳ね上がる。

f:id:x67x6fx74x6f:20200321005348g:plain

 

「力を加える」のアクションについて

プロパティではベロシティしかない。

f:id:x67x6fx74x6f:20200320234103j:plain

デフォルト値は 18 km/h なっており 5m/s。

Reality Composer の空間の物理設定がパラメーターが正確にはわからないので正しいかは不明だが、
現実世界では大体、自転車の通常の走行や、人が速く走ったりするぐらいの速さ。

とりあえず、Reality Composer は 1 km/h にベロシティを設定すると動作が行われず、静止した状態になる。
(実は微妙に動いているのかもしれない)

 

また、ビューポートでは力を加える角度や Yaw 軸 (Y軸) 方向の回転を行うことができる。

f:id:x67x6fx74x6f:20200321005237g:plain

 

まとめ

「力を加える」アクションは移動や回転、オービットと同様にオブジェクトを動かすことができるアクションで、トリガーの設定によってはオブジェクトの操作をすることができる。

また、トリガーの「衝突」を使用するとオブジェクト同士の衝突を検知でき、さらに複雑な振る舞いを設定できる。

次回は音について。

iPhone と Reality Composer で始める簡単 AR その19 - 物理アニメーション 重力編

今回は物理アニメーションでのシーン全体での処理について。

Reality Composer や RealityKit でも SceneKit 同様に何もしなくてもシーン全体で物理アニメーションの処理がされている。

SceneKit ではカテゴリマスクなどの設定が必要だったが、Reality Composer のシーンでは重力加速度と地平の物理判定の設定しかないため、簡単に物理アニメーションの設定を行うことができる。

また、以前も書いたがオブジェクトでは物理アニメーション用の種類と判定用の素材と形しかなく覚えることが少ない。

 

試してみる

アンカーを選択

新規作成から水平方向のアンカーを選択し、立方体のオブジェクト選択。

f:id:x67x6fx74x6f:20200314020435p:plain  

画面右上の歯車のマークからプロパティを開き Y 軸を 20cm ぐらいに移動。

f:id:x67x6fx74x6f:20200314020508p:plain

 

物理設定から「含める」のスイッチをオンにして、モーションタイプを「ダイナミック」に変更。

f:id:x67x6fx74x6f:20200314020656p:plain

 

再生ボタンを押すとシーンの Y 軸 0 が物理判定となっているので、立方体が床にぶつかるような物理アニメーションがされる。

f:id:x67x6fx74x6f:20200314021542g:plain

 

オブジェクトのない空間をタップやクリックしプロパティを開き、下の「シーンの物理」の「衝突する」のチェックを外しシーンを再生すると、立方体は床にぶつからずそのまま落下し続ける。

f:id:x67x6fx74x6f:20200314021613p:plain

f:id:x67x6fx74x6f:20200314021628g:plain

 

立方体をコピーしサイズ調整で 200 %ぐらいに変更し少し下に移動。

コピーした立方体の物理設定から「含める」のスイッチをオンにして、モーションタイプを「固定」にすると空中に固定された物体となるので、そこで物理アニメーションが行われ上から落ちてきた立方体は止まることとなる。

f:id:x67x6fx74x6f:20200314022319g:plain

 

Reality Composer では Y 軸 0 が床の平面となり、床を元にシャドウマップまたはレイトレースの影が落ちる。
そのため「シーンの物理」の「衝突する」のチェックを外すことはあまりお薦めしない。

 

物理アニメーションが適応されたオブジェクトの素材

パラメーター的なものが存在しないため GIF で見てみる。
シーンの物理に関してはデフォルトのコンクリート。

弾み方と地面に接してからの動きが異なると思われる。

f:id:x67x6fx74x6f:20200314025728g:plain

 

設定できるものは以下のもの

  • コンクリート
  • プラスチック
  • 木材
  • ゴム

 

注意点

これまで紹介したビヘイビアのアニメーション強調と物理アニメーションは排他的存在となっている。
回転など設定したアニメーションが静止した場合に物理アニメーション開始されるので注意。

また、待機は影響を受けず、表示、非表示などは物理アニメーション時も実行されるので注意。

 

まとめ

シーン全体での物理アニメーションでは重力しかないため設定はかなり簡単だと思われる。

次回は物理アニメーションで使用できるアクション「力を加える」について

iPhone と Reality Composer で始める簡単 AR その18 - オブジェクトの周りで回転させるアニメーション編

今回はオブジェクトの周りで回転させるアニメーションについて。

f:id:x67x6fx74x6f:20200313022832g:plain

このアクションについては WWDC のセッションで多用されていたのでさらっと書いてみる。
また回転アクションと使用時の注意点などを説明する。

 

試してみる

アンカーを選択

Reality Composer を起動。
「+」ボタンなどから新規作成し、アンカーを選択のウインドウを表示。
なんでも構わないが、今回もとりあえず「水平方向」を選択。

f:id:x67x6fx74x6f:20200309023952j:plain  

オブジェクトの作成

オブジェクトライブラリから星のオブジェクトを配置する。

f:id:x67x6fx74x6f:20200313030835p:plain

 

パラメータは以下のように設定。

f:id:x67x6fx74x6f:20200313023129p:plain

 

一応、デフォルトでは立方体が配置されているが変えたければ消してもらって構わない。

ただ、今回は何かを中心に星のオブジェクトを回転させるため、なんかしらのオブジェクトが必要になる。

 

ビヘイビアの追加

アニメーション用のビヘイビアを追加する。
画面上部「…」をタップし詳細を開く。

f:id:x67x6fx74x6f:20200309024036j:plain

 

詳細からビヘイビアを選択。

f:id:x67x6fx74x6f:20200309024051j:plain

 

「+」ボタンからビヘイビアを追加し1番下のカスタムを選択。
今回も「シーン開始」のトリガーを設定し、アクションで「オービット」を選ぶ。

f:id:x67x6fx74x6f:20200313023848p:plain

 

「影響するオブジェクト」で配置した星のオブジェクトを選択し、
「中心にする」で星を回らせたいオブジェクトを選択する。

アクションに⚠️などのエラーが出ていなければいずれかの再生ボタンを押すと、
「中心にする」を設定したオブジェクトを中心に回転し始める。

中心を設定したオブジェクトの X, Y, Z 軸の中心、または USDZ などのピボットなどの中心に対して、影響するオブジェクトの中央の位置に対して直角の位置に回転軸ができ回転が行われる。

 

例えば、オービットで2秒で1周回転する場合で「中心にする」を設定したオブジェクト」と「影響するオブジェクト」への中心の Y 軸が 0 で同じ場合は水平、
「中心にする」が原点「影響するオブジェクト」が X 1cm, Y 1cm にあった場合は、互いの直線距離が √2 になるため、回転する軸が45度ずれ、180度回転する1秒後には X -1cm, Y -1cm の座標にいる事となる。

f:id:x67x6fx74x6f:20200313025038p:plain
奥が X: 0, Z: 20、手前が X: 20, Z: 20。
手前の回転軸がピッチ(X 軸)方向で 45 度回転している。

 

エラーに関しては「影響するオブジェクト」「中心にする」のオブジェクトが選択されていないか、両方で同じオブジェクトが選択されていた場合に出たりする。

 

その他の設定

パスに合わせる

今回のように回転する物体の表が決まっている場合は、「パスに合わせる」のチェックをチェックすると回転する円に沿うようにして星が回転するようになる。

f:id:x67x6fx74x6f:20200313030414g:plain
右側が「パスに合わせる」のチェックを入れたもの

 

オービットアクション選択時の青いハンドル

オービットは X, Y 軸方向の回転は自動で割り振られ操作はできないが、ロール(Z 軸)方向は変更することができ、このハンドルはそのためのもの。

中心と回転するオブジェクトが正面で同じY軸上にある場合で説明すると、デフォルトは横方向に回転するが、このハンドルを使用すると縦方向に回転させることができる。

 

注意点

3D プログラム経験者の場合わかるとは思うが、物体の中心を回るということはオブジェクトの座標値が変更される。
この状況では「移動/回転/拡大」が正しく動作しないな場合がある。

そのためか、回転だけのアクションが存在する。

ただ、回転のアクションもオービットより前に設定しグループ化すると回転の振る舞いがおかしくなる。

また中心を設定しているオブジェクト移動させるなどをしても動きがおかしくなる。

 

回転のアクション

回転のアクションが用意されており、
「移動/回転/拡大」と異なり回転方向(時計回り/反時計回り)とロール、ピッチ、ヨー(Z, X, Y)の軸を設定できる。

回転のアクションは回転のみ行われ回転方向を時計回りに設定した場合、当たり前だが必ず時計回りに回る。

f:id:x67x6fx74x6f:20200313035530p:plain

 

例えば、絶対座標版の「移動/回転/拡大」の回転の場合は現在の角度と設定された角度から最も近い角度分しか動かないため、こちらが必要になる。

 

サンプルファイル

下記のリンクに行き、右側の緑のボタン「Clone or download」からリポジトリをクローンするか zip をダウンロード。
Orbit フォルダが今回のサンプルになる。

iPhone や iPadOS に Reality Composer がインストールされていれば、ダウンロードした zip を展開し rcproject を開いて中身を見ることができる。

github.com

 

まとめ

3D 系のツールでオブジェクトの周囲をまわる操作を一発でできるものは少ないと思われる。

次回は物理アニメーションについて

iPhone と Reality Composer で始める簡単 AR その17 - 基礎的なアニメーション編

今回は Reality Composer で実際にアニメーションをつくつてみる。

アニメーションに関しては前回で説明しているようにビヘイビアのアクションを使用し、
今回はシーン開始で動作するトリガーを使用しテキストのオブジェクトをアニメーションさせるアクション/アクションシーケンスを作成してみる。

 

試してみる

アンカーを選択

Reality Composer を起動。
「+」ボタンなどから新規作成し、アンカーを選択のウインドウを表示。 なんでも構わないが、今回はとりあえず「水平方向」を選択。

f:id:x67x6fx74x6f:20200309023952j:plain

 

テキストオブジェクトの作成

アンカー選択時に作成される立方体や文字を選択後長押しから「削除」で消し、 画面上部「+」ボタンからテキストを配置。

以下のように適当に設定。

f:id:x67x6fx74x6f:20200309024933p:plain

 

上に上がるアニメーションを追加する

「…」からビヘイビアを選択してビヘイビア設定のウインドウを表示し「+」ボタンから新規のビヘイビアを作成しタップ。

f:id:x67x6fx74x6f:20200309024036j:plain f:id:x67x6fx74x6f:20200309024051j:plain

 

タップすると「ビヘイビアを追加」が表示されるが、今回はテンプレートを使用しないため1番下のカスタムを選択。

トリガーを「シーン開始」に設定。

f:id:x67x6fx74x6f:20200309024409j:plain

 

アクションシーケンスのアクションを「移動/回転/拡大(相対)」にする。

f:id:x67x6fx74x6f:20200309024422j:plain

 

アクションを追加すると適用するためのオブジェクト選択を決める状態になっているため、先ほどつくったテキストオブジェクトを選択する。

そして、今回は以下のように Y 軸プラス方向に移動させる設定をする。

f:id:x67x6fx74x6f:20200309025024p:plain

 

非表示から表示するアニメーションも加える。

そのままだと上へ上がるだけなので、非表示から表示されるようにアニメーションをさせてみる。

ビヘイビアのウインドウのアクションシーケンスのアイコンか「+」ボタンを押すと「アクションを追加」が表示されるので「表示」を以下のように設定しアニメーションを行う。

f:id:x67x6fx74x6f:20200309025332p:plain

 

複数の文字を表示しアニメーションさせたい

f:id:x67x6fx74x6f:20200309031740g:plain

1文字アニメーションさせてもあれなので、複数アニメーションさせる。

テキストオブジェクトの設定を数分設定するのが面倒なので先ほどのテキストをコピー&ペーストする。

とりあえず、今回はビヘイビアの動きも引っ張りたいのでコピーする前に画面右の「…」からビヘイビア付きで複製のスイッチをオンにしてからコピー&ペースト。
必要分増やしたら再生してみると設定した文字が表示されるようになる。

 

順番に文字を出るようにする

f:id:x67x6fx74x6f:20200309025651g:plain

見た目的に一度に出るのは好きではないので順番に表示するように改良する。

アニメーションの流れ的には以下のような感じ。 最初のテキストオブジェクト以外は表示の待ち時間があり後の方は待ち時間が長くなる。

先ほどの同時に出るアニメーションの場合はビヘイビアはひとつで済むが順番に出る場合は個々でビヘイビアを設定する必要がある。
そのため、先ほどのビヘイビアの「表示」と「移動/回転/拡大(相対)」の影響を受けるオブジェクトを最初の文字だけにする必要がある。

その修正が終わったら同様のビヘイビアが分作成する。

最初の文字以外、表示されるまでの待ち時間が必要なため「待機」と「非表示」のアクションをグループにして追加。
設定値は下記参照。

f:id:x67x6fx74x6f:20200309040145p:plain

 

各文字の待機時間を2文字目から 0.3、0.6、0.9、1.2 に設定。
再生すると1文字ずつ表示されるアニメーションが行われる。

また、上の GIF 画像の様に上がった際にバウンドをさせるてみるとよいかも。
設定は下記の GitHub にあるサンプルファイルの rcproject を参照。

 

その他: 相対座標の利点

f:id:x67x6fx74x6f:20200309025853g:plain

今回、オブジェクトの座標をもとに相対的に +Y 座標に移動するため、オブジェクトの位置を変えたり回転をさせたりしても、そこから設定した +Y 座標分移動する。

AR の見え方の都合上、今より若干上に表示させたい時など絶対座標の場合はすべての座標値を変える作業が必要になってしまうが相対座標の場合は何も変える必要はない。

 

注意点

ちなみにシーン開始のトリガーで、開始時にシーン上で、最初にオブジェクトが何も表示されていない場合、.reality に書き出し QuickLook からのプレビューをしても再生が始まらないので注意。

何か表示されるものが必ず必要。
バグなのか使用なのか不明だが、最初に表示されるオブジェクトがない場合はプレビューできないのは理にかなっている気はする。

 

サンプルファイル

下記のリンクに行き、右側の緑のボタン「Clone or download」からリポジトリをクローンするか zip をダウンロード。 MoveRotateScale フォルダが今回のサンプルになる。

iPhone や iPadOS に Reality Composer がインストールされていれば、ダウンロードした zip を展開し rcproject を開いて中身を見ることができる。

github.com

 

まとめ

Reality Composer にはタイムライン的なものはないため、簡単なアニメーションでもわりと多くの設定をする必要がある。

元も子もないが、Blender などの 3DCG の DCC ツールが扱えるのであれば、USDZ 側で事前にアニメーションを設定した方が楽かと。

次回はオブジェクトの周りを回転させるアニメーションについて。

iPhone と Reality Composer で始める簡単 AR その16 - アニメーションの基礎知識編

今回はビヘイビアのアクション/アクションシーケンスを使用したアニメーションの基礎について。

Reality Composer でのアニメーションでは以下の4つがあり、音の再生、待機、カメラを見る、通知以外のもの。

  • オブジェクトを移動、回転、拡大して動かすアニメーション
  • 表示状態のアニメーション
  • 物理アニメーション
  • USDZ で設定されているアニメーション

 

オブジェクトを動かすアニメーションは「移動/回転/拡大」のものが絶対座標と相対座標であり、オブジェクトの周囲を回るオービット回転のみを行う回転がある。
また強調というアクションが用意されており、複数の動作が1回で処理される。

表示状態のアニメーションは表示/非表示を徐々にする。

物理アニメーションは Reality Composer ではデフォルトシーン全体に下方向に重力が働いており、力を加えるものしかない。(SceneKit でいう applyForce)
トルクや物理フィールドも存在しないため、本当に重力とオブジェクトの移動方向へ力を加えるだけものだけ。

USDZ アニメーションは設定されているもの再生する。

 

3D でのアニメーションとは

アニメーションと命を吹き込むという動詞の名詞で大体は動きのついた何かを指す。

現実世界では物が動く上で幾つかルールがあり、ざっくり言うと力は加え続けられると永遠に動き、ものは一定には動かず、大体のものは摩擦や空気抵抗があるため徐々に減速し、慣性があるためすぐには止まらない。

また、ぴったりと同時に物が動くことは少ないし、ゲームなどではいきなりモノが表示されることは少ないなどわりと考えることがあったりする。

 

イージングタイプ

自然現象でものが等間隔で動くことは少ないため、動きは速く動く部分と遅く部分が存在する。
Reality Composer ではイージングとして以下の4つが用意されている。

  • なし
  • イーズイン
  • イーズアウト
  • イーズインアウト

 

イーズインは最初遅く移動し徐々に早くなり、イーズアウトは最初に早く移動し徐々に遅くなり、イーズインアウトは最初と最後が遅くその間の動きが速くなるアニメーションタイミングとなる。

わかりづらいので動きは GIF 画像を参照。

f:id:x67x6fx74x6f:20200309020807g:plain

 

絶対座標と相対座標

3DCG など 3 次元空間をもつツールやプログラムは必ず絶対座標と相対座標が存在する。
Reality Composer では「移動/回転/拡大」のみ考慮する必要があるがわりと使用するので説明を書いてみる。

絶対座標と相対座標は簡単に説明すると絶対座標は空間に対してどの位置、相対座標はオブジェクトやグループなどなにかの基準に対しての位置をあらわす。

オブジェクトが原点にいて X 軸 20cm に進むのは絶対座標、相対座標ともに X 軸 20cm 進むが、 オブジェクトが X 軸 10cm にいた場合に、X 軸 20cm へ進む場合、絶対座標は空間の座標である X 軸 20cm に移動するが、相対座標は自分の位置を基準である 10cm からプラス 20cm 進むため、移動後の位置は絶対座標でいう 30cm の位置となる。

f:id:x67x6fx74x6f:20200309022755p:plain

 

そのため、相対座標は操作でオブジェクトを一定量で動かしたい場合、絶対座標は何か基準値に戻したい場合に使ったりする。

例えば、相対座標はキャラクターを何かの操作から動かしたいとき、絶対座標はキャラクターを基準値に戻したいときなどに使う。

移動で説明をしているが、回転や拡大縮小も同様。
特に回転し続ける処理は、絶対座標で行うよりも相対座標で行った方が良いケースが多い。

 

まとめ

長くなってしまったがこんなところ。 次回は実際にビヘイビアを設定しアニメーションを行なってみる。

iPhone と Reality Composer で始める簡単 AR その15 - トリガー 編

今回はオブジェクトの振る舞いをの起点となるトリガー(トリガ)について。

 

トリガーの種類

トリガーは5つ。
通知は RealityKit 用のため、Reality Composer だけで使用できるのは4つ。

  • タップ
  • シーン開始
  • カメラの近く
  • 衝突
  • 通知

 

タップ

アプリでの説明
「オブジェクトがタップされたときにトリガします」

「影響を受けるオブジェクト」でオブジェクトの選択が可能で、タップした際にアクション / アクションシーケンスが再生される。

 

シーン再生

アプリでの説明
「シーンが開始されたときにトリガします」

設定項目なし。
シーンが開始された際にアクション / アクションシーケンスが再生される。

 

カメラの近く

アプリでの説明
「カメラの近くにある場合にトリガします」

「影響を受けるオブジェクト」でオブジェクトの選択し、有効範囲となる距離を設定するとカメラ(端末自体)がその範囲に入るとアクション / アクションシーケンスが再生される。

 

有効範囲である距離は球形で可視化される。

 

衝突

アプリでの説明
「指定されたオブジェクトが衝突したときにトリガします」

「影響を受けるオブジェクト」と「衝突する対象」のオブジェクトを選択する。
設定したオブジェクト動作が接触するとアクション / アクションシーケンスが再生される。

「影響を受けるオブジェクト」動くものとなるダイナミックの物理設定、
「衝突する対象」で固定(スタティック)の物理設定でオブジェクトが設定される。

 

オブジェクト選択時に物理設定がされていないものはアラートで変更するか表示される。

 

通知

アプリでの説明
「Xcodeで通知トリガを定義します」

この reality ファイルをリソースとしてもつ RealityKit のアプリから、このビヘイビアを呼び出して設定しているアクション / アクションシーケンスを再生させる。

そのため、Reality Composer でのプレビューや書き出した reality ファイルのプレビューではこのビヘイビアを動作させることはできない。

 

RealityKit での呼び出し方

今後、アクションの方の通知の際にちゃんと説明するとは思うが、とりあえず流れをざつくりと。

  • トリガーの通知を選択し識別子の名を「Test」に設定
  • Reality Comopser で作成したファイルを Experience.rcpeoject として保存
  • その起点となるシーン名を Game とする
  • グローバル変数として Reality Comopser のシーンを let rootAnchor: Experience.Game! とする

この状態で設定したアクションを以下の記述で呼び出すことができる。

rootAnchor.notifications.test.post()

 

識別子はnotifications の post() の間に入りキャメルケースとなる。
「Test Notify」にすると空白は埋められ「testNotify」で呼び出すことができ、識別子はひらがな、カタカナ、漢字などの 2 バイト文字でも動く。
基本的には notifications の後にドットを打ち込んだ時点でコード補完から使えるものが表示されるので間違うことはないと思う。

 

不明点

現状、通知から動作するアクションに何らかの制限があるように思われる。

とりあえず、表示 / 非表示はちゃんと動作する模様。

 

まとめ

トリガーとして設定できるものは少ないので、かなりわかりやすいと思う。

次回はアクションについて書いていこうと思う。
機能説明だけではわかりづらいので何らかのサンプルの作成しながら見ていく。