マップ変換|Range Mapper
QuickVFX Youtube Channerより
マップ変換 Range Mapper
[マップ変換]ノードは、とても便利で、XPressoで最もよく使用するノードのひとつになります。指定した範囲にある入力値を、別に指定した範囲の値に変換(マップ)し、結果を出力するノード。
マップ変換の実際
今回は、以下のように球と円柱と立方体で作成したシーンを作る。球が移動(P.X)するのに合わせて、立方体が回転(R.B)するようにしたい。
シーン準備
- 立方体と球体を作成し、球体の位置をオフセットする。
- 円柱を作成し、球体のスライダーとなるように調整する。
位置情報と回転情報のリンク
- ヌルオブジェクトを作成。XPressoタグを追加([タグ>CINEMA4Dタグ>XPresso])。XPresso編集ウィンドウ(Xpressoエディタ)が開く。
- オブジェクトマネージャより立方体を選択し、Xpressoエディタにドラッグ&ドロップ。エディタの右側に配置する。
- 立方体ノードの青い部分をクリックし、入力ポートに「絶対角度.B」を追加([座標>絶対角度>絶対角度.B]を選択)。
※英語版だと[Coordinates>Global Rotation>Global Rotation.B]
以下のように、なった。
- 次に、オブジェクトマネージャより球体をXpressoエディタにドラッグ&ドロップ。エディタ左側に配置。
球体の赤い部分をクリックし、出力ポートに「絶対位置.X」を追加([座標>絶対位置>絶対位置.X]を選択)。
以下のようになった。
- 試しに、球体の「絶対位置.X」を「絶対角度.B」をワイヤでつなぐ。
ビューポートで球体をX軸方向に移動させて結果を見ると、立方体は回転しているが、すごいスピードで回転している。
※註:どのようなデータ構造になっているか、XPressoエディタで分かりやすく表示↓
マップ変換(Range Mapper)の使用
自分の思うように、位置情報と角度情報をリンクさせたい。
- 「マップ変換」ノードを使用する。
Xプールの虫眼鏡アイコンをクリックして検索窓を表示し、「マップ変換」と打ち込む。現れた「マップ変換」をXPressoエディタにドラッグ&ドロップ。
- [マップ変換]ノードをクリックすると、属性マネージャで属性が表示される。
- 今回の[入力範囲 Input Range]は球体のX位置なので[ユーザ定義 User Difined]のままでOK。[出力範囲 Output Range]は立方体の絶対角度.Bなので「度 Degree」にする。
今回は球体のX位置の「-300cmから300cmに移動する」ときに「立方体が一回転する」ようにしたい。
- [入力下限 Input Lower]を「-300」に、[入力の上限 Input Upper]を「300」に。[出力の下限 Output Lower]を「0°」、[出力の上限 Output Upper]を「360°」に。
- ノードをワイヤーで結ぶ。
ビューポートで球体をX軸方向に移動させると以下のようになる。
ここで注目したいのは、「球体が-300cm、300cmよりもさらに原点から離れても立方体は回転し続けている」こと。
オプション1:[下を切る][上を切る]
- 立方体の回転を「球体が-300cm~300cmを移動している間のみに限定」したい場合は、[マップ変換]ノードの属性マネージャで[下を切る Clamp Lower][上を切る Clamp Upper]にチェックを入れる。
オプション2:出力範囲の[反転]
立方体の回転を逆にしたい場合、出力範囲を反転すればよい。[マップ変換]ノードの属性マネージャで[反転 Reverse]にチェックを入れる。
※立方体の回転を逆にしたい場合、もうひとつの基本的な方法として[出力の上限]を「360°」から「-360°」に変更しても同じ結果が得られる。
オプション3:Xスプライン 4:58~
入力値を非線形に出力値に変換するのが、属性マネージャの一番下にあるグラフ「Xスプライン」の機能。
- グラフ上で右クリックするとメニューが現れる。まずデフォルトの「線形」([スプラインプリセット>線形 Linear])を選択する。
以下のようになる。ビューポートでの立方体の回転に変化はない。立方体は一定のスピードで回転する。
- 他のスプラインセットを選択してみる。3次ベジェ曲線の[三次]([スプラインプリセット>三次 Cubic])を選択。
グラフは以下のようになる。ゆっくりと回転を始め、終わりに向けてスピードアップ。
ビューポートでチェック([下を切る][上を切る]のチェック入れています)