2016年12月27日火曜日

【Review】MoitonBuilder2017 Security Fix バージョン

MotionBuilder2017がリリースされて少しだけ触ってみたところ良い点と悪い点が見えてきました。

【良い点】
・SplineIKが使用出来るようになった
・スケマティックビューで縦方向にも整列出来るようになった
・軌跡でモーションを修正できるようになった

【悪い点】
・SplineIKのRoll方向のアニメーションがPlotに対応していない
・コンストレイントをフォルダにいれるとおかしな動作をする

上記のような事がわかりました。
悪い点が作業中に重要な事なので早く直って欲しいと思っていたところ
12月5日にサービスパックではなくてセキュリティ修正バージョンとしてMotionBuilder2017 Security Fixがリリースされました。

https://knowledge.autodesk.com/ja/support/motionbuilder/downloads/caas/downloads/downloads/JPN/content/autodesk-motionbuilder-2017-security-fix.html


細かい修正内容が記載しているReadmeを読むと、

Dragging a constraint into the Navigator constraint folder duplicates the constraint
上記の悪い点のコンストレイントをフォルダにいれるとおかしな動作をするが修正されているようです。地味な事ですけど実作業しているとコンストレイントを整理する事が多々あるので嬉しいですね。

しかし、今回のMB2017の目玉機能であるSplineIKについて何も修正が入ってる様子はないので、悪い点のRoll方向のアニメーションがPlotに対応していないのは未だ修正されてないかったです。

これは結構クリティカルな問題でアニメーション作業中の物とPlot結果が違う事になります。結局はMotionBuilderのSplineIKはまだまだ実作業に耐えうるレベルにはなっていないということですね。

一応の解決策として、SplineIKで拘束されている骨を選択した状態で
1フレーム移動してキーフレームを打つ、1フレーム移動してキーフレームを打つ、という作業を繰り返せば、作業中の物と結果が一緒になります。

以下の動画はSplineIKのセットアップと一応の対応策の1フレーム移動してキーフレームを打つを繰り返す方法を示した物です。




2016年11月19日土曜日

【Tips】MotionBuilderでRotationを分解してRollの補助骨のRigging

Rollの補助骨のセットアップとして、例えば手首を回して前腕(手首と肘の間)にある補助骨を半分だけ回すということが多々あります。
その時、手首のXYZの回転値がRoll方向や縦横方向を表しているわけではないので、単純に手首のX軸値の50%だけ補助骨を追従させるという事は厳密には正確では無く、姿勢によっては予期しない結果なることがあります。

オイラー角の回転値をRoll方向、縦方向、横方向に分解するというのは既にMayaでプラグインを作成して公開している素晴らしい方がいます。
https://github.com/ryusas/maya_rotationDriver

ソースも公開されているので同じような計算をMBで作成すればいいのですが、クォータニオンを使用して高度な計算をしているので難易度がかなり高いです。

そこでMotionBuilderの標準機能だけを使用してオイラーの回転値を分解して前腕の補助骨を駆動させる方法を紹介します。

骨階層は以下の図のような階層でキャラクタライズ時の時のTスタンスの姿勢を前提としています。


まずはNULLを4つ作成して、下図のような名前と階層構造を作成します。

CHAINは下の階層のNullのTransやRotを0にするためのNull、
PANならY軸(横方向)、TILTならZ軸(縦方向)、ROLLならX軸(捻り方向)に曲がるNULLです。


そして、各PAN、TILT、ROLLのRotationOrderとMinとMaxを以下の画像のように設定していきます。



PANならY軸(横方向)、TILTならZ軸(縦方向)、ROLLならX軸(捻り方向)となっていますので各有効軸が最後にくるようにRotationOrderを変更します。
PAN(RotaionOrder XZY)
TILT(RotaionOrder XYZ)
ROLL(RotaionOrder YZX)

また、有効軸以外が動かないようにMinとMaxを設定します。

次に、4つのNull群を肘の骨(ForeArm)の子供に親子付けし、位置のみを手首(Hand)の骨に合わせます。回転は合わせません。

次に、手首の骨と各PAN、TILT、ROLLをRotationコンストレイントを作成していきます。手首の骨をSource、NullをConstrained Objectとして設定します。
設定したらSnapでコンストレイントをアクティブにします。


この状態で、手首の骨を回すとRotationの値が各成分に分解されたのが各PAN、TILT、ROLLに入る状態になります。

後は捻り方向の成分が入るROLLのNULLの値の50%だけ補助骨が追従するように下図のようにRelationコンストレイントを作成します。


これでRollの骨のRiggingは以上です。

デメリットとして階層が増えたり、手間が少しかかる事ですが、
メリットとしてはMotionBuilderの標準機能だけでRotationを捻り方向、縦方向、横方向と分解出来るという点です。

また応用次第ではMocapなどでアニメーションされた物を今回の方法でRotatioを分解してあげることで、Rotationのアニメーション編集がしやすくなる事があります。

2016年9月15日木曜日

【Tips】Motionbuilderでsoft/stretchIKのRigging

Motiobuilderでリグを組むときに基本的にはキャラクタライズしてFullBodyIK(HumanIK)を使いますが、時たま他のDCCツールと同じ様なオリジナルのリグを組む時があります。
オリジナルのリグではHumanIKで実現できない、soft/stretchIKの機能が度々使用されます。
ネットで色々調べるとSoftimage Blogでsoft/stretchIKを実現する魔法の式がありました。
今回はこの魔法の式を使用してMotionbuilderでsoft/stretchIKを実現する方法を紹介します。

まずは魔法の式からみていきます。


ネイピア数のところをプログラム的におとしこむと以下のような式になります。


dsoftを1、dchainを3にした場合をグラフにすると以下の画像のようになります。

つまり、
xが2未満のときまではy=xの式で、
xが2以上の時はy=1-exp(-(x-2))+2の式で指数関数的に減衰するようになっています。


これをMotionBuilderで実現していきます。
まずは、ChainIKを組みます。この時に、IK_HandleとIK_Ctrlを2つ用意し、ChainIKコンストレイントにはIK_Handleを登録します。



次に魔法の式の下準備として、da、dsoft、dchainを分かりやすくするために以下のようなvariableという名前でRelationコンストレイントを作成しておきます。



次にSoft_StretchIK_Solverという名前でRelationコンストレイントを作成し、魔法の式を以下のようなコネクションで作成します。variableのRelationコンストレイントはMy MacrosからD&Dで出す事が出来ます。



一番右はじのAddボックスからの出力は魔法の式で言うとこのyの値になりますがこれは根元の骨からIK_Hanleまでの距離でIK_HandleのTransになっていないので、さらに以下のようなコネクションを作成してあげて、IK_HandleのTrans値にしてあげます。




次に、魔法の式の条件で0≦x<daの時、y=xの式になるようにコネクションも作成します。





ここまでコネクションが作成出来ているとsoftIKが実現出来ています。
コネクションの全体像は以下のようになります。



次はStretch部分のRiggingです。
MotionBuilderのChainIKでは、ChainIKがONの時にコンストレインされている骨のTransやScaleを変更すると回転の計算が壊れてしまうので、Stretchさせる用のダミー骨階層を作成し、ChainIKで算出された骨からダミー骨階層へRotationコンストレイントしてあげます。


このダミー骨階層に対してStretchを仕込んでいきます。
Stretchを実現する式は以下のようになります。

上記の式のコネクションを作成します。


これでダミー骨階層でSoft/StretchIKが実現出来るようになりました。


2016年9月3日土曜日

プラグイン ユーザー様

私が作成したプラグインが細々とですがユーザー様が増えてまいりました。
プラグイン販売は個人でやっている事なので、購入を検討している方とかは不安があるかと思います。 そこでその不安を少しでも取り除けるように、これまで購入して頂いたユーザー様を紹介させて頂きます。 (ユーザー様は随時更新してい参ります。)


東映 ツークン研究所 様
日本を代表する映画制作、配給、興行会社の事業部の1つ。
パフォーマンスキャプチャーなど最先端のデジタル技術を提供。



house of moves 様
ハリウッドを代表するモーションキャプチャー会社。




ECHOES 様
少数精鋭部隊で高品質なアニメーションを制作。オリジナル作品も多数制作。



D3D様
老舗のCGプロダクション。AAA級タイトルにも多数実績としてある会社。


他、多数。

他にもご紹介できる時がきましたら随時更新してまいります。

2016年4月30日土曜日

【Tips】Viewの分割

MotionBuilderで作業していると時、Viewを2つに分割して作業する時があります。
片方はパースビューにして、もう片方はスケマティックビューにしてなどです。


この2つに分割するときに分割する方向が縦に分割されるか、横に分割されるかはモニターのサイズによって自動で決まるようにデフォルトでは設定されています。

わたしの経験から24インチのモニターの場合でも縦(左右)で分割されてしまうケースが多く、スケマティックビューが見づらいことがあります。

そこでViewを2つに分割するときに縦か横かを指定する方法があります。
以下のパスのConfigファイルのApplication.txtファイルに設定があります。
(MB2014場合ですが、他のバージョンの場合は対応するパスに置き換えてください)

C:\Users\ユーザー名\Documents\MB\2014-x64\config\マシン名.Application.txt

そのConfigファイルの中のTwoPanesSplitという所をAutoから、HorizontalまたはVerticalに設定してあげると、Viewを2つに分割する時の方法を指定することが出来ます。

TwoPanesSplit = Horizontal ; Options are (Auto, Horizontal, Vertical)

Auto:モニターのサイズによって分割を自動で決定する
Horizontal:水平で分割される(上下に分割)
Vertical:垂直で分割される(左右に分割)

私の場合はHorizontalで設定し、スケマティックビューが横長で見れるようにしています。その方が作業効率があがるような気がしています。

2016年4月21日木曜日

【よくある質問】販売しているプラグインについて

【質問】シミュレーションプラグインを使用してセットアップしたとき、ロール方向がついてこないのをどうすればいいですか? 

シミュレーションプラグインではChainIKのSolverTypeはSCsolverを使用し、ロール方向はIKハンドルの回転で制御する構造になっています。 なので、髪の毛とかにシミュレーションを設定した場合はIKハンドルを頭の子供に親子付けすればロール方向は頭に追従するようになります。 



【質問】ライセンスの移行は可能ですか? 

申し訳ございませんが移行は出来ません。同じマシンでもライセンス認証しているMACアドレスが変わった場合、再度購入して頂くことになります。




【質問】プラグインの試用版はありますか? 

申し訳ございませんが、試用版は用意しておりません。


【質問】欲しいバージョンのプラグインが無いのですが、作成していただけますか?

申し訳ございませんが、各対応バージョンは各プラグインの購入ページに記載している物だけとなっております。今後の最新バージョンはついては時間がある時に対応は進めてまいります。
また、無償のバージョンアップに関しては申し訳ございませんが対応しておりませんので、欲しいバージョンが今後必要になりましたら、再度購入していただくこととなります。ご了承ください。

2016年3月2日水曜日

【Plugin】MotionBuilder SplineIK バージョンアップ

以前にMotionBuilderでSplineIKをセットアップするプラグインの記事を書きました。
そこからバージョンアップをしました。以前はPathコンストレインにIKハンドルが拘束されている状態でしたが、今回のバージョンアップではPathコンストレインがONの状態でもIKハンドルがアニメーション出来るように2重階層で自動で作成されるようになりました。

このような2重階層でIKハンドルがアニメーション出来ることで、SplineIKでセットアップされている骨階層の1つ1つが細かいアニメーションの調整が出来るようなります。


また、リレーションコンストレインを使用したRigなので、Rigの組み方次第では伸びたり縮んだりするような事も出来ます。

こちらのプラグインは以下のサイトから購入することが出来ます。



2016年2月19日金曜日

【Plugin】NEW Delay_Boxのバージョンアップ(DLあるよ)

以前にDelay_Boxの記事を書きました。この記事では、現在のフレームと1フレーム前の差分を利用したタイヤの回転Rigを説明する記事でした。この記事の段階のDelay_Boxのバージョンですと色々な不都合がありました。どんな不都合かといいますと、タイヤの回転を実現するために1フレーム前の値を1回だけ出力するようにしてました。なぜ1回だけ出力するようにしたかというと、MotionBuilderのコンストレインの計算がマシンスペックによりますが、1フレームに1回というわけではなく、1フレームの間に何十回、何百回と計算されます。そうすると回転の足し算が1フレームの間に何回も行われてしまい、アニメーション再生中にタイヤが滑って見えてしまうからなのです。

ただこれですと、通常の使い方の時にはこれまた逆に都合が悪くなってしまいます。
1フレームの間に、任意のフレーム遅らせた値を1回だけ出力した後は入力値を出力することになっているので、1フレームの間で遅らせた値、入力値というようになり、チラついた表示になってしまうのです。

なので、新しいコネクターを追加しました。

「4_Once_Check」というコネクターを追加しました。
このコネクターはBool値でONとOFFを設定するようになっています。

ONのときは、1フレームに1回だけ指定したフレームで遅らせた値を出力するようなっています。
OFFのときは、通常通り指定したフレームで遅らせた値を何回も出力するようになっています。

これらの機能を説明するサンプルファイルもUPしています。
中身は以下のGIFアニメーションを参考にしてください。


Download
MotionBuilder2014 64Bit

2016年2月14日日曜日

【Plug-in】NEW MotionBuilderでSplineIKをセットアップするPlugin

以前にパス(カーブ)の全長を出力するプラグインを使用してのSplineIKを実現する記事を書きました。ただ、その記事では問題が3つあります。

問題1.セットアップが全て手動なので時間がかかり、ヒューマンエラーが発生しやすい

問題2.カーブ上に骨がないカーブ形状のケースがある

問題3.Plotに対応していない

上記3つの問題がありました。

そこでいつものいつもの無いなら作ろうの精神で、これら問題を解決したSplineIKをボタンでポンっとセットアップするプラグインを作成しました。


上記動画ではカーブを制御するのにオリジナルのプラグインを使用していますがこちらの記事を参考にしてカーブを制御することが出来ます。

このセットアップするプラグインでは問題1、問題2が解決出来ております。
問題3ではPythonスクリプトで問題を解決しております。

これらセットアップするプラグイン、スクリプトをセットにしたプラグインを以下のサイトで販売をしております。



2016年2月5日金曜日

【Plugin】DampingPotisionBoxの強化バージョンSpirngBox

MotionBuilderでアニメーション付けていると度々出てくる作業として、遅れて付いてくるアニメーションを作る事です。もっと厳密に言うと慣性が働いて動くようなアニメーションです。具体的な例をあげますと、うさぎの耳の動き、太ったおなかがブルルンって動くようなものや女性の胸の動きなどなどあります。
もちろん、そこに魂を込めたキーフレームアニメーションで作成する方がもちろんいいアニメーションが出来ると思いますが、カットシーンなど長いドラマ芝居の場合はやっぱり自動で動いてくれる方が効率的な場合があります。

MotionBuilderではRelationコンストレインの中には「DampingPosition」Boxなど遅れて付いてくるような動きを実現できますが、いまいち数値の値が分かりにくかったり、アニメーションが収束した時に急にピタッと止まってしまうことがあります。

そこでいつもの無いなら作ろうの精神でSpringのような動作を実現するRelationコンストレインのBoxを作成しました。



もちろん、再生中の動作とPlotの動作は同じになるよう作成しています。

こちらのSpringBoxプラグインも準備出来次第STORESで販売する予定です。

プラグインの販売準備が出来ました。以下のリンクから購入出来ます。