2010.04.26 FcvTransporter64 64bit版

2010.04.17 FcvTransporter v1.0.0.5 リリース DLしたファイルの拡張子 dorをLZHに換えてからアーカイバで解凍してください。

2010.04.15 FcvTransporter v1.0.0.4 リリース

2010.04.10 FcvTransporter v1.0.0.3

2010.04.17 v1.0.0.5の変更点
【MMDのMorph用VMDへのコンバート処理を追加】


2010.04.15 v1.0.0.4の変更点
【VMDへのコンバート処理を追加】
xsiまたはModToolで付けたアニメーションをFcvExportすることで出来るfcbファイルをVMDにコンバートする処理を追加しました。
この処理にはVtxs.exeで使用するiniファイルと同様のiniファイルを使用します。
なので先にPMDモデルのボーンとxsiリグのポーンとの対応付けしたiniファイルを用意してください。
※iniファイルの仕様についてはこちらの【PMDモデルのボーンとXsiボーンの対応を作成する】を参考にしてください。


2010.04.11 v1.0.0.3の変更点
【ブランチ選択に対応】
これは、MOTORで指の動きを転送する方法が判らないので、VMDのモーションを付けたリグから転送するために処理を追加しました。
ブランチで選択し転送した後、リグに読み込む時はブランチ選択するのではなく、リグのルートモデルを左マウスで選択しFcvImportしてください。

 

このプラグインはxsi v6 以降のバージョンをお持ちの方には不要です。
リグに付けたFcによるアニメーションをまとめてファイル出力とファイルから読み込む事しかできません。

【インストール】

DLしたファイルを解凍しFcvTransporter.dllをプラグインフォルダにコピーしてください。

今回はModToolとxsi v5 foundationの2つを使いますのでそれぞれ2箇所にコピーする必要があります。

ModToolのプラグインディレクトリと

xsi v5 foundationのプラグインディレクトリにコピー

 

【アンインストール】

アンインストールする場合はFcvTransporter.dllを削除するかxsi/ファイルメニュー/プラグインマネージャーから削除してください。

 

※FcvExportとFcvImportの使い方

【使い方例】
1.ModToolのMOTORでアニメーションを割り当てます。

アニメーションのついたリグ(VMD_TEST2)と転送先のリグ(FcvBipedV5noaction)を読み込み、ModToolのアニメーションメニュー/MOTORからリグにタグを付けます。

[ロード]ボタンからbipedtobiped.tagtを読み込んでみた。

アンマッチでエラーになるが

メインボディとエキストラのパーツに空欄があるので対応するオブジェクトなりボーンなりをピックする。

2つのリグにタグをつけたらModTool/アニメーションメニュー/MOTOR/リグからリグへを実行する。

アニメーション元のソースとこれから付けるリグを選択し[適用]を押す。

Motorの処理が終わると[プロット]のボタンがアクティブになるのでプロット/OKでアニメーションを転送します。

Plot MOTOR Keyframesメニューにある合間のサイズが1だと全フレームにキーが打たれます。
※その場合はアニメーションエディタのカーブ/フィットである程度不要のキーを減らすことが可能です。

ピークと谷間と変曲点をキー って方がいいかもです。

ここで、転送先(FcvBipedV5noaction)リグのHipを選択しローテートなりポジョンなりをアニメーションエディターで見て欲しい。

下図ではアニメーションミキサーやクリップなどでコントロールされておりこのままだとプラグインでFCcurveを読むことが出来ない。
※MOTORでつけたアニメーションが反映されていない場合これを疑ってみてください。(バグのケースもあるかもですが…)

なので必要なら一旦シーンをセーブした後、コントロール元を削除するか外してください。

この例ではミキサーのデフォルトポーズを削除した。

これで準備が完了。

 

※v1.0.0.3での対応

手首と指の動きを転送元(VMD_TEST2)から転送先(FcvBipedV5noactio)リグへコピーする。

これはModToolのMOTORで指の動きを転送する方法が判らないのでブランチ選択しコピーする処理を追加しました。

(MOTORで指の動きを転送できる場合は不要です。)

転送元の右手首をブランチ選択後、[シフト]キーを押しながら左手首をブランチ選択します。

メインメニュー Fcv I/O をクリックしFcvTransporterを起動。

[FcvExport]を押し

ファイル名には指のモーション用に名称を入力し[OK]

確認したら[OK]

xsi exprollerからFcvTransporterに渡すリグ(FcvBipedV5noaction)を選択し[FcvTransporter]/FcvImportを実行

これで指の動きは転送できたはずです。(転送元と同じモーションであるかどうかは保証できませんが)
※ここまでの処理がv1.0.0.3での追加です。

 

 

xsi exprollerからFcvTransporterに渡すリグ(FcvBipedV5noaction)を1つだけ選択します。(左マウス)

メインメニュー Fcv I/O をクリックしFcvTransporterを起動。

[FcvExport]を押し

ファイル名を適当に入力し[OK]

確認したら[OK]

ここまでがModToolでの作業になります。

 

今度はxsi v5 foundationでアニメーションをつけたいリグ(FcvBipedV5noaction)を読み込みFcvExportしたFCcurveファイルを取り込みます。

xsi exprollerからFcvTransporterに渡すリグ(FcvBipedV5noaction)を1つだけ選択します。(左マウス)

メインメニュー Fcv I/O をクリックしFcvTransporterを起動。

[FcvImport]を押し

先にセーブしたファイル名が表示されていますのでそのまま[OK]で処理終了までお待ちください。

 

 

【VMDへのコンバート処理】

#リグの大きさやボーンの長さの違いなどにより、あまり正確な変換にはならないと思いますがモーションの編集は
#MMDより使いやすいと思いますので時間のある方は是非挑戦してみてください。

1.xsiまたはModToolにアニメーションの付いたリグを読み込みます。

2.リグを1つ選択し(マウス左ボタン)メニュー/Fcv I/O/FcvTransportダイアログからFcvExportを実行します。fig(1)

そのまま[VMDExport]を実行しVMDファイルを作成します。fig(2)

出来たVMDファイルをMMDでPMDを読み込んだ後モーションデータの読込で確認してください。

 

 

2010.04.16
【MorphのVMDコンバート処理】の追加

説明の流れとしてVtxs.exeでVMDからMorfScriptを吐き出し->xsiでMorphオブジェクトを作成後
Vtxsで作ったMorphScriptを実行しアニメーションを付けます。

そのアニメーションをFcvTransporterで[FcmExport]しfcmファイルを作成
[MorphExport]でMorph用VMDファイルを作成します。

 

Vtxs.exeにMorphキーのあるVMDファイルをD&Dします。

[MorphModelScript]を押してスクリプトを作成し

xsiのスクリプトウィンドーにコピペします。

これを実行するとMorph用のモデルが作成されます。

今度はVtxs.exeで作成したMorphscriptをxsiのスクリプトウィンドーにD&Dします。

実行するとMorph用モデルにアニメーションが付きます。

Morph用オブジェクトに付いたアニメーションをFcvTransporterで

fcmファイルへ書き出します。

fcmファイルを作成したら今度は[MorphExport]を押し

Morph用にVMDファイルを作成します。

MMDではモデルを読み込んだ後、ファイル/モーションデータの読込でMorphアニメーションを割り当てます。

 

先にxsi v5でMorph用オブジェクトのアニメーションをfcmファイルに保存しましたがここではそのfcmファイルから
Morph用オブジェクトに読み込む方法を説明いたします。

xsi と同じ手順でMODTOOLでMorph用オブジェクトを作成します。

Vtxsの[MorphModelScript]からスクリプトをModToolスクリプトウィンドーにコピペします。

スクリプトを実行しMorphモデルをクリック後[Fcv I/O]/FcvImportで

出力したfcmファイルを選択し読み込みます。

これでMorphオブジェクトにアニメーションが転送できた思います。

 

 

 

不具合、ご質問、ご要望ありましたらブログまたはメールでご連絡いただければ幸いです。

五莉

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以下の文は初めてアドオン作った勘違い野郎が憶測で好き勝手に何か言ってますが気にしないでください。

2010.04.08

VMDtoXsiScriptmarkerでVMDからモーションを移植したもののVMD_TESTリグから使うモデルのリグに
アニメーションをコピーしてもリグの長さ、方向、構造などが同じでないとまたモーションを直さなければい
けない。

これの手っ取り早い方法はMOTORを使えば良い。だが、V5にはそんな機能はないよと。
で、ModTool v7.5をDLした。

<-ModTool V7.5の画面
Gator,Motor,Hear,ICE,にリジッドボディなどv5Foundation に無い機能がてんこ盛りである。

Motorも右手フリップする問題は多分v5リグの問題なのだろうけれど、それ以外は問題なくモーションを転送できた。
しかし、が、なんと、そのモーションをv5に戻す方法が見つからないのである。モデルは上位Verなので当然読めない。
スプラインもセーブできないしミキサーもダメだ。無料のツールでそんな使い方はダメですよと。やるなxsi。
ではでは、プラグインだったらどうだろう。。。幸いModtoolはプラグインに対応しているのである。
つまり、ModToolのMotorでアニメーションを転送しモーションの付いたファンクションカーブ(FC)をプラグインでファイル出力しv5で
そのファイルをリグに読み込んでしまえば良い。

<-プラグインソースの一部

こんな感じで起動しました。

FCを転送するためのプラグインはできた。プラグインも正常に動作する。ところが…

肝心の部分がほとんど動かないのである。ぐぅ。。。

不思議に思ってHipのFcを見てみると

他のソースでドリブンされていますよ奥さん!
これを読む方法が見当付きません。そういう時はサポートに連絡してってゆうか、そんな契約はしてないので無理。

しかも、必要最低限だったはずのキーが…


ぉぃ、Motorつくった奴ちょっとこいや? って言いたくなりますねぇ。。。というかその前に自分で全キーprotしたしぃ…

   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( `・ω・´) 彡<  ぉぃ、こんなバカなことやってる奴ちょっとこいや
  (m9   つ    \_________
  .人  Y 彡
  レ'(_)


   ┏━━━━━━━━┓
   ┃   ∧_∧       ┃
   ┃   ( ´・ω・`).     ┃
  ∧_∧ (m9  つ.     ┃
  (    )人  Y       ┃
  ( O  つ '(_).      ┃
  ノ  ,イ━━━━━━━┛
  レ-'(_)

仕方ないのでキーフレーム毎に値を読んでセーブしますか。。。キーフレームはVMDファイルを読めば判りますので。
しかし、しかし。フレームを進めるような単純な方法さえSDKヘルプから探すとえらく時間がかかります。

だいたいなんスかこのサンプル。必要なヘッダーが何かも書いてないし、コピペしてテストしても大抵エラーになるし。
言語毎に書いてあるならともかく、あるときはjavaである時はVBであるときはPythonでってスゲー気まぐれ。
使い方もGet/Putその他もろもろある中でGetだけとか掻い摘んで一部しか載っていない。
まぁ、xsiのコマンドをスクリプトから実行できるからそれでもいいかと思ったけど…

ありましたよ奥さん!!

てゆうかプロジェクトのプロパティポインタを取ったその後どうするかでしょ?ねぇ?ね?ねぇぇぇぇってばぁ。ばか。
playcontrolの名称なんて見てどうするの?楽しいの?そう。よかったね。。。ってよくねーョ。

もうね。さすがSDKヘルプです。おかげさまでサポートは万歳でしょう。ある意味良く作ってあります。


そうそうこれ。これのc++の奴は?ないの?どうなNOOOOOOOOOOOOOOOOOooooooooooooooooooooo!

 

で、さっきのプロジェクトのプロパティを見てみると

ようやく見つかりました。探しましたよぉ奥さん。。。

で、単にフレーム移動はこんな感じで0から99フレームまで移動とかできます。playcontrollの名前なんて見ませんしぃ。
  Project prj = app.GetActiveProject();
  CRefArray proplist = prj.GetProperties();
  Property playctrl(proplist.GetItem(L"Play Control") );
  for(LONG LP=0;LP<100;++LP){
    playctrl.PutParameterValue( L"Current",LP ); 
  }

あとはVMDのキーフレームを参照しながらModToolのフレームを移動し、その時の各ボーンのrotやらposを読めば良いんじゃないかと。

とりあえず今日はこの辺で。

 

2010.04.14 またしてもクォータニオンでハマる。

VMDExportの試作実装が終わりコードを走らせて見る。

例によってサンプルはパルメパラパラである。

出来たVMDをMMDに読み込ませてみる。

wktk

 

 

 

 

 

ウギャー!!

 

 

こ、腰が、腰が、腰が千切れるううううううううううううぅぅぅぅぅぅぅぅぅ〜

下半身だけ回転しているのだ。

回転させるとこのざまか。

しかしこれはデジャブだ。

以前も同じ事があった。

 

そう、

 

それは(遠い目で)

 

 

 

 

Vtxs.exeを開発していた時も同じ症状に襲われたのだった

 

原因は角度からクォータニオンへの変換が正しくない為に起きていると考えられた。

 

あぁ、また修行にでるのか。

 

無限荒野に投げ出されるのか。

 

金谷氏には申し訳ないがあの難解な説明は何度読んでも解かりそうにない…

仕方ないので今回はVPVPwikiからインドカレー氏のB-MOMIのReadmeからnymmd氏を訪ねNyMmd-forCSのreadme.ja.txtから
PY氏 を訪ねARTK_MMDのソースをgetした。

PY氏のソースには私の知りたいことが全て入っていた。

クォータニオンからオイラーとその逆関数もある。

これを組み込むことによりついに完成したのである。ありがとう参考にさせていただいた方々。

 

再度テストだ

 

気を取り直してwktk。

 

 

 

 

 

ウギャー!!

 

 

こ、腰が、腰が、腰が千切れるううううううううううううぅぅぅぅぅぅぅぅぅ〜

 

またか

 

やっちまったなぁ。。。

結果は同じだった

つまり先の自分のソースは正しかったのか?

いやまて。。。

Hipが回っているのにChestが回らないのは変だ。軸回転をクォータニオンに変換しているfunctionは一箇所である。

なぜだろう。。。なんでだろう〜なんでだろう〜回転しないのなんでだろう〜(ぉぃ

そこで問題のChestのrotYをアニメーションエディタで見てみた。

xsiでは0度から-360度まで一気に回転している。その間キーが無い。MMDで扱う角度は0から+180度と0から-180度なので
MMDだとここは0度になってしまう。つまり回っていないのと同じ事なのだ。orz...

えっ?何でキーがないのか?。。。そりゃ自分で削除したかr <どげしつっっっっ

しかもxyzのキーがバラバラに打たれていた。

アニメーションエディタのカーブフィットを実行したり手動でキーを削除した場合などでこういった状態になるのだが、

キーが無い部分は0になってしまう。

なので回転で言えばrotXYZの3つとも同じフレームにキーを追加しないと正しく回転しない。

ではどうすれば良いのか。

1.xyz軸のキーを手動で打つ。

2.カクカクして動きの怪しいボーン(今回はHipとChest)を選択しアニメーション/すべての変換で10フレーム間隔程度でProtする。

今回はプロットしてみた。

Protが終わったらxsiExprollerからリグをクリックしFcvExport後VMDExportする。

とりあえずこれで回転するようになった。

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送