MayaでBlendShapeを設定したデータをMotionBuilderへ持っていくとき、たまにうまくコンバート出来ない場合があります。BlendShape自体の設定が消えてたり、メッシュ自体が消えていたりする場合などが度々あります。そんなときは、色々試すよりBlendShapeをMaya側で作り直したほうが早いです。ただ、作り直すときは以下のポイントに注意してBlendShapeを作成したほうが良いです。
【ポイント】
BlendShapeを作成するときのオプションのDeformationOrderでFrontOfChainに設定で作成
デフォルト設定ではこのFront of Chainになっているはずなんですけど、たまにParallelとかに設定されているとMayaではちゃんと動いてくれているけど、MotionBuilderへコンバートするとBlendShapeの設定が消えていたりするケースがあります。
ちなみに、MotionBuilderでBlendShapeのスライダーはメッシュを選択してPropertiesのところでShapesのところにあります。
2011年12月18日日曜日
2011年12月2日金曜日
【Tips】MotionBuilderがフォーカスを失ってもViewerを描画
MotionBuilderで作業しているときに、何かのドキュメントやらWebやらを見ながらアニメーションを確認したいときがあります。けどドキュメントをみるとフォーカスがMotionBuilderからドキュメントに移りMotionBuilderはViewerの描画をしなくなります。これというのはドキュメントをみつつアニメーションを確認したいときなんかは結構不便だったりします。いちいちまたMotionBuilderにフォーカスを移してアニメーション確認っていうのは面倒な作業です。
そこでMotionBuilderがフォーカスを失っても描画するようにする設定が隠れ機能としてあります。
1.以下のテキストファイルを開く
MB2010での場合です。
C:\Users\○○○○○\AppData\Local\Autodesk\MB2010\config\△△△.Application.txt
○○○○○は自分のユーザー名
△△△は自部のマシン名
2.ファイルの最後に以下の文字を追記し保存。
[Timing]
NoFastIdleOnDeactivate=False
そこでMotionBuilderがフォーカスを失っても描画するようにする設定が隠れ機能としてあります。
1.以下のテキストファイルを開く
MB2010での場合です。
C:\Users\○○○○○\AppData\Local\Autodesk\MB2010\config\△△△.Application.txt
○○○○○は自分のユーザー名
△△△は自部のマシン名
2.ファイルの最後に以下の文字を追記し保存。
[Timing]
NoFastIdleOnDeactivate=False
こうすることで、ドキュメントにフォーカスが移っていてもアニメーションの確認もできるので作業の効率化が図れると思います。
意外とこれが便利な機能だったりします。
2011年11月29日火曜日
【script】Maya スキンウェイトの四捨五入
最近、Mayaでゲームモデルに対してスキンウェイトをいれる作業をしてます。
そこでゲームモデルには色々な制約があります。例えば、スキンウェイトは少数第3位までしか使ってはいけないとかです。これも手慣れているモデラーさんなら問題無いかと思うのですがアニメーターが自分で調整する場合やペイントで塗って調整している場合はその仕様を超えて少数第3位以上まで、細かい数値が入ってしまいます。
そこで、本来ならコンポーネントエディターとか使って手打ちで修正する作業が発生するかと思うのですが、全部の頂点に対してやるとなると結構骨の折れる作業になります。
そこでいつもの通りないなら作ろうの精神で
スキンウェイトを小数点第4位で四捨五入するスクリプトを作成しました。
ペイントでザ~ッとウェイトを調整してから、このスクリプトを実行してあげればだいたい仕様通りのスキンウェイトのモデルが出来あがるわけで、かなりの作業効率が望めるかと思います。
Usage
1.メッシュを選択(複数でもOK)
2.このスクリプトを実行
DownLoad
round_skinweight.mel
(Maya2012などで動作確認済み)
そこでゲームモデルには色々な制約があります。例えば、スキンウェイトは少数第3位までしか使ってはいけないとかです。これも手慣れているモデラーさんなら問題無いかと思うのですがアニメーターが自分で調整する場合やペイントで塗って調整している場合はその仕様を超えて少数第3位以上まで、細かい数値が入ってしまいます。
そこで、本来ならコンポーネントエディターとか使って手打ちで修正する作業が発生するかと思うのですが、全部の頂点に対してやるとなると結構骨の折れる作業になります。
スキンウェイトを小数点第4位で四捨五入するスクリプトを作成しました。
ペイントでザ~ッとウェイトを調整してから、このスクリプトを実行してあげればだいたい仕様通りのスキンウェイトのモデルが出来あがるわけで、かなりの作業効率が望めるかと思います。
Usage
1.メッシュを選択(複数でもOK)
2.このスクリプトを実行
DownLoad
round_skinweight.mel
(Maya2012などで動作確認済み)
2011年11月20日日曜日
【雑記】FBXのファイルのフォーマットについて
MotionBuilderで使われているファイルフォーマットはFBXです。
FBXと言っても、実はこれには2種類のFBXファイルフォーマットが存在するのです。
1つ目はMotionBuilder2010のバージョンまでで使われていたfbxのフォーマット。
2つ目はMotionBuilder2011以降のバージョンとMayaとか3DMaxからExportされたFBXのフォーマット。
これらが何が違うかと言うと、1つ目のfbxフォーマットはMotionBuilderで使用されていたいわゆるネイティブなfbxフォーマットなんです。極端な言い方をしてしまえばfbxの中で独自に進化したガラパゴス的なフォーマットなんです。2つ目のFBXフォーマットはMayaや3DMaxなどからExportされたいわゆるパブリックなFBXフォーマットです。Autodeskがソフト間のDataExchangeとして猛烈プッシュしているファイルフォーマットです。
なのでMotionBuilder2010までのバージョンまでなら本来ならMayaなどからExportされたFBXフォーマットはFile→Openでもファイルを開いても大きな問題はないので大丈夫かと思いますが本来ならFile→FBX Plug-in Import でファイルを読み込まないといけないんです。
MotionBuilder2011以降ならパブリックなFBXファイルフォーマットを正式に採用しているのでMayaなどのほかの3DCGソフトと互換性がかなり高くなっています。
実はそんな違いがあったのですが、もう最新バージョンなら特にそのようなことも気にせずにデータのImportやExportをしても気を使わなくても大丈夫なはずです。
fbxもガラパゴスから世界に通用するファイルフォーマットに進化をしましたというお話です。
FBXと言っても、実はこれには2種類のFBXファイルフォーマットが存在するのです。
1つ目はMotionBuilder2010のバージョンまでで使われていたfbxのフォーマット。
2つ目はMotionBuilder2011以降のバージョンとMayaとか3DMaxからExportされたFBXのフォーマット。
これらが何が違うかと言うと、1つ目のfbxフォーマットはMotionBuilderで使用されていたいわゆるネイティブなfbxフォーマットなんです。極端な言い方をしてしまえばfbxの中で独自に進化したガラパゴス的なフォーマットなんです。2つ目のFBXフォーマットはMayaや3DMaxなどからExportされたいわゆるパブリックなFBXフォーマットです。Autodeskがソフト間のDataExchangeとして猛烈プッシュしているファイルフォーマットです。
なのでMotionBuilder2010までのバージョンまでなら本来ならMayaなどからExportされたFBXフォーマットはFile→Openでもファイルを開いても大きな問題はないので大丈夫かと思いますが本来ならFile→FBX Plug-in Import でファイルを読み込まないといけないんです。
MotionBuilder2011以降ならパブリックなFBXファイルフォーマットを正式に採用しているのでMayaなどのほかの3DCGソフトと互換性がかなり高くなっています。
実はそんな違いがあったのですが、もう最新バージョンなら特にそのようなことも気にせずにデータのImportやExportをしても気を使わなくても大丈夫なはずです。
fbxもガラパゴスから世界に通用するファイルフォーマットに進化をしましたというお話です。
2011年11月18日金曜日
【Tips】Constant Key Reducerの挙動
MotionBuilderでPlotするときのオプションでConstant Key Reducerのチェックがあります。
このチェックをONの状態でPlotすると値が同じキーフレームは削除されます。
それじゃ、OFFの状態でPlotすると値が同じ状態のものは削除されないかと言えば実はされる場合があります。
このようにConstant Key Reducer のチェックをOFFにしてPlotしてもキーフレームが削除されてしまう挙動というのは確かエイリアスに買収されたころのバージョンMotionBuilder6以降から確認出来てたかと思います。
これを直す方法を覚書として以下に残しておきます。
1.以下のテキストファイルを開く
MB2010での場合です。
C:\Users\○○○○○\AppData\Local\Autodesk\MB2010\config\△△△.Application.txt
○○○○○は自分のユーザー名
△△△は自部のマシン名
2.ファイルの中のUseRunTimeConstantKeyReducerの項目を探し出し、
Noに設定する
上記のようにConfigファイルを書き直してPlotオプションのConstantKeyReducerのチェックをOFFにしてPlotするとちゃんと値が同じキーフレームでも削除されないでキーフレームが埋まっている状態にすることができます。
他のソフトへコンバートするときは、うる覚えですけどキーフレームが埋まっている状態のほうが良かったかと思います、確か・・・・・。
それじゃ、OFFの状態でPlotすると値が同じ状態のものは削除されないかと言えば実はされる場合があります。
このようにConstant Key Reducer のチェックをOFFにしてPlotしてもキーフレームが削除されてしまう挙動というのは確かエイリアスに買収されたころのバージョンMotionBuilder6以降から確認出来てたかと思います。
これを直す方法を覚書として以下に残しておきます。
1.以下のテキストファイルを開く
MB2010での場合です。
C:\Users\○○○○○\AppData\Local\Autodesk\MB2010\config\△△△.Application.txt
○○○○○は自分のユーザー名
△△△は自部のマシン名
2.ファイルの中のUseRunTimeConstantKeyReducerの項目を探し出し、
Noに設定する
上記のようにConfigファイルを書き直してPlotオプションのConstantKeyReducerのチェックをOFFにしてPlotするとちゃんと値が同じキーフレームでも削除されないでキーフレームが埋まっている状態にすることができます。
他のソフトへコンバートするときは、うる覚えですけどキーフレームが埋まっている状態のほうが良かったかと思います、確か・・・・・。
2011年11月7日月曜日
【Tips】MotionBuilderでモデルの差し替え
ゲームのアニメーションを制作していると、モデルの更新というのが良くあります。
Mayaとかで制作しているならリファレンスなど使用していれば気にせず作業ができます。
けどMotionBuilderで作業していると自分でモデルの更新を行わないといけません。
その方法を覚書として残します。
1.古いモデルのファイルを開く
2.File→Mearge...
3.新しいモデルのファイルをMeargeオプションでMeargeAllElementsでマージで読み込み
矢印がクルクルしている状態のオプションです。
Mayaとかで制作しているならリファレンスなど使用していれば気にせず作業ができます。
けどMotionBuilderで作業していると自分でモデルの更新を行わないといけません。
その方法を覚書として残します。
1.古いモデルのファイルを開く
2.File→Mearge...
3.新しいモデルのファイルをMeargeオプションでMeargeAllElementsでマージで読み込み
矢印がクルクルしている状態のオプションです。

このときにあらかじめ、古いファイルと新しいファイルとでNameSpaceを含めて名前を同じにしておきます。この手順でモデルやSkeletonなどを新しいファイルの物に更新できます。
2011年11月1日火曜日
【Script】Mayaの最大インフルエンスの調整
ゲームのモデルを作成しているとパフォーマンスなどを考慮して1つの頂点に割り当てる骨の数(Mayaでいうところのインフルエンス)が決まっている場合が多々あります。
手馴れているモデラーなら意識していればさほど問題ないと思いますが、
アニメーターが自分が意図したように動かしたい時自分でスキンウェイトを調整するときがありますが、その調整時に意図せずそのゲーム仕様を超えたインフルエンス数にスキンウェイトを入れしまう場合があります。
そういうときは、コンポーネントエディタとかで目で見て超えてないかチェックし、超えて割り当たっている場合は手動で直したりします。これがまた非常に面倒くさい作業だったりします。
これまた例のごとくないなら作ろうの精神で
自動で最大インフルエンス数を調整してスキンウェイトを割り当て直してくれるスクリプトを作りました。
Description
1つの頂点に任意で指定したインフルエンス数を超えて割り当たっている場合、
最小のスキンウェイトを指定した数で割って、大きい値へ割り振り直します。
つまり、以下のようなスキンウェイトの状態のとき
手馴れているモデラーなら意識していればさほど問題ないと思いますが、
アニメーターが自分が意図したように動かしたい時自分でスキンウェイトを調整するときがありますが、その調整時に意図せずそのゲーム仕様を超えたインフルエンス数にスキンウェイトを入れしまう場合があります。
そういうときは、コンポーネントエディタとかで目で見て超えてないかチェックし、超えて割り当たっている場合は手動で直したりします。これがまた非常に面倒くさい作業だったりします。
これまた例のごとくないなら作ろうの精神で
自動で最大インフルエンス数を調整してスキンウェイトを割り当て直してくれるスクリプトを作りました。
Description
1つの頂点に任意で指定したインフルエンス数を超えて割り当たっている場合、
最小のスキンウェイトを指定した数で割って、大きい値へ割り振り直します。
つまり、以下のようなスキンウェイトの状態のとき
スクリプト実行後は
上図のようになります。上記の例では最大インフルエンス数は3で設定し実行してます。
これはjoint1に割り当たっている0.003が最小なので、0.003を3で割って他の大きいほうへ0.001づつ割り振り直されています。
また、最大インフルエンス数より少ないときは何もしないでそのままの状態です。
Usage
1.オブジェクトを選択します(複数選択もOK)
2.スクリプト内部にある$MAX_INFの数を任意に設定します
3.このスクリプトを実行
DownLoad
(Maya2010では動作確認済みです)
2011年10月23日日曜日
MotionBuilderでSetDrivenKey
Mayaでリグを組んだりするときとても役立つ機能としてDrivenKeyがあると思います。
DrivenKeyというのはあるオブジェクトAを動かしたら連動して別のオブジェクトBが動くというものです。MotionBuilderでこれが出来たら便利なので今回はRelationコンストレインを使ってその方法を紹介します。
1. Normalizeコンストレインの作成
まず、Relationコンストレイン1つ作成して名前をNormalizeなどのようにしてコンストレインの名前を変更しておき、MacroToolsから3つのMacroInputNumber、MacroOutputNumberを1つ作成し、以下のようなリレーションコンストレインをつなげます。
上図のRelationでやっていることは以下の計算をしていて、MinとMaxを設定したときInputされた値がどのようなウェイト値かを出力するものです。
2.DriverとDrivenとなるオブジェクトの作成
次にDriverとなるMarkerを1つ作成します。そしてDrivenとなるオブジェクトを今回はSkeletonを以下のように作成します。
今回、MarkerがX軸に動いたらSkeletonのZ軸が曲がるようにDrivenKeyを設定したいと思います。
3.DrivenKeyの設定
DriverのMarkerが0~50の間で動くときに、Skeletonが0~90曲がるように動作させるには以下のようにRelatoinをつなげます。
黄色枠で囲っているのが1番目の工程で作成した自作のMyMacroのNormalizeです。
これのMinに0を設定し、Maxに50、InputにはMarkerのTransXがつながるようにします。
そしてResultをInterpolateのCにつなげます。InterpolateのRaには0,0,0を設定、Rbには0,0,-90を設定し、そのResultにはSkeletonのRotationZ軸につなげます。
この例はでMarkerのTransでSkeletonのRotを制御するDrivenKeyの例です。これを応用すれば指を簡単に動かす構造を作れたりします。
今回はRotを制御するDriveKeyだったのでInterpolateを使用していますがTransを制御する場合にはMiddlePointのBoxを使用すれば大丈夫です。
つまりDrivenKeyというのはDriverのある値を0~1に正規化(Normalize)して、その値を受けてのDrivenが0~1での状態を制御されるという構造です。この入力値をNormalizeして0~1に置き換えてやるというのはかなり便利な方法で色々なところで応用されている考え方で覚えておくと色々な場面で役に立つかと思います。
DrivenKeyというのはあるオブジェクトAを動かしたら連動して別のオブジェクトBが動くというものです。MotionBuilderでこれが出来たら便利なので今回はRelationコンストレインを使ってその方法を紹介します。
1. Normalizeコンストレインの作成
まず、Relationコンストレイン1つ作成して名前をNormalizeなどのようにしてコンストレインの名前を変更しておき、MacroToolsから3つのMacroInputNumber、MacroOutputNumberを1つ作成し、以下のようなリレーションコンストレインをつなげます。
上図のRelationでやっていることは以下の計算をしていて、MinとMaxを設定したときInputされた値がどのようなウェイト値かを出力するものです。
2.DriverとDrivenとなるオブジェクトの作成
次にDriverとなるMarkerを1つ作成します。そしてDrivenとなるオブジェクトを今回はSkeletonを以下のように作成します。
今回、MarkerがX軸に動いたらSkeletonのZ軸が曲がるようにDrivenKeyを設定したいと思います。
3.DrivenKeyの設定
DriverのMarkerが0~50の間で動くときに、Skeletonが0~90曲がるように動作させるには以下のようにRelatoinをつなげます。
黄色枠で囲っているのが1番目の工程で作成した自作のMyMacroのNormalizeです。
これのMinに0を設定し、Maxに50、InputにはMarkerのTransXがつながるようにします。
そしてResultをInterpolateのCにつなげます。InterpolateのRaには0,0,0を設定、Rbには0,0,-90を設定し、そのResultにはSkeletonのRotationZ軸につなげます。
この例はでMarkerのTransでSkeletonのRotを制御するDrivenKeyの例です。これを応用すれば指を簡単に動かす構造を作れたりします。
今回はRotを制御するDriveKeyだったのでInterpolateを使用していますがTransを制御する場合にはMiddlePointのBoxを使用すれば大丈夫です。
つまりDrivenKeyというのはDriverのある値を0~1に正規化(Normalize)して、その値を受けてのDrivenが0~1での状態を制御されるという構造です。この入力値をNormalizeして0~1に置き換えてやるというのはかなり便利な方法で色々なところで応用されている考え方で覚えておくと色々な場面で役に立つかと思います。
2011年10月8日土曜日
「ハッカーと画家」を読んで
「ハッカーと画家」という本をまだ途中ですけど今読んでます。
その本の中でWebアプリケーションをめちゃくちゃ推し進めている一節がありました。
簡単にいうとWebアプリケーションの利点として、
ブラウザがあれば使うことが出来るのでお手軽だってこと。
他にはアプリケーションのプログラム自体はサーバー側にあるのでバージョンアップが容易に
出来るのでバグが少ないものをリリースすることが出来るなど他にも色々ありました。
たしかにPhotoShopを真似たソフトをWebブラウザ上で動作するソフトがどっかのサイトで見たことがありました。確かにこれは便利だと思いました。マシン環境を意識することなく、Webブラウザだけがあれば使うことが出来るお手軽な感じはかなりいいです。
もっというとWebブラウザがあればOSに依存することがなくなるから、色々選択肢は増えると思います。
ただ、そこでのデメリットはそのソフトが動いてるサーバーが駄目になると大多数のユーザーが使えなくなる恐れがあるということです。けどそのようなサービスを展開するならセキュリティーやバックアップなど厳重に行うはずなのでたぶん大丈夫だろうと思いました。あとはインターネットの回線のスピードによってレスポンスが変わってくるというこだと思います。
このWebアプリケーションって言う言葉は今の時代だとクライドコンピューティングという名前に変わって新しいサービスのあり方として存在しています。
いずれ3DCGソフトの場合でもWebアプリケーションになった場合、他の場合と同様に色々な恩恵を受けれると思います。Webブラウザだけがあればいいので環境に依存しないので、作業しやすいマシン環境を作るという必要性がないのでどこでも作業がしやすくなると思います。
その本の中でWebアプリケーションをめちゃくちゃ推し進めている一節がありました。
簡単にいうとWebアプリケーションの利点として、
ブラウザがあれば使うことが出来るのでお手軽だってこと。
他にはアプリケーションのプログラム自体はサーバー側にあるのでバージョンアップが容易に
出来るのでバグが少ないものをリリースすることが出来るなど他にも色々ありました。
たしかにPhotoShopを真似たソフトをWebブラウザ上で動作するソフトがどっかのサイトで見たことがありました。確かにこれは便利だと思いました。マシン環境を意識することなく、Webブラウザだけがあれば使うことが出来るお手軽な感じはかなりいいです。
もっというとWebブラウザがあればOSに依存することがなくなるから、色々選択肢は増えると思います。
ただ、そこでのデメリットはそのソフトが動いてるサーバーが駄目になると大多数のユーザーが使えなくなる恐れがあるということです。けどそのようなサービスを展開するならセキュリティーやバックアップなど厳重に行うはずなのでたぶん大丈夫だろうと思いました。あとはインターネットの回線のスピードによってレスポンスが変わってくるというこだと思います。
このWebアプリケーションって言う言葉は今の時代だとクライドコンピューティングという名前に変わって新しいサービスのあり方として存在しています。
いずれ3DCGソフトの場合でもWebアプリケーションになった場合、他の場合と同様に色々な恩恵を受けれると思います。Webブラウザだけがあればいいので環境に依存しないので、作業しやすいマシン環境を作るという必要性がないのでどこでも作業がしやすくなると思います。
2011年10月5日水曜日
電車の中でFullBodyIKにシミュレーションを試す
前の記事でFullBodyIKをシミュレーションしてみたらどうだこおだって記事を書きました。
今回は少しだけバージョンアップという形でシチュエーションを想定して試してみました。
そのシチュエーションは、日本の疲れた電車通勤の人を考えてみました(笑)
前回とは基本的には同じようなセットアップですが、違う点といえばつり革にもシミュレーションを試しており、そのつり革に手をかけている腕もつり革とお互いに影響しあってみえるようにシミュレーションの設定をしています。あとは疲れている感じがでるようなポーズや揺れ方を試行錯誤してみました。
今回は少しだけバージョンアップという形でシチュエーションを想定して試してみました。
そのシチュエーションは、日本の疲れた電車通勤の人を考えてみました(笑)
前回とは基本的には同じようなセットアップですが、違う点といえばつり革にもシミュレーションを試しており、そのつり革に手をかけている腕もつり革とお互いに影響しあってみえるようにシミュレーションの設定をしています。あとは疲れている感じがでるようなポーズや揺れ方を試行錯誤してみました。
これで色々な応用するシチュエーションとかのヒントになったかと思います。
例えば、戦闘機に乗っているシーン。F1など車に乗っているシーン。
基本のアニメーションがあってそれから物理シミュレーションをレイヤーで追加するイメージです。
今回もキャラクターに関しては手付けアニメーションは全く設定していなく、全てシミュレーションで動いています。意外といけそうな気配を自分では感じてます。
登録:
投稿 (Atom)











