二足歩行ロボットコミュニティサイト

【サイトの使い方】  【サイトマップ】  【お問い合わせ】 
ロボット動画  |   ロボット写真  |   BBS  |   ダウンロード  |   イベント予定  |   スタッフ日記  |   リンク  |  
ログイン パスワード    新規登録   パスワード紛失  

 

第5回 モーション作成 ループ構造について

DVDレンタルでKILLBILLを見ました。
某宇宙刑事な方が登場されていました。

それはともかく、今回はモーション作成の基礎における天王山、「ループ構造」についてです。

ポーズの実行順序は変更できる

これまで作成したモーションは、必ず000番目のポーズから番号順に再生されました。
これを見て、皆さんは「モーションは必ず番号順にポーズを実行するもんだ」とお思いかもしれません。

しかし、実はモーション中のポーズの実行順序は自由に変更できるのです。

モーションスライダにご注目ください。

モーションスライダ
右から二番目、図中「004」の数値を「nextポーズ」という

右から二つ目の数値は「nextポーズ」といい、モーション再生中に次に実行するポーズの番号を表します。
nextポーズは、ポーズスライダなどと同じように、数値の右横のスピンボタンで値を増減できます。

例えば上の写真だとnextポーズが「004」なので、モーション再生中にこのポーズを実行した後は、次に004番目のポーズを実行します。
「004番ってどの数字?」と思われる方は、第3回の内容を思い出しましょう。そう、モーションスライダの左端の数字「ポーズ番号」のことです。

では、もう少し視野を広げて説明していきましょう。

サンプルモーション
このモーションを再生すると、上から順番にポーズが実行される

例えば上のモーション、これを再生するとポーズはどのような順番で再生されるでしょうか。

第3回で、「モーションは必ず000番目のポーズから始まる」と説明しました。これは、どんなときも変わらない原則です。

このモーションを再生して000番目のポーズを実行すると、次に実行するポーズは000番目のnextポーズに従います。000番目のポーズのnextポーズは001です。ということは、次に実行するポーズは、真下の001番目のポーズです。

では次に001番目のポーズを実行します。001番目のポーズのnextポーズは002なので、次に実行するポーズは、また真下の002番目のポーズです。

002番目も003番目も真下のポーズがnextポーズになっていますね。どんどん再生を進めていきましょう。

004、005、と進んで...はい、最後の006番目のポーズまで行きましたね。もう後がありません。006番目のnextポーズは「---」となっています。これは何でしょうか?

これは、モーションの終端、つまり「ここでモーション再生は終わりです」を表すものです。

これまで説明したモーションの作成手順のように、DUPボタンボタンを押してポーズを追加するだけの場合、このように必ず上から順番にポーズが実行されるように自動的に設定されます。

さあ、次は先ほどのモーションにちょっとひねりを加えましょう。

ひねったサンプルモーション
このモーションを再生すると、004番目のポーズが飛ばされ、また006までいかずに005のポーズでモーション再生が終了する

000番目のポーズのnextポーズは001、001番目のポーズのnextポーズは002、と、ここまではさっきと同じですね。

次の002番目のポーズ、nextポーズが番号をひとつ飛ばして004になっています。これを再生するとどうなるでしょうか?

そう、003のポーズを飛ばして004のポーズを実行します。どんどん続きます。004番目のポーズのnextポーズは005、005番目のポーズのnextポーズは「---」です。ということは....?

「---」は先ほども説明したとおりモーションの終端です。「あれ?まだ006が残っているじゃないか」と思われるかもしれませんが、誰がなんと言おうと、006番目のポーズは実行せずに、005番目のポーズまでを実行してモーションは終了です。

どうですか?だいたいの感覚はつかめたでしょうか?

同じポーズを繰り返し実行するには?

では、nextポーズに下側のポーズ(自身より大きい番号のポーズ)ではなく、上側のポーズ(自身より小さい番号のポーズ)を設定するとどうなるでしょうか?早速やってみましょう。

無限ループ
このモーションを再生すると、001〜003のポーズが永久に繰り返される

このモーションを再生すると、000,001,002,003とポーズを実行します。そして003番目のポーズのnextポーズ「001」に従って001番のポーズを実行した後、再び001番のnextポーズに従って002,003と実行、また003のnextポーズに従って001に逆戻り....と同じポーズを繰り返して実行しますね。実に当然の結果です。

さあ、これで同じ動作を繰り返させる方法もわかりました。モーション作成の基礎は習得完了、めでたしです。

....と行きたいところですが、そうは問屋が卸しません。実はこの繰り返し、重大な欠陥を抱えているのです。このモーションを再生すると、永遠にモーション再生が終わることなくロボットが動き続けるのです。

「じゃあ、停止ボタン(停止ボタンボタン)を押してモーションを終了させれば済む話じゃないか」とお思いの方、残念ながら、そうは行かないのです。

例えばこのモーションをコントローラのボタンに割り当てて、コントローラからの操縦でモーションを呼び出したとします。
しかし、コントローラには停止ボタンボタンの役割を持つボタンはありません。必ずnextポーズが「---」のポーズを実行させてモーションを終了させなければいけません。

ちなみに、このように停止ボタンを押さない限りモーション再生が永久に終わらないものを「無限ループ」もしくは「無限ループ構造」といいます。モーションの中に無限ループが見つかると、モーションを再生したりファイルに保存するときにRobovieMakerに怒られるので、無限ループを含むモーションを作らないようにしましょう。

さあ、ではどうすればよいのでしょうか?答えは、これまでずっと解説してこなかった、モーションスライダの最後の数値「breakポーズ」にあります。

breakポーズでモーションのループの抜け道を作る

モーションスライダの右端の数値を「breakポーズ」といい、無限ループを抜けてモーション再生を終了するための抜け道を設定するためにあります。数値は、nextポーズと同じように右横のスピンボタンをクリックして増減できます。

breakポーズはnextポーズと似ており、やはり次に実行するポーズの番号を設定します。しかし、ある条件を満たしていない限りbreakポーズに設定したポーズ番号にジャンプすることはありません。
それでは、一定の条件とは?そう、モーションのループに関係する条件です。

breakポーズを設定したモーションの具体例を挙げましょう。

正しいループ構造
このモーションを再生すると、001〜003のポーズを数回繰り返した後、002から004へジャンプする

このモーションを再生すると、001〜003のポーズを何度か繰り返した後、002のポーズから004のポーズへジャンプします。004へジャンプした後は、004,005と進んで無事モーションの再生を終了します。

このように、breakポーズはループを抜けてどこかのポーズにジャンプさせる、いわば「ループの脱出先」を設定するものです。

ここで、「脱出先をわざわざ設定しなくても、折り返し地点(上記モーションでは005のポーズ)の真下のポーズに抜けるようにすれば楽なのに」と思われる方もいるかと思います。

しかし、よく考えてください。そのような仕組みにすると、折り返し地点の次に必ず抜け道の動作が来るようにモーションを作成しないといけません。単純なモーションなら良いですが、中には折り返しの次にちょうど良く抜け道の動作を設定するため、わざわざ余計なポーズを追加しなければならないという場合もあります。

また、もっと大変なことがあります。例えば歩行モーションを作成するとしましょう。決められた歩数だけ歩いて立ち止まるときに、その歩数が偶数か奇数かで、最後に踏み出す足が左右で異なることはわかりますね?

歩行モーションのループは、「左右の足を交互に出す」という動作の繰り返しで実現しますが、「右足が前に出ている状態」と「左足が前に出ている状態」とでは、立ち止まるまでの動作は当然異なります。

しかし、「折り返し地点の真下」の一箇所にしか脱出先の動作を用意できないとなると、左右どちらかの脚を踏み出した状態のものしか脱出先の動作を作ることができず、脱出先を用意できなかったほうの脚が前に来たとき、もう一歩余計に踏み出さないと脱出先の動作へジャンプできなくなります。

一方、breakポーズを利用すると、直立に戻るまでの脱出先に、「右足を前に出した状態から元に戻る」動作と「左足を前に出した状態から元に戻る」動作の二通りを作成し、左右各脚を踏み出すモーションの最後にそれぞれ脱出先として設定することで、余計に歩かなくて済むのです。

同様に、ロボットの状態に応じてまったく別の脱出先の動作にジャンプさせたいような局面というのはたびたび登場します。
そのような要望にこたえるため、「breakポーズ」という仕組みが存在するのです。

とはいっても、最初はこの扱いはなかなか慣れないものだと思います。まずは難しいことを抜きにして、「任意の動作を繰り返す場合は、抜け道の動作を作ってbreakポーズでジャンプさせないといけない」とだけ覚えて置いてください。

モーションのループの回数を決めるには?

さあ、breakポーズまでしっかり組み込んだモーションを再生すると、何度かループを繰り返してからbreakポーズに従ってモーションの終了へ向かうというところまではご理解いただけたでしょうか?

では、このときループを繰り返す回数はどこで設定するのでしょうか?RobovieMakerの画面右上をご覧ください。

ループ回数
再生時間オーバーライド(「100%」の数値)の左隣、「3」の数値を「ループ回数」という

モーション全体の遷移時間を設定する「再生時間オーバーライド」(前回出てきましたね)の左隣に、もうひとつ数値とスピンボタンがあるのがわかりますか?

これを「ループ回数」といい、モーションを再生すると、ここで設定した回数だけループを繰り返します。

ここで注意すべき点があります。ループ回数は、単純に「モーションを折り返した回数」ではなく、「モーション再生中にbreakポーズを設定したポーズを実行した回数」を数えるのです。

これはどういうことでしょうか?実例を交えて説明します。

(1)ループ中にbreakポーズがひとつ
breakポーズがひとつ

(2)ループ中にbreakポーズが二つ
breakポーズが二つ

先ほど登場したモーションを参考に、上側の,論茲曚匹汎韻検下側の△003のbreakポーズも004に設定しました
これらのモーションをループ回数「3」で再生すると、どちらも同じ数だけループを繰り返すように思えます。では、これらのモーションを再生するとどのような流れでポーズが実行されるのか、実際に見ていきましょう。

(◆印がついているのが、breakポーズを設定したポーズです)
(1):000→001→◆002→003→001→◆002→003→001→◆002→004→005
(2):000→001→◆002→◆003→001→◆002→004→005

どうですか?それぞれのモーションでループを抜けるタイミングは異なりますね。
しかし、breakポーズを設定したポーズを数えると、どちらも設定したループ回数「3」に達したときに、breakポーズに従ってループを抜けています。

ちなみに、ループ回数に「-1」を設定すると、breakポーズの設定にかかわらず永久にループを繰り返すようになります。

最後にもうひとつ注意です。ループ回数は再生時間オーバーライドと同じようにファイルには保存されません。
では、再生時間オーバーライドのようにモーション中に何か反映させるのかという、そうでもありません。スープ回数はモーションを再生する状況に応じて個別に設定されるのです。例えばモーション作成時はRobovieMaker右上のループ回数が適用されますが、コントローの操縦でモーションを再生する場合は、「コントローラのボタンを押している間ループし続け、ボタンを離すとbreakポーズに従ってループを抜ける」ようになります。また、ロボットに特定の行動をさせる「オートデモ」では、モーション作成時と同じようにループ回数の設定がありますが、モーションごとに個別に設定することが可能です。

あとがき

RobovieMakerの基本で一番厄介なところが終わりました。おそらく今回の内容で通常の回の2〜3倍の分量と難易度はあるんじゃないかと思います。お疲れ様でした。

ちなみに、質問掲示板の「RobovieMaker連載 補足事項」のスレッドでは、今回の補足として「この画像のモーションを再生すると、どういう順番でポーズを実行するか?」という練習問題を掲載しています。
というか、掲載予定です(2006/11/15現在)。掲載が遅れたらすみません。いつまでも掲載されなかったらもっとすみません。

また、第2回から今回までの内容は、RobovieMaker取扱説明書の「3-1.ポーズエリアの概要説明」から「3-4.モーションの組み立てを行う」の最後までにあたります。余裕があれば復習してください。

ちなみに、あと、これまで特に説明しなかったモーション自体の作り方(歩行、起き上がり、前転、側転などの激しいモーションをうまく作るコツなど)については、またの機会に行いたいと思います。

が、これについてここで核心を一言、「作りたいモーションを自分の体で実演してみれば、おのずとモーションの作り方はわかる」ということです。

次回予告

ここまでの内容で、皆さんは腕によりをかけて様々なモーションを作成してくれていることでしょう。では、作ったモーションをコントローラに組み込んで操縦したい場合は?

次回は、コントローラでロボットを操縦するための設定「操作マップ」について説明します。


前のページ
第4回 モーション作成 動きの速さを調整する
コンテンツのトップ 次のページ
第6回 コントローラの操作設定


検索
Loading
メインメニュー