2009年03月25日

PoseMixerTool

アドオンにしてみました。ご使用は自己責任でよろしくです。
PoseMixerTool.xsiaddon7月8日更新

旧バージョン(XSI5で動作)はこちら
PoseMixerTool_forXSI5.xsiaddon
旧バージョン→新バージョン移行はこちらを参照


使い方の動画


「顔の表情つけたいけどシェイプアニメーションはちょっと・・・」
ってな時にシェイプアニメーション風(ポーズ加算)な動作をするあれマネージャー的なものを思いついたり。


こんなんできました。

インストールするとカスタムツールバーに「PoseMixerTool」が追加されます

090317_1.JPG


使い方

まず、駆動されるオブジェクトを初期位置に配置してグループ化します
グループ作成の注意
   グループには駆動されるオブジェクト以外は入れないでください。
   このツール全般は基本的にこのグループをシングル選択した状態で実行します
090317_2.JPG


作成されたグループを選択して[MakePoseMixer]を実行します
グループ内のオブジェクトに色々カスタムパラメーターが作成されます
これらはスクリプトやエクスプレッションが読み取るものなので手動でいじる機会は無いです。たぶん
あと、グループに[○○_PoseMixer_Host]というヌルが追加されます。こいつが駆動されるオブジェクトの親玉になります
※このツール自体が名前で必要なパラメーターを判断するので作成されたカスタムパラメーターの名前を変更しないでください
また、何らかの原因で作成されたパラメーター名が[PoseStore1]とかになっても失敗するので注意

090317_3.JPG


グループ内のオブジェクトを好きなポーズに移動・回転・スケーリングさせます。(オブジェクトを選択すると一時的にPoseMixerの拘束が解除されます)


ポーズが出来たらグループを選択して[addPose]コマンドを実行
ポーズ名を入力してOKを押すと親玉の[PoseMixer_Host]内にポーズ名と同じパラメーターが追加されます
これがポーズのウェイト値になり、アニメーションさせたりするパラメーターになります

後は3〜4の要領でポーズを追加していきます


各コマンド説明
[MakePoseMixer](グループを選択して実行)
グループ内のオブジェクトに必要なパラメーターを追加してグループ内に[○○_PoseMixer_Host]というヌルを作成します

[AddPose](グループを選択して実行)
入力された名前で新規にポーズを追加します
文字はパラメーターのスクリプト名に入力できる範囲内でお願いします
追加されたポーズの名前は[グループ名+ポーズ名]になります
(名前は重複しないように)

[DeletePose](グループを選択して実行)
実行するとポーズの一覧が表示されるので削除したいポーズをピックしてください
削除した後アンドゥしても消されたパラメーターに適用されてたアニメーションが戻ってこないので注意(XSIの仕様?)

[OverwritePose](グループを選択して実行)
実行するとポーズの一覧が表示されるので現在のポーズで上書きしたいものをピックしてください。
ポーズの修正にどうぞ

[Connect](グループ又は複数オブジェクトを選択して実行)
ローカル変換(.kine.local)に適用されているアニメーションを削除してPoseMixer_Clientに接続しなおします

[UnConnect](グループ又は複数オブジェクトを選択して実行)
ローカル変換(.kine.local)に適用されたエクスプレッションを削除します。([Connect]で再接続できます)
PoseMixerの影響を切りたい時に。

[SetDefaultPose](グループ又は複数オブジェクトを選択して実行)
現在のポーズでデフォルトポーズを登録しなおします

[ApplySingle](グループ又はホストのヌルを選択して実行)
実行するとポーズの一覧が表示されるのでピックされたウェイト値を1にして、ピックされなかったポーズすべてを0にします
____DefaultPose____をピックするとデフォルトポーズを適用します
ポーズの確認・修正等に

[DeletePoseMixer](グループ又は複数オブジェクトを選択して実行)
PoseMixer関連のパラメーターをすべて削除します
グループ選択や選択内にホストのヌルが含まれている場合、ホストに関連するポーズだけを削除することも可能です(グループからオブジェクトを除外する時に使用します)


その他の使い方
・グループに新たにオブジェクトを追加したい
追加したいグループにオブジェクトを追加させた後、グループを選択して[MakePoseMixer]を実行すると新たにグループのホストに対応したパラメーターが追加されます。


・右目→左目みたいにポーズを対称にコピーしたい

AniCopyPasteTool(最新版)を使えば一応できます。
前回の更新はこいつの為です AniCopyPasteTool使い方
[MakePoseMixer]作成前に対称テンプレートを登録しておくと良いかと。
グループ別にテンプレを分けておくと便利かも
登録後、以下の方法でポーズを反転コピーできます
方法1(ポーズの左右反転が可能)
  コピー先をすべて[UnConnect]しておく
  コピペツールで[テンプレートからコピー]を実行
  (コピー元も[UnConnect]→[テンプレートから入れ替え]でポーズのミラーリングも可能です)
  ポーズが対称コピーされるのでそれを登録
  コピー先を[Connect]でミキサーで駆動されるように戻す
方法2(連続して登録するのに便利)
  Ctrlを押しながら[テンプレートからコピー]を実行してエクスプレッション適用
  ポーズが対称ポーズでエクスプレッションされるのでそれを登録
  コピー先を[Connect]でミキサーで駆動されるように戻す
どちらかの方法でどうぞ。

・複数グループにまたがって制御
一応、駆動されるオブジェクトは複数グループに属することが可能です。
例えば「右目」グループと「左目」グループのオブジェクトを登録した「両目」に対して[MakePoseMixer]を実行すると「両目」を制御できるPoseMixerHostが作成されます
※登録時グループ内にホストのヌルが含まれていると誤作動を起こすので注意してください


生成される各カスタムパラメーターセットの説明(名前を変更しないでください)
PoseMixer_Client・・・ResultPoseとDefaultPoseが格納されていますactiveはスクリプトオペレーター制御でオブジェクトが選択されるとオフになります(各ローカル変換へのエクスプレッションのアクティブに繋がっています)
ResultPose・・・すべてのポーズとウェイト値を計算したエクスプレッションが入っています。この結果をローカル変換に繋いでいます(Connect・Unconnectで接続・切断されてるのはここです)
DefautPose・・・基準になる初期ポーズの座標が入っています
PoseStore・・・この中にポーズが格納されていきます
PoseMixerHost・・・各ポーズのウェイト値を設定できるパラメーターが入っています。こいつを何かのコントローラーと繋いでフェイシャルリグ的なものが出来ないかと夢想したり。


使用上の注意
駆動されるオブジェクトに対して「削除→アンドゥ」の操作を行うとシーン修復不可で落ちます
入れ子構造にしているカスタムパラメーターがアンドゥで正しく戻ってこない(XSIのバグ?)のが原因のようです(XSIFndで検証)

若干動作が重いのでXSI上でのリアルタイム再生は期待しないほうが良いかもorz
タグ:アドオン XSI
posted by ちょちょ at 02:05| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/116177567

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。