積層状のカーブを作るには
https://www.youtube.com/watch?v=eEiimpCgqnc今回は積層状のカーブを作る方法について解説します。
サンプルとなるシーンには、頭部のモデルがひとつ配置されています。積層状のカーブを作るには、3Dのレーザースキャンのように、このモデルを360度、ぐるぐる回りながらから下から上へと向かって移動するレーザーポインタから放射されたレイが、モデル表面に当たった地点を軌跡としてカーブを生成するという方法を取りたいと思います。
このレーザーポインタの動きを制御するものとして、まずはロケータを一つ作成します。これはモデルの周辺を回転する動きをコントロールするロケータとなりますので、名称をRotationとしておきます。150フレームでY軸に対して360度回転するアニメーションを設定します。
さらにこの子アイテムとしてロケータを追加します。このロケータは下から上への動きを制御するロケータとなりますので、YPositionという名称にしておきます。まずはZ軸に対してモデルの外側に来るように配置したら、さらに150フレームでY軸に対してモデルの上部に来るようにアニメーションを設定します。この動きを確認したい場合には、表示タブにあるモーションパスを追加をクリックすると、動きを明確に表示することが可能になります。
ではこのロケータからモデルに対してレーザーポインタを照射し、モデルとの交点となる部分に対して新たにロケータを配置してみます。これを実現するには、サーフェイスの交差という機能を利用します。まずはレーザーポインタ放射元となるロケータであるYPositionを選択し、次にレーザーポインタを向ける先となるモデルを選択します。セットアップツールバーのコンストレイントタブにある交差カテゴリのサーフェイスを適用します。
この交差のプロパティタブにあるモードをレイにし、適切な軸や方向を設定すると、交差している部分にロケータが作成されているのがわかります。このロケータをPointerという名前にしておきます。そうすると、このPointerがモデルの顔の表面をなぞりながら、下から上へと上がっていくのが確認できます。
次にこのPointerの軌跡の位置情報を配列に保存します。スケマティックビューを開き、Pointerをドラッグアンドドロップします。さらに追加 > Array > Locators to Arrayを追加します。このノードはロケータの情報を配列へと保存するノードとなりますので、Pointerのワールド位置をLocators to Arrayのロケータへと接続します。プロパティでモードを単一へと変更します。そうすると、この150フレーム分の位置情報がArrayに入ったのがわかります。
次にこの配列をもとにカーブを作ります。新規で空のメッシュレイヤーを作り、オペレータ追加 > 作成 > Create Polygonsを追加します。スケマティックビューへとドラッグアンドドロップし、Locators to Arrayの出力を、Create Polygonsの位置へと接続します。Create Polygonsのポリゴンタイプをカーブへ、閉じるをなしに設定します。これが積層状のカーブのベースとなります。
ただこの状態だと1回分しか回転していないので、これを補正します。シーン全体の終了フレームを150から3000へと変更し、アニメーションを同様に3000へと変更します。アニメーションのカーブはリニアにしておきましょう。RotationのY軸の回転値を形状を見ながら、適切な値へとコントロールするようにしてください。
サンプル映像の場合は、このカーブを使ってCurve Particle Generatorでカーブ状に点群(ポイントクラウド)を作成し、リプリケータを使用してメッシュを配置しています。