ロボットアームの関節を動かす

  • 形状とジョイントの違い
  • シーケンスモード
  • キーフレームの登録
  • 簡易表示を無効化
  • モーションとアニメーションの違い

今回以降は、Shade3DのBasic/Standard/Professionalのいずれでも操作できます。

今回はロボットアームの関節とケーブルをアニメーション対応できるようにします。
前回はアニメーションの基礎の説明と、ロボットアームをNURBSからポリゴンメッシュに変換するところまで進みました。
また、ウォークスルーアシスタントを使用してターンテーブルのアニメーションレンダリングを行いました。

ウォークスルーアシスタントで作成された形状をブラウザから削除し、
統合パレットのカメラウィンドウでのカメラの選択をメタカメラに戻します。

形状の構成は以下のようになっています。
マーカーで色を付けている部分が回転ジョイントです。

回転ジョイントは以下のように配置されています。

形状とジョイントの違い

すべての形状は変換要素(変換行列)を持っています。
この変換要素で、移動/回転/スケール/せん断の指定を行います。
ポリゴンメッシュの場合は、Shade3Dでは変換要素は常に移動 0 / 回転 0 / せん断 0 / スケール 1です。
この変換要素は、ブラウザで形状を選択したときに形状情報ウィンドウの「パート属性」-「変換要素」で確認できます。

ジョイントの場合は、変換要素に加えてモーション用の要素を持ちます。

ジョイントも変換要素を持ちます。変換要素は形状に対して固定の値です。
一方、ジョイントの場合はジョイントごとに異なる可変の値を持ちます。
回転ジョイントの場合は、指定の軸に対する回転値を持ちます。
これを変更することでモーションを与えることになります。

ブラウザで回転ジョイントを選択し、形状情報ウィンドウの「回転ジョイント属性」の「回転」スライダを調整しました。
この回転値をキーフレームに登録していくことで、ロボットアームを指定の動きで動かすことになります。

モーションウィンドウでキーフレーム登録

メインメニューの「表示」-「モーション」を選択するとモーションウィンドウが表示されます。
ブラウザでジョイントを選択すると、ジョイントごとにタイムラインが表示されます。

モーションをキーフレームで与える場合は、いくつかの知識を押さえる必要があるため先にそれらを説明していきます。

シーケンスモードのオン/オフの違い

Shade3Dでは「シーケンスモード」というオプションが存在します。
コントロールバーのシーケンスモードの切り替えの選択、モーションウィンドウの「シーケンス」のチェックボックス、
メインメニューの「モーション」-「シーケンスモード切り替え」のいずれかで変更できます。

シーケンスモードをオフにした場合は、静止した状態のポージングでジョイントを指定します。
この場合は、モーションを与えることはできません。
ジョイント値の指定はできますが、単一のポーズを保持します。
シーケンスモードをオンにした場合はタイムラインが有効になり、タイムラインにキーフレームを複数登録していくことができます。
ジョイントにモーションを与える場合は、「シーケンスモードをオンにする」という操作が必要になります。

なお、モーション情報を持つことができるファイルフォーマット(fbxやglTF)でエクスポートする場合、
シーケンスモードがオフ時のポーズがアニメーションを行う前のデフォルトポーズとして使用されます。
これを基準にアニメーションすることになるため、破綻のないリラックスしたポーズをシーケンスオフ時に与えておく方が効率がいいです。
例えば以下のような単純な円柱にボーンを与えた場合、
シーケンスモードがオフ時に左のようなポーズは向きません。

ファイルとしてエクスポートした場合、特にリアルタイム環境で使う場合は法線は固定で与えられることが多いです。
その際に、上記の左のようなポーズのときは関節部分に不正な陰影が見えることになります。

キーフレームの登録

それでは、シーケンスモードをオンにしてキーフレームを登録していきます。
対象の回転ジョイントをブラウザで選択します。
モーションウィンドウで「シーケンス」チェックボックスがオンになっていることを確認します。

タイムラインで0フレーム目に移動しているのを確認し、形状情報ウィンドウの「回転ジョイント属性」の「回転」スライダを調整します。
図形ウィンドウでポーズが変更されるため、ちょうどいいところで止めてモーションウィンドウの「+」ボタンを押します。
これで、指定のフレーム位置でキーフレームが登録されます。

次に、モーションウィンドウで30フレーム目に移動し、形状情報ウィンドウで回転ジョイントの回転値を変更、
モーションウィンドウの「+」ボタンを押します。

モーションウィンドウで0フレーム目に移動して再生ボタンを押すと、以下のように90度回転するアニメーションが再生されました。

このようにキーフレームを登録していくことで、この1つの回転ジョイントでの動きを付けることができるのが分かります。
なお、現段階では配線のケーブルはモーションでついてきていません。
これは後々スキンを使用する際に説明していきます。

複数の回転ジョイントのキーフレームを登録

今までは「土台」の+Y向きの回転ジョイントのみでモーションを付けました。
続いて、他の回転ジョイントにもキーフレームを指定してより複雑な動きを付けていきます。
形状情報ウィンドウの「回転ジョイント属性」をその都度調整するのも手間ですので、「ジョイントモード」を使用します。

ジョイントモード

コントロールバーで「ジョイント」を選択すると、ジョイントモードになります。

このとき、図形ウィンドウでのクリックによりジョイントのみが選択できます。
また、選択されたジョイントの編集を行うことでジョイントとしての回転値を変更することができます。

この複数のジョイントをジョイントモードでポージングしキーフレームに登録する、
という作業を繰り返すのが一番早い手順となりそうです。
Enterキーを押すと、ジョイントモードから抜けてオブジェクトモードになります。
オブジェクトモードでマニピュレータを使って操作すると、形状自身の変換要素を変更することになるため注意する必要があります。
モーションを与えるための操作は、必ずジョイントモードで行うようにしてください。

また、複数のジョイントのキーフレームを登録する場合は、
登録したいキーフレームの位置を確認後、一番親のジョイントを選択してモーションウィンドウの「+」ボタンを押すようにしてください。

こうすることで、指定のジョイントの子として含まれるジョイントの回転値もまとめてキーフレームに登録されます。

5か所のキーフレームを登録し、以下のようになりました。

アニメーションレンダリングすると以下のようになりました。

ケーブルがついてきていなかったり、地面がちらつく部分があります。
これは、次回以降で対処していきます。

再生ボタンを押すとワイヤーフレーム表示になる(簡易表示)

モーションウィンドウの再生ボタンを押すとワイヤーフレーム表示になるのは、Shade3Dの処理を軽くするためではあるのですが、
アニメーション再生中はシェーディング表示されていてほしいです。
この対策として、モーションウィンドウの時計アイコンの箇所をクリックしてポップアップメニューを表示し、「簡易表示」をオフにします。

まだ負荷がかかる場合は、この指定でもワイヤーフレーム表示になる場合があります。
その場合はメインメニューの「図形」-「全てのビュー」-「表示オプション」-「簡易表示」もオフにするようにします。

モーションとアニメーションの違いは?

今まで、「モーション」と「アニメーション」という単語を使っていました。
これらの違いを明確に書いていなかったので、ここで整理しておきます。

「モーション」とは「動き」のことを指します。
ロボットアームの関節を回転ジョイントで動かすことそのものは「モーションをつける」のように使用します。
レンダリングしたロボットアームが動いている動画は「アニメーション」となります。
Shade3Dの「モーションウィンドウ」はモーション(動き)を与えるための機能を提供し、
動画のレンダリングが「アニメーションレンダリング」となります。
結構あいまいに使われる単語となり、同じ意味合いで使われる場合も多々ありそうです。

今回はここまでです。
Shade3Dでのキーフレームアニメーションについて、回転ジョイントを使用して解説しました。
今回は、配線のケーブルがロボットアームについてきて変形する処理は飛ばしました。
これは次回解説予定です。

カテゴリー: ロボットアームを動かす