CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender 3.3】ロボットを作って動かしてみよう!
こんにちは!
コチラの記事では、フリーの3DCGソフト「Blender」を使う上でのヒントになる情報を発信しています。
今回は、Blenderでロボットを作って動かすための基本的なやり方について紹介します。
別々のオブジェクトに分かれたパーツとボーンを関連付けて、ボーンコンストレイントなどを使ってロボットっぽい動きをさせる方法を解説するので、ロボットを作りたい方はぜひ参考にしてみてください。
ロボットの特徴
「ガンダム」のようなロボットを、Blenderで作って動かしたいという方は多いのではないでしょうか?
「ロボット」のモデリングの特徴をざっくりと挙げると、以下2点になるかと思います。
- パーツが分かれていて、別々に動く
- 関節の曲がる方向が決まっている
「パーツが分かれていて、別々に動く」のイメージとしてはこんな感じです。
手前のオブジェクトは2つに分かれていて、それぞれのパーツを別々のボーンにペアレント設定し、奥のオブジェクトは自動でウエイトペイントしたものです。
奥のオブジェクトは生物っぽく関節部分がやわらかく変形して見えるのに対して、手前のオブジェクトはロボットのように硬そうに見えるかと思います。
「関節の曲がる方向が決まっている」のイメージはこんな感じです。
手前と奥のオブジェクトは両方ともボーンにIKコンストレイントを追加してターゲットオブジェクトに追従させて動かしています。
奥のオブジェクトは各関節が自由な方向に曲がっていますが、手前のオブジェクトは各関節の曲がる方向を固定したのでよりロボットっぽい動きを表現できています。
これらの動きを表現するために、次の「ロボットアームの作り方」のセクションで、「各ボーンを各パーツに関連付ける」「関節の曲がる方向を固定する」やり方を具体的に紹介します。
ロボットアームの作り方
ロボットの動きを表現する方法を、具体例を交えて紹介していきます。
最終的には、コチラのようなアニメーションを作れるようになります。
今回紹介する方法は、ロボット全般のアニメーション作成に使える方法なので、ぜひ参考にしてみてください。
モデリング方法
まず、立方体オブジェクトからロボットアームの腕のパーツを作っていきます。
コチラの例のように、関節部分の形状はループカット&押し出しなどを使って表現します。
アームの先端の関節は軸回りに回転させたいので、円柱オブジェクトから作ります。
アームの先端の物をつかむ部分(マジックハンド)は、コチラのように円柱オブジェクトを押し出して作ることができますが、ぜひみなさんの好みの方法で作ってみてください。
ボーン・リグの追加
ボーン(リグ)を追加します。
「Shift+A」をクリックして「アーマチュア→単一ボーン」を選択すると3Dカーソル位置にボーン(リグ)が追加されます。
このままだとメッシュオブジェクトに隠れてボーン(リグ)が見えないので、「オブジェクトデータプロパティ(人のマーク)」をクリックして「ビューポート表示」→「最前面」にチェックを入れると、ボーン(リグ)が常に最前面に表示され編集しやすくなります。
Tabキーで編集モードに切り替え、ボーン先端が関節位置に来るように、Eキーで押し出しを繰り返して、リグにボーンを追加していきます。
マジックハンドの部分は、画面右上の「X軸対称」を有効にしてショートカットキー「Shift+E」キーをクリックすると、左右両側に押し出せます。
リギングの基本についてはコチラの記事で紹介しているので、あわせて参考にしてみてください。
パーツとボーンのペアレント設定
リグの各ボーンと各オブジェクトを1対1で関連付けていきます。
リグを選択した状態でTabキーをクリックし、編集モードに切り替え、関連付けたいボーンを1つだけ選択します。
Tabキーでオブジェクトモードに切り替え、Shiftキーをクリックしながら「関連付けたいオブジェクト」→「リグ」の順番でクリックし、ショートカットキー「Ctrl+P」をクリックします。
「ペアレント対象」の選択画面が開くので、「ボーン」を選択します。
「Ctrl+Tab」でポーズモードに切り替え、ボーンを動かすとオブジェクトもそれに追従して動くようになります。
同じように、すべてのオブジェクトを、各ボーンとペアレント設定してください。
オブジェクトに親子の関係を持たせる「ペアレント」について、詳しくはコチラの記事にまとめているので参考にしてみてください。
ロボットのパーツとボーンを1対1でペアレント設定する方法については、コチラの記事を参考にしました。
油圧シリンダーの作り方なども含めて丁寧に紹介されているので、あわせて参考にしてみてください。
リグ関節の「IK」コンストレイントの設定
ロボットアームにアニメーションをつけるために、ボーンコンストレイント「IK(インバースキネマティクス)」を追加します。
まず、「Shift+A」→「エンプティ(Empty)→十字」をターゲットオブジェクトとして追加し、アームの先端付近に配置します。
つぎに、リグを選択し「(Ctrl)+Tab」からポーズモードに切り替え、回転部分につながるアーム先端のボーンを選択し「ボーンコンストレイントプロパティ」から「ボーンコンストレイントを追加」をクリックします。
「インバースキネマティクス」を選択し、「ターゲット」に「Empty」を選択します。
オブジェクトモードに切り替えてエンプティオブジェクトを移動させると、リグの各関節が、それに追従するように曲がるようになります。
このままだと関節が自由に曲がってしまいロボットっぽくないので、各ボーンのIKをロックします。
まず、各ボーンのローカル座標系のX,Y,Z方向が分かるように、「オブジェクトデータプロパティ」→「座標軸」にチェックを入れて座標軸を表示します。
「ボーンプロパティ(骨のマーク)」を選択し、「インバースキネマティクス(IK)」→「IKをロック」で、関節の曲がってほしい方向以外の成分にロックを掛けます。
すると、IKでリグを動かしたときに、設定した関節はロックを掛けた方向には曲がらなくなります。
同じように、すべてのアームのボーンにIKロックを設定すると、各関節が一方向にのみ曲がるようになり、ロボットのような機械的な動きを表現できるようになります。
関節を動かすのに便利な「IK」「FK」の設定方法については、コチラの記事で詳しく紹介しているので、あわせて参考にしてみてください。
アーム先端の「トランスフォーム変換」コンストレイントの設定
アーム先端の部品を回転させるのには、ボーンコンストレイント「トランスフォーム変換」を使います。
エンプティオブジェクトを追加し、グローバルX軸上に配置します。
ポーズモードでアーム先端の回転させたいボーンを選択し、「ボーンコンストレイントプロパティ」から「トランスフォーム変換」を追加し、「ターゲット」に追加したエンプティを設定します。
このままだと動かないので、トランスフォーム変換の「変換元」と「変換先」に以下を設定します。
- 変換元:「位置」を選択
- 「Yの最小値」を-1m
- 「Yの最大値」を1m
- 変換先:「回転」を選択
- 「Yの変換元」は「Y」
- 「Yの最小」を-90°
- 「Yの最大」を90°
下の例のようにエンプティをY方向に移動してもボーンのY軸回りに回転してくれない場合は、「変換先」の「順序」をデフォルトから「YXZオイラー」に変更します。
すると、エンプティをY方向に移動すると、ボーンおよびペアレント設定されたオブジェクトがボーンのY軸回りに回転するようになります。
マジックハンドについても、別のエンプティオブジェクト(見分けやすいように「矢印」を使用しています)を追加して「トランスフォーム変換」コンストレイントを追加してやることで、コチラのように物をつかむ動きを表現できるようになります。
ボーンの動きをコントロールするのに便利な「ボーンコンストレイント」の使い方については、コチラの記事もあわせて参考にしてみてください。
オブジェクトコンストレイントの設定
オブジェクトコンストレイント「チャイルド」を使うと、コチラのように物をつかんで動かすアニメーションを作ることができます。
やり方を簡単に紹介します。
チャイルドの「ターゲット」は、アーム先端のオブジェクト、またはエンプティオブジェクトに設定します。
「影響」の値を1にするとボールはオブジェクトに追従して動き、「0」にすると元の位置に戻ります。
チャイルドコンストレイントの「影響」を1にした状態のまま、180フレーム(ボールを離す瞬間)にキーフレームを追加し、185フレームでボールを垂直方向に動かしてキーフレームを追加します。
190フレーム目で「影響」を0にするとボールは元の場所に戻ってしまうので、189フレーム目でボールの位置にキーフレームを追加した後、3Dカーソルをボールの位置に設定します。
190フレーム目で、3Dカーソルの座標をボールのトランスフォーム位置X,Y,Zにコピペしキーフレームを打つと、ボールがその場に留まるように見せることができます。
変形アニメーションの作り方
先ほど紹介した「チャイルドコンストレイント」を使うと、コチラのように「ある物体が変形してロボットが現れる」アニメーションを作ることができます。
簡単にやり方を紹介します。
関節は、「ロボットアーム」で紹介したように「IK」+「ボーンのIKロック」で設定します。
モンキーにチャイルドコンストレイントを追加し、ロボットのボーンをターゲットに設定します。
ロボットに変形した後、ポーズをとる前に「影響」が0から1に変わるようにキーフレームを追加すると、モンキーがロボットの体の一部として、ボーンに追従するように動きます。
参考チュートリアル
今回紹介した方法を複雑なパーツに応用することで、コチラの動画のようにバイクからロボットが変形するアニメーションが作れちゃいます。
パーツ一つ一つにキーフレームを設定するのは大変かと思いますが、興味がある方はチャレンジしてみてください!
なお、よりリアルなロボットをモデリングするには、「ハードサーフェスモデリング」の手法を取り入れることをオススメします。
ハードサーフェスモデリングの基本については、コチラの記事で紹介したのであわせて参考にしてみてください。
また、「Fluent」や「Hard Ops & Box Cutter」といった有料のアドオンを使うことで、工業製品のようにリアルなロボットのパーツを短時間でモデリングすることができます。
よりロボットの完成度を上げたい方は、コチラの記事を参考に検討してみてはいかがでしょうか?
リギングを効率化できるアドオン
最後にリギング作業を効率化できるアドオンをいくつか紹介していきます。
リギングを効率化できるアドオン
最後にリギングを効率化できるアドオンをいくつか紹介していきたいと思います。
Voxel Heat Diffuse Skinning – ウェイトを自動で簡単追加!
ワンクリックで自動ウェイトを付けてくれるアドオン。
標準機能の「自動ウェイト」よりも精度が高く、複雑なデザインの服でも綺麗にウェイトを塗ってくれます。
詳細は以下の記事で書いているので、参考にしてみてください。
Armature Tools – 髪の毛の自動リギング!
髪の毛のリギング・ウェイト付けをしてくれるアドオン。
メッシュを選択するだけで自動的に形状を認識し、リグが追加されます。ウェイトも付いているため簡単に髪の毛のリギングを行うことができます。
詳細は以下の記事で書いているので、参考にしてみてください。
Auto Rig Pro
言わずと知れたリギングの王道アドオン。
マーカーを置くことでリグが自動的に生成されます。IK・FKも使えるようにコントーラーが生成されるので、自由自在にキャラクターを操作できます。
他にも表情コントローラー等、多種多様な機能が含まれております。
詳細は以下の記事で書いているので、参考にしてみてください。
まとめ
Blenderでロボットを作って動かすための、基本的な方法について紹介しましたが、いかがだったでしょうか?
コチラの記事を参考に、「ペアレント設定」「ボーンコンストレイント」「オブジェクトコンストレイント」をうまく使いこなして、ロボットの世界に一歩足を踏み出していただければ幸いです。
最後に、今回のまとめです。
- ロボットの特徴
- パーツが分かれていて、別々に動く
- 関節の曲がる方向が決まっている
- ロボットアームの作り方
- モデリング方法
- ボーン・リグの追加:「可視化」→「最前面」をオンにすると良い
- パーツとボーンのペアレント設定:編集モードでボーンを選択してから「Ctrl+P」
- リグ関節の「IK」コンストレイントの設定:「座標系」の表示をオンにし、各関節のIKをロック
- アーム先端の「トランスフォーム変換」コンストレイントの設定:回転がおかしい場合は「変換先」の「順序」を設定
- オブジェクトコンストレイントの設定:チャイルドコンストレイント
- 変形アニメーションの作り方:チャイルドコンストレイントなどを使う