チュートリアル / もしもMotionBuilderでプリビズをしたら
第14回:デバイスをもっと使いこなそう
- MotionBuilder
- アニメーション
- コラム
- チュートリアル
- 上級者
- 中級者
- 映画・TV
前回はマウスとキーボードを組み合わせたデバイス活用についてお話ししました。デバイスを使えば、他の3DCGソフトウェアでは難しい外部機器によるオブジェクトの制御が非常に簡単にできることがお分かり頂けたのではないでしょうか。さて今回は、デバイス制御の総まとめとして、デバイスの代表格であるゲームコントローラーを使ってみようと思います。
ゲームコントローラー
3DCGを制作されている方々の中で、子供の頃からゲームをまったくしたことがないという方はほとんどおられないでしょう。おそらく、ゲームコントローラが持つコントロール感覚はもっとも慣れ親しんだものとも言えるかもしれません。それが3DCG制作に活用できるとすれば非常に面白いと思いませんか。私が使用しているのは、ELECOM社のJC-U3412シリーズです。ワイヤレス通信も安定しており、使用感もとても良いので気に入ってます。もちろんこの機種以外でも使用することができます(まれに認識しないものもあるのでご注意ください)。USB接続のゲームコントローラも使用する事が可能です。
MotionBuilderで使う前に、ゲームコントローラーの各ボタンがどういうアサインになっているか見ておきましょう。
OS(Windowsの場合)のデバイスマネージャーでゲームコントローラーの設定からプロパティを開くと、各ボタンのアサイン情報を確認することができますので、メモしておきましょう。
準備ができたらMotionBuilderでの設定に移ります。
MotionBuilderで使ってみましょう
Asset BrowserのDevicesの中に「Joystick」があります。これがゲームコントローラーを使用するためのデバイスです。これをマウス等と同様にViewerへドラッグ&ドロップし、Joystickデバイスをシーンへインストールします。NavigatorのFiltersの中のDevicesにJoystickが入りましたね。JoystickをRelationへドラッグ&ドロップしてみましょう。ゲームコントローラーの各ボタンが入力として使えることが確認できます。
ここで注意点として、Joystickデバイスは汎用的なデバイスなので、ゲームコントローラーの全てのボタンが使えるとは限りません。先にメモしたボタンのアサイン情報と見比べながら、どのボタンをどう活用していくか、設計して行くことが必要となりますので、注意しましょう。
どのボタンを制御として使っていくかを考える時、入力されるデータ構造を頭に入れておくことが必要です。Buttonのデータは「Action」です。これはボタンが押された時に値を出力します。つまり、ボタンが押されたかどうかを判断するだけで、数値データではないので扱いには注意が必要です。
今回は、マウスと同様にNumberで出力されるRUVXYZを使ってみましょう。RUVXYZはゲームコントローラーのジョイスティックによる数値データです。ELECOM社のJC-U3412シリーズでは左側のジョイスティックの左右方向がX、前後方向がY、右側のジョイスティックの左右方向がZ、前後方向がRに割り当てられていることがわかっています。では、XをCubeのX軸方向の移動、YをZ軸方向の移動、ZをX軸周りの回転、RをY軸周りの回転とする制御システムをつくってみましょう。
ジョイスティックの出力Numberは中心を50として0から100になっています。ですので、マウスの時と同様にジョイスティックが中心位置にある時は0になるように、Substractを使ってデータを整理しておきます。それを移動と回転でそれぞれVectorへ変換してから、CubeのTranslationとRotationへ渡します。これで完成です。
いかがでしょう。左のジョイスティックを動かすとCubeがXZ平面を移動し、右のジョイスティックを動かすとCubeがX軸とY軸で回転するようになったと思います。
マウスとキーボードを組み合わせた時とは違い、操作感が良くなったのではないでしょうか。
今回はジョイスティックだけを使った制御を実現してみましたが、他のボタンと連携させることによって様々な機能を実現することができるようになります。移動をXZ平面だけでなくY軸を組み合わせた3次元空間を移動させることもできますし、同様に回転もXYZの全ての軸周りでできるようにもなります。拡大や縮小を制御することも可能です。
3回にわたってデバイスについてお話してみました。MotionBuilderの最も特徴的な機能がこのデバイスです。ぜひ、いろいろお試し頂いて、自由自在な制御を実現してみて下さい。きっと、アニメーション制作の可能性を拡げることができると思います。
次回は、MotionBuilderとMayaとでのデータやり取りについてお話したいと思います。お楽しみに。