これまでのblogでblenderのウエイト機能を使ってきました。この素晴らしい機能を新ためてまとめようと思います。また形状の変形の仕方として、メッシュの変形、ディスプレイスメント、シェーダー、を述べてきました。今回もう一つ別の変形の仕方を指摘致します。
オブジェクト(対象)を体と骨格から成り立っていると考えます。体を動かすために骨格があります。これをアーマチュアと呼びます。アーマチュアも一つのオブジェクトです。体に相当するオブジェクトがあり、骨格に相当するアーマチュアのオブジェクトがあるということです。これらをウエイトという0~1の値で関係付けます。アーマチュアの構成要素であるボーン(骨)が、体のそれぞれの部分に関連が付き、それぞれのボーンを動かすとウエイトの値に従って体のそれぞれの部分が動きます。つまりアーマチュアと動かす対象との関係を付けるプロシージャルがウエイトです。細かくはそれぞれのボーンと体の部分との関連を付けるのかウエイトです。ウエイトをつける方法については、YouTubeに動画が沢山あるので参考にしてください。ここではウエイトでどのような関係が作れるかを中心に述べます。
以下の図は「怪鳥モグモグ」の頭の先についているトップのボーンのウエイトを示した図です。
青がウエイトがついていない状態、赤が一番強いウエイトの状態です。ですのでトップのボーンは顔の先端だけにウエイトがあるような状態です。このためトップのボーンを動かすと顔の先のほうが動くことになります。他の部分はほとんど影響ありません。
次の図は下側の翼の後ろにあるボーンのウエイトです。
これをみると、下側の翼の先端が赤く背骨のほうにむかって徐々に青色になっています。ですので後ろのボーンを動かすと、翼の先のほうが大きく動き、背骨付近はほとんど動かないように徐々に振幅が減少します。これによっては羽の羽ばたきを表現できます。このようにどのボーンに対してどのように動かしたいかを色で塗っていくのがウエイトペイントです。
blenderで自動的に動かすためには、コントロールするボーンをアニメーション機能を使って動かします。Touchdesignerで動かすためにはfbxファイルにして渡します。次の図がfbxファイルをTouchdesignerで開いた図です。
一つ一つのボーンの前後の位置や回転角度をコントロールするオペレータが自動的に生成されます。ボーンのつながり方も維持されます。このオペレータの位置や回転角度を入力すると、その部分の形状が動くことになります。Touchdesignerには動く仕組みが移されますが、動かす量はTouchdesignerの中で再設定しなければなりません。
次に示しているのは、以前の「オブジェクト指向プログラム・・・」で示した鏡の図を「モグモグ」によって曲げた映像です。本来鏡と「モグモグ」とは何の関係もないわけですが、ウエイトによって関係付けることができます。
この図の作製方法を述べて行きます。まず「モグモグ」の体とボーンとを関係付けます。次の連続した3枚の図は「モグモグ」の2番目のボーン、中央のボーン、最後のボーンのそれぞれのウエイトを示しています。
ボーン間のウエイトもこれらと同様、ボーンのすぐ近くの体が赤くなります(強く関係付けられる)。トップのボーンを動かすと2番目のボーンが動き連続して全体が動くようになります。2番目のボーンをトップのボーンによってコントロールする設定(IK: インバースキネマティクス)が必要になります。これらの設定は鏡の形状を曲げることとは関係ありません。あくまで「モグモグ」の体とボーンとの関係です。
次に、「モグモグ」のボーンと鏡とを関係付けます。これができると、「モグモグ」のボーンによって鏡が動くことになります。次の図は先頭のボーンによる鏡に対するウエイトです。
そして次の図は最後のボーンと鏡に対するウエイトです。
間のボーン(中央のボーンは除く)と鏡とは関係づけていません。
そして、中央のボーンに対しては、次のようにウエイトをつけました。
そして、モグモグを曲げた図が先頭に挙げた曲がった鏡の図です。
両サイドに3つづつ、円状に盛り上がっているのが中央のボーンのウエイトによるものです。上下に盛り上がりがでていないのは、両サイドのボーンを下げたためで、中央の高さは動いていないからです。
このようにして、「モグモグ」と鏡は本来なんの関係もないわけですが、「モグモグ」が動くと鏡が動く、という関係を付けることができました。これは、前のブログの「モグモグ」と大地の関係と同じです。
ここで重要な作製方法に気づきます。形を変形する場合、これまでメッシュ変形、ディスプレイスメント、シェーダ、の方法を紹介してきました。これとは別に今回のように、鏡に対して「モグモグ」がそうであったように、別の対象を設定して、それとの関係を与え、その対象が動くことでメッシュ形状を変え、表示する時にはそれを非表示にする。という方法があるということです。この方法は対象の動きによって、思いもよらない未知の形状を作りだす方法につながります。
前のblogで、シュリンクラップとウエイトを使うと、その相互作用により大きく形状が変形することを述べました。この解説を行います。まず「モグモグ」の体とアーマチュア(骨格)とにウエイトをつけます。これは上で述べたのと同じです。2番目のボーンのウエイトを図にしたのが次です。
トップのボーンに対して地面が沈みこまないようにするため、ボーンコンストレイント(制限)の一つであるシュリンクラップを適用します。複数のボーンに対してこれを適用すると体全体が地面に沈みこまなくなります。今回は機能を分かりやすくするため、トップのボーンだけにシュリンクラップを適用しました。この様子が次の動画です。
先頭の部分だけが凸凹に沈みこんでいないことが分かります。一つ前のblogでは「モグモグ」全体が大地に沈みこんでいません。これは全てのボーンに対してシュリンクラップを適用しているからです。
次に「モグモグ」のアーマチュアと大地との間にウエイトを適用します。今回は2番目のボーンに対してだけ0.002のほんのわずかなウエイトを適用しました。どのようにウエイトかけたのかを次に示します。
小さいウエイトでは、ウエイト0を青で表示したのでは見えません。この図ではウエイトゼロを黒になるように表示を変えています。次はウエイトを適用した場合の動画です。
このように「モグモグ」の前の部分の動きに合わせて大地が大きく変化していることが分かります。ほんのわずかなウエイトでこのように大きく動くことから、シュリンクラップと大地のウエイトとが何らかの非線形の相互作用をしていると思っています。具体的には分かっていません。コンピュータ内で生じるユニークな現象です。ここでモグモグを非表示にすると、急に大地が大きく変わったように見せることができます。これを利用すると、例えば地震の場面やキャラクタの魔法の力で大地を動かす場合等に利用できます。変形の原因を知らせないことで、何故だろうと推論させるのにも活用できそうです。この動画の音は、小型のアナログシンセサイザーDark energy2で付けました。
コメント