Apple Engine

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

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 系のツールでオブジェクトの周囲をまわる操作を一発でできるものは少ないと思われる。

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