Connection

このページでは、 多関節物体をデザインする時のTipsを紹介します。

概要

コネクションビルダの編集対象

ビジュアルファイラーからユニットを呼び出して関節構造を構築し、その成果をモデル(L3C)としてファイルに保存します。
また、モデルを構築しながらユニットデータを修正したり、パレット(ATR)ファイルを読み込んでモデルに適用する事も出来ます。

キーボードショートカット

物体追加 Insert

ビジュアルファイラーを呼び出し、ユニットを三面図に追加します。

対象削除 Delete

選択中のユニットを三面図から削除します。

物体差し替え Ctrl+R

ビジュアルファイラーを呼び出し、選択中のユニットを別のユニットに置き換えます。

反転複製 Alt+X/Y/Z

選択中のユニットを、ワールド座標3軸のいずれかで反転した複製を作成します。
子孫ユニットを持つユニットを複製した場合、子孫ユニットまで全てが一括で複製されます。

目次

<-- 1.多関節化を前提としたモデリング 2.モデル構築のTips -->

多関節化を前提としたモデリング

ここはコネクションビルダのページだが、まずはパーツアセンブラレベルの話から。

ユニットの関節位置と軸

物体(L3P)をユニットとしてコネクションビルダに呼び出した時、その初期関節位置は、そのユニットのパーツアセンブラでの基点の位置となり、配置位置は、関節位置を基準としたパーツアセンブラでの物体の位置となる。
(この説明分かりにくいね。まぁ分かってくださいw)
これはモーションエディタに通常物体としてユニットを配置する時もほぼ同じなので、L1L2と使ってきた人なら周知の事実だろう。
これを踏まえると、多関節化を前提としたモデリングには2つの方法論がある。
1つ目は、パーツアセンブラ画面での基点がそのユニットの関節位置になる事を見越して、関節位置を基点に持ってくるようにしてモデリングする方法。
2つ目は、関節位置について考えずに、全体を一つの物体としてモデリングした後で、各部位にバラす方法。
<06.03.27追記>前者を「基点モデリング法」、後者を「全体モデリング法」と呼ぶ事にする。

一見すると、前者の方法が賢いように思えるが、hookyは断然後者をお勧めする。
ユニットの関節位置はコネクションビルダで簡単に変更できるので、パーツアセンブラの時点で意識する必要性はかなり薄い。
それに引き換え、前者の方法ではモデル(多関節物体)として組み上げた時にどんなバランスになるか計りにくいという大きなデメリットがある。
後者の方法では全体のバランスを見ながらモデリングができる。
このアドバンテージは大きい。
全身を組んでから各ユニットにバラし、それぞれの関節位置を基点に持ってくるという方法も考えられないではないが、前述の通り、コネクションビルダで簡単に関節位置を変更できるのだから、そんな無駄な手間をかける必要は全く無い。
これはただ無駄な作業というだけでなく、後述する効率的なビルディング作業の妨げともなる事なので、関節位置(パーツアセンブラでのユニットの位置)は気にしないでもらいたい。

一方で、パーツアセンブラの時点から絶対に意識しなくてはいけない事がある。
関節軸に対するユニットの角度だ。

物体をユニットとしてコネクションビルダに呼び出した時、その関節軸は、そのユニットのパーツアセンブラでのワールド3軸と平行になる。
初期関節位置が基点になるのだから、「基本操作」のページで「軸そのもの」と説明したメッシュ表示の実線が、そのままそのユニットの関節軸になる訳だ。
これも、L1L2と使ってきた人なら今さら言われるまでも無い事だろう。
そして、関節位置と違い、軸の角度は変更できない。
軸の角度に対して斜めに傾いたユニットを作ってしまうと、そのユニットは斜めに傾いたままでしか動かせない。
そのようなユニットは、思い通りに動かすのはかなり苦労する事になる。
これを避ける為には、パーツアセンブラで、メッシュ表示に平行なユニットを作る必要がある。
人体を作る時などは、パーツアセンブラでの造形時に、色気を出してユニットを傾けたりせず、忍耐の心で「死に体」をモデリングしよう。

逆に、斜めに傾いた軸を設定したければ、パーツアセンブラでの造形時にそのユニットを傾けておけばよい。

パレットの管理

言うまでも無い事だが、全身をまとめて造形すれば、当然その物体データには全身のユニットに使われるパレットが全て含まれる事になる。
そうなればパレットの管理もしやすい。
別名で同内容のパレットが重複する事も無くなる(統廃合すればよい、というよりそもそも重複しなくなる)し、「パレットを保存」で全てのパレットをまとめて保存しておけば、後からパレットをいじる事も簡単にでき、それを「パレットを全ユニットに適用」で各部位にバラしたユニット全てに適用する事も容易い。
複数のパレット(セット)ファイルを作っておき、必要に応じて逐次パレットを変える事が簡単に出来る。

造形の修正

全身をまとめて造形した物体データを残しておけば、後から修正をしたくなった時にも役に立つ。
多少のディテールの修正程度であれば、ユニットを直接修正すればいいが、バランスを変更したいような時には、全身のモデリングをやり直した後、再び各部位に分けて保存という方法が取れる。



モデル構築(ビルディング)のTips

前章を受けての構築法

「まず全体を一つの物体としてモデリングし、それを各部位に分けて保存したユニットで多関節物体を構築する」手法について、仔細な手順を紹介する。
とりあえず、ここでは人型のモデルを作ると想定して話をしよう。

モデリング

今回、大きい画像が多いので、縮小表示しておく。
原寸の画像を見る場合には、画像をクリックされたし。


またパーツアセンブラの話からだが、とにかくまずは全体を一つの物体として完成させてしまおう。
モデリングが完了したら、名前を付けて保存する。
このデータは残しておく事。



次に、この物体をユニット化したい部位に分けて別名で保存する。
左右対称など対になるユニットは、保存するのはどちらか片方だけでいいので、まず半身をサックリ削除。
複数選択&矩形範囲選択を活用してユニット1つ分のパーツを選択し、「選択範囲のパーツを保存」する。
この時、ファイル名を「物体(モデル)名_通し番号_ユニット名」等としておくと管理が楽になるし、L3の「仕様」である「同名の別のユニットと混同する」恐れも無くなる。



hookyはさらに細分化し、通し番号の前にカテゴライズを追加している。
例えば、腕であれば「LV3素体_A01左鎖骨」「LV3素体_A02左上腕」「LV3素体_A03左肘」「LV3素体_A04左前腕」…
脚であれば「LV3素体_L01左坐骨」「LV3素体_L02左モモ」「LV3素体_L03左膝」「LV3素体_L04左スネ」…
といった具合だ。

保存したらそのまま、保存した選択範囲のパーツは削除してしまおう。
(次のユニットを選択し易くする為に、用済みのパーツは無い方がいい)
これを、全てのユニットを保存するまで繰り返す。
ユニットを用意し終えたら、コネクションビルダでの作業に移る。

手順1.ユニットの追加

まずはユニットを画面に呼び出さない事には何も始まらないわけだが、この構築法では、最初に全てのユニットを呼び出しきってしまう。
全身をモデリングしてそれをユニット化するのは、この時の為なのだ。

これも、敢えて説明するまでも無いとは思うが、モデル(多関節物体)の関節構造はツリー構造になっており、「親子関係」がある。
まず、一番最初に呼び出されたユニットが全てのユニットの「親」(ベースユニット)になり、その後に追加されるユニットは「子孫」になる。
ユニットを追加する為には、「親」となるユニットを選択しなければならない。
追加されたユニットは、選択ユニットの「子」となり、親ユニットの位置・角度の影響を受ける。
対して、親ユニットは子孫の位置・角度の影響を受けない。
当然、足を親ユニットとして選択して、頭を追加したりしてはいけない。
まぁこの辺は改めて注意を促すまでも無い事だろう。

さて、話は変わるが、新たなユニットを追加する時、そのユニットがどの位置に出現するか、あなたは分かるだろうか。
パーツアセンブラやモーションエディタの様に、現在表示されている三面図の中央に出現する?
いいや、違う。
新たに追加されるユニットの初期位置は、
「親ユニットのユニット位置が、その親にあたるユニットのユニット位置から移動したのと同じだけ、親ユニットのユニット位置から移動した位置」 になる。
…この説明も非常に分かりにくいが、分かってください(笑

つまり、である。
ベースユニットが基点の位置にあって、追加したユニットをX軸方向に500移動したとしよう。
で、そのユニットを選択して子ユニットを追加すると、子ユニットはあらかじめ、さらに500移動したX:1000の位置に出現するのだ。
さらに、このユニットをX:500の位置に移動して子ユニットを追加すると、今度は子ユニットもX:500の位置に出現する。
自身の親にあたるユニットと、親ユニットの親に当たるユニットの間に移動距離が無いから、追加される子ユニットも移動しないのである。

この事から言えるのは、「ユニット追加→ユニット移動→子ユニット追加」の繰り返しでビルディングをすると、面倒が増えるという事である。
前章で語った「前者」の方法、つまり「パーツアセンブラの画面の基点に関節位置を持ってくる」モデリング法を行うと、必然的にこの面倒くさい作業をしなければならない。
「全部のユニットを追加し終わってから、ユニット移動をする」という方法もある。
しかしここでも問題はある。
コネクションビルダで、パーツアセンブラでのモデリング時に思い描いた通りのバランスを再現できるとは限らないからだ。

だからこそ、全身モデリング法を使うのである。
前述の通り、追加される子ユニットの位置は親ユニットと祖先ユニットの相対位置に影響を受ける。
影響を受けない方法はただ一つ、「ユニット移動を一切行わず、全てのユニットを追加する」事だけだ。
そして、全身モデリング法でユニットを制作していると、この時点で、パーツアセンブラで組んだ全身を、全く同じバランスで配置できるのだ。
(正確には、半身が無い状態。反転複製はまだ行わない。)
最初から最後まで、「ユニット位置変更」を一切使う事なく関節構築を完了できる。
それだけ手間も省けるし、作業のミスも減らせる。


このように、親子関係にのみ気をつけてユニットを追加していくだけ。
全てのユニットの関節位置が基点に集中しているのが分かる。
最初に追加しているのは、後述するダミーベースユニット。

手順2.関節位置変更

ユニットの追加が終わったら、作業は半分終了したも同然だ。
残り半分は、この「関節位置変更」作業になる。
関節位置変更は、「ユニット位置変更」と違い、変更する事で子孫ユニットに影響を与える事は無い為、どんな順番で作業しても構わない。
気の済むまで関節位置を調整しよう。

手順3.ラベルを貼る

ラベルはL3から追加された仕様で、関節に名前を付けて識別するものである。
L2では関節に名前がついておらず、ポーズデータは、「関節構築時に、ユニットが追加された順番」で記憶していた。
その為、データの同一性保持については、「ポーズを保存した後、ユニットを一つ削除して追加し直す」だけでポーズが壊れるという、信じられないほどお粗末な貧弱さを晒していた。
この点は、ラベルを貼らないとL3でも同じなので、必ず全てのユニットにラベルを貼っておくようにしたい。

ちなみに、ポーズデータは、親ユニットに対する相対位置・相対角度で記録されている。
よって、ツリー構造…親子関係が違うと、同じポーズを再現できない。
例えば、ベースパーツを腹にするか、腰にするかだけでポーズは変わってしまう。
これは別に仕様が悪いわけではないが、最新のLE3のコネクションビルダにある機能のように、他のモデル(L3C)ファイルからポーズデータを持ってきても、関節の順序が違うと完全には適用できないので注意して欲しい。

で、ラベルを貼る時の注意点だが、
・同じラベルを2枚貼ってはいけない。
・ラベルを貼るのは関節位置変更が全て終わってから。
以上2点である。

まず1つ目、ラベルが重複すると、ユニットの初期位置がバグる。
同じラベルが貼られたユニットは、同じ位置に重なるように勝手に移動してしまう。
こうなるとポーズデータも全て壊れる。
上述の通り、今まで区別していなかった物を、ラベルを貼る事でようやく区別できるようになったのだ。
そのラベルでユニットを区別できなくなれば、当然ポーズは壊れるというわけだ。

2つ目、これはどういう事かと言うと、「ユニット位置変更」「関節位置変更」中にラベルの貼り剥がしをやると、やはり初期位置がバグるからである。
特に「関節位置変更」中は危険。
「ユニット位置変更」中に(確定せずに)ラベルを貼ったり剥がしたりしても、変更したユニット位置がキャンセルされるだけで済む。
それだって結構ストレスだから、避けるに越した事は無いわけだが。
「関節位置変更」中に(確定せずに)ラベルを貼ったり剥がしたりすると、変更した関節位置は有効になるが、変更した関節位置が変更前の関節位置と同じになるように、勝手に「ユニット位置変更」されてしまう。
この手の現象に見舞われると、制作への気力も大きく削がれる事になりかねないので、ソフトの方が配慮してくれない分は、ユーザー各人が正しい知識を持ち、正しく使う事で不慮の事態を回避する努力をしよう。

手順4.左右反転

ユニット追加・関節位置変更・ラベル貼り全てが終わったら、最後に左右対称なユニットを反転複製して完成となる。
左右反転を最後に行うのは、楽だから。
いちいち手作業でユニット追加しなくていいし、関節位置も変更済みの状態で複製されるし、おまけにラベルまで勝手に貼ってくれる。
…そうそう、ラベルでもう1つ注意事項が。
左右反転複製するユニットに、左右属性の無いラベルを貼ってはいけない。
理由は、もう言わなくても分かると思うが、ラベルが重複するから。
同様に、「前後反転複製」「上下反転複製」も禁止である。
どうしてもやりたければ、ラベルを貼らずに反転複製してから、重複しないように適当なラベルを貼っていこう。


左:関節位置変更が終わった状態。まだラベルは貼っていない。

中:全てのユニットにラベルを貼り終わった状態。

右:左右反転複製で全てのユニットが揃った状態。

反転複製が終わって、全てのユニットが揃ったら、モデル構築は完了。
名前を付けて保存しよう。

左右非対称造形

関節構造としては左右対称でいいが、造形は左右非対称にしたい、という場合。
まず、全身の造形から、右半身・左半身のユニットをそれぞれ別名で選択範囲保存する。
その後、どちらかの半身のユニットを全て、パーツアセンブラで反転複製し、オリジナル(複製元)側の物体は削除して上書き保存する。
右腕なら、左右反転複製して対称形の左腕を作り、右腕は削除して、「右腕」として保存する。
コネクションビルダで左半身を作って反転複製した後、反転複製された右腕を、ユニット差し替えで「右腕」ユニットに差し替えれば、左右非対称のモデルが出来る。


初期ポーズ変更

前章で述べた通り、多関節構築を前提とする場合の造形は「死に体モデリング」が必要となる。
で、そのユニットをコネクションビルダで組み上げれば、当然組み上がったモデルも「死に体」ポーズになる。
動かしやすいモデルを作る為とは言っても、ちょっと寂しい。
そこで、関節構築も完了した事だし、ポーズを付けた状態を初期ポーズにしてしまおう。


やり方は至って簡単で、まず、初期ポーズにしたいポーズを作って「ポーズ保存」する。
次に、どれでもいいのでユニットを選択して、「ユニット位置変更」を選択。
「ユニット位置変更」中に、先ほど保存したポーズを呼び出す。
ポーズが呼び出されたら確定するだけ。
これで、「ポーズ初期化」した時のポーズが登録ポーズに変更される。

コネクションビルダを開いた時にこういう状態だと、ちょっと嬉しい。(笑

このテクニックはLE3では何故か使えなくされていたが、最新のLE3では正式に登録ポーズを初期ポーズに設定できる機能がついた。

また、このテクニックの応用として、左右反転複製する前の、半身だけのモデルにポーズを付けて保存し、初期ポーズを変更してから反転複製という事が可能。
あらかじめ複数のポーズを保存しておき、初期ポーズを変更して反転複製したらポーズを上書き保存し、反転複製で追加した半身のユニットを削除。
次のポーズを初期ポーズに設定、また反転複製してポーズを上書き保存、そしてまたユニットを削除して…と繰り返せば、簡単に正確な左右対称ポーズがいくつでも作れる。
まぁ、あんまり利用価値の無いテクニックだと思うが。


基点モデリング法の利点<06.03.27追記>

上では全体モデリング法を紹介したが、基点モデリング法にも勿論有効な使い方はある。
例えば、キャタピラ(無限軌道)等のように、同じ形のパーツがずら~っと並ぶような場合、基点重視のモデリングでパーツを一つだけ作っておいて、このパーツを1つ追加する。
それを親としてもう1つ追加し、子ユニットが親ユニットに対して正しい位置に来るように「ユニット位置変更」する。
こうすれば、後はただ追加するだけで、最初から適切な位置に子孫ユニットが配置される。
しかも基点に合せてモデリングをしているので、関節位置を変更する必要も無い。

単ユニットモデル

意外と気がついていない人も多いようだが、「ユニットが一つしかないモデル(多関節物体)」は作成可能。

ダミーユニット

ここで言う「ダミーユニット」とは、透明な、作画されないユニットを指す。
作画されないという事は造形に貢献しないわけであるから、小さくてポリゴン数も少ない物がいい。
パーツカタログの「基本1」カテゴリにある平面板、特に、向きが分かりやすいように三角形辺りを使うのがいい。
ダミーユニットを活用する事で、多関節物体はもっと使いやすくなる。

ユニット多重化

関節が増えると制御が面倒(混乱する)と思っている人が多いようだが、それは間違いである。
関節が多い方が、トラブルは減るのだ。

L3の多関節物体のユニットは、全て3軸で回転できるようになっている。
だが、これはいたずらに混乱を招くだけである。
3軸全てをちょっとずつ回転させたりしていると、元に戻すにはどっちに回転すればいいのか分からなくなったりする事があるだろう。
(「相対座標表示」にしておいて、ユニット情報パネルを見れば済む話ではあるが…)
これは、1つの関節に3つも軸があるからに他ならない。
軸が1つしか無ければ、せめて2つまでなら、混乱せずに制御できるはずなのだ。

勿論、軸が1つしか無ければ、その分関節の可動方向は限られる事になる。
そこで「2重関節」という考え方が出てくる。
2重関節と言っても、ガンプラとかのロボット物トイのそれとは違う。
CGはパーツ同士をめり込ませられるのだから、模型のように、可動域を確保する為の2重関節は必要ない。
むしろ逆で、1つの関節を2つに分けて、それぞれの可動方向を(自主的に)制限する事が目的となる。
例えば、「前後への振り」だけを担当する関節と、「ひねり」と「左右への振り」だけを担当する関節に分ければ、混乱しにくくなるはずだ。

じゃあ、2重関節にするとして、ユニットはどうするか?
そこで出てくるのが「ダミーユニット」である。
新しいユニットを追加する時に、まずこのダミーユニット追加し、同じ位置に本命のユニットを追加する。
この2つのユニットの関節位置はなるべく近づけておく。これで2重関節は完成。
後は、それぞれの関節を、自分で決めた方向にしか動かさない事さえ守れば、ポーズがうんとつけやすくなるはずである。

ダミーベースユニット

ユニット多重化と近い考え方だが、より臨機応変に使えるのが「ダミーベースユニット」である。

大抵の人は、人型のモデルを作る時、腰をベースユニットにしていると思う。
では、腰が傾いた状態で、地面に対して垂直な軸で全身を回転させる必要が出たら、どうするだろうか?
仮に、フィギュアスケートの動きを作るとしよう。
片足を上げた姿勢でスピンする時、腰は傾いている。
腰のユニットが傾いた状態で、傾かないスピンをさせるにはどうしたらいい?
難しいだろう。
しかし、腰がベースユニットでなければ簡単に出来る。
ベースにダミーユニットがあり、そこに腰がつながっている構造であれば、ダミーベースユニットは傾いていないから、これを回転させれば事も無く傾かないスピンがさせられる。
同様に、シットスピンのように、回転軸が腰から大きく外れるような時でも、腰をユニット移動でダミーユニットから離し、ダミーユニットを回転させればよい。
同じ方法で、鉄棒でもブランコでも何でもできる。

さらに、ダミーベースユニットは目に見えない(作画されない)上に、モデルの本質からは切り離された存在であるので、どこに存在していてもいい。
例えば、自動接地(+位置調整)を使いながらジャンプをさせたい時などに、重力効果を使うのもいいが、あれは扱いが難しい。
重力効果は自動で綺麗な放物線を描いてくれるが、ジャンプの長さ・高さをコントロールするのは至難の業だ。
そして、どちらかと言えばその2点の方が重要である。
そこで、ダミーベースユニットを接地点として使う方法がある。
綺麗な放物線を描くのは不可能に近いが、ジャンプの高さ・長さは自由にコントロールできる。

ダミーユニットは他にも、多関節物体の動きに部分的な残像を付けたい時に、残像の必要ない部分をダミーユニットに差し替えた多関節物体を作ったりと、いろいろな使い方がある。