思いつくままを綴る雑記帳

directX_anim_tools更新

新しいデータが来たので試してみたら・・・上手くデータを取り込めないようで・・・。
まぁ、よくあることですが・・・。
元々動作確認に使用していたデータはかなり古いもので全てのBoneに対して同数のアニメーションkeyが格納されている形式で作成されていたものなんです。
でも新しく来たデータは必要なアニメーションkeyのみが格納されている形式で作成されていました。
これが本来の形なんだけどね・・・。
以前は全てのkeyが存在していたのでアニメーションkeyのtimeを無視してフレーム位置からデータを取得していました。
処理を省略していたんです・・・面倒だしtimeを探すと処理時間が延びちゃうからね・・。
でも今回は正攻法でアニメーションkeyのtimeを参照するように変更しました。
これによってBoneによってアニメーションkeyの個数が異なるデータでも取り出せるようになりました。
但し不都合な事も出てきます。
アニメーションの中抜き処理で発生します。
指定されたフレーム番号のアニメーションkeyが存在しない場合にはそのBoneに対してそのフレームのkeyを設定しません。
存在する前後のkeyから該当フレームに対するkeyを生成してやれば可能ですがその算出方法はシステムによって異なっています。
元々その値が規定されていればデータ通りに挙動しますが異なっていればおかしな挙動になります。
それにBlenderは存在しないkeyに関しては自動的に補完してくれるので・・・おまかせみたいな・・・。
但し開始フレームでkeyが存在しない場合は基本位置が不明なので・・・・どうなるかはわかりません。

その他使用するデータによっては従来版のように読み込みに失敗することもあるかと思います。
テキストデータ形式なので記載方法は自由なので・・・全てのパターンには対処していません・・。
個人的なツールなので・・・悪しからず・・・。
というわけで・・・directX_anim_tools ver1.01を公開しています。
旧版のdirectX_anim_tools ver1.00も残していますが・・・。

directX_anim_tools ver1.01ではAnimTicksPerSecondセクションに基づいてFrame Rateも設定されます。
ダウンロードは4Shared又はMediaFireのBlenderのScripts関係のフォルダを参照。
続きを読む
スポンサーサイト

Bone Weights Copy について

以前にBone Weights Copyのツールについて書きましたが・・・
実はBlender 2.65で同様の機能が実装されていたのを知りませんでした。
しかも2.70aでもこの機能は使えます。

Weight設定されたObjectを元にして別のObjectの近似位置にあるWeightを計算して設定してくれます。
WeightsをコピーしたいObjectをコピー元と同じArmatureに関連付けます。
この時、空のGroupで関連付けるといいと思います。
次にObjectモードでコピー元、コピー先の順にObjectを選択してWeight Paintモードに入ります。
そしてWeightsメニューのTransfer Weightsを選択すると、Weightが計算されて設定されます。

これだとBlenderのバージョンを気にしないで使えますね。

Blenderのある機能が実装された版がどれなのかを、調べていたらこんなの実装されてたのね・・・
という感じで見つけました。
んー当時はあまり関心なかったのか・・・というか、このリリースノート見た記憶が・・・ない!

某サイトでマニュアルを見てくださいと言ってる割には、最近はマニュアルをあまり見ていなかったことを反省中・・・。
たまには確認の意味で見直した方がいいのかもね・・・。
ちなみにknife projectについても見た記憶が・・・・ない。
Knifeツールの仕様が幾つか変更された時に見たけど・・・まだ英語のままの部分が多かったので
そのまま確認するのを忘れたのかも・・・。
でも、2つ収穫があったのでよかった。
しかしBlenderで最近何も作ってないような・・・。

ついでに Knife Projectについて
(これが調べていたツール)
これは選択したオブジェクトの投影された輪郭に基づいて投影先のオブジェクトをKnifeツールでカットする。
投影するので当然その時のビューによって投影具合は変化する。
またオプションのCut throughをONにしなければ非表示の面に関しては投影が無視される。
これも中々使えそうだ。

完成 -追記-

下の画像は某ゲームのアニメーションの.xファイルを前回投稿のツールで読み込んだところです。
あ!!某ゲームとはOblivionではありません。
日本製の別のゲームです。

pose.jpg

前回投稿でツールのインストール方法を書いていませんでしたが・・・
Blenderのscripts/addons又はscripts/addons_contribの中に適当にフォルダを作成して配布している7zファイルの中身を放り込んでください。
後はBlenderのUser Prefでaddonの中からツールを探して有効にすればObject Toolsの中に出てきます。
続きを読む

完成

この前からチマチマと作っていたツールが完成・・。
動作確認はBlender2.69.7 猫さんBuildです。

.x 形式で出力されたアニメーションデータをBlenderにimportするツールです。
.x 形式にはいろいろありますが・・・テキスト形式のみサポートです。
下の図の赤く囲まれた部分がツールのパレットです。

DirectX_Anim_Tools.jpg

使用できる機能は以下の通り。
・Meshデータをimportできる。
・Armatureをimportできる。
・アニメーションデータをimportできる。

ファイルの指定は間接指定するとエラーになります。

Meshデータについて:
・Materialを再現します。
 UVも再現している。
・Vertex Weightを再現します。
・重複Vertexがかなり気になったので自動的に重複vertexを削除するオプションを付けてます。
・Meshのみの取り込み可能。

アニメーションデータについて
・アニメーションデータの一部を指定して取り込むことが出来ます。
 フレームxxからnnフレーム分取り込み。

Armatureについて
・Armatureのみの取り込み可能。

名称について
.x ファイルの各セクションに名称が付加されていれば
その名称で各パーツを生成しています。

注意事項:
テキスト形式なので記述形式によっては正しく読み込めない場合があります。
ある程度柔軟に取り込めるように配慮はしましたが・・・。

猫さん作でも気にしない人は、ご自由にお使いください。

リンクにある4Shared又はMediaFireのBlender関係のところにdirectX_anim_tools.7zを置いています。

但し利用に際して何か不具合、問題が発生しても猫さんは責任を持たないので
その点を了承できる人のみ使用してください。

謝辞:
Meshの生成については以下の方のScriptを参考にさせて頂いています。
OGRE for Torchlight (*.MESH) 作者の Dusho氏
続きを読む

Weight PaintのTips

この記事は古いのでこちらの纏めの記事を参考にすることを勧めます。
Weight Paint Tips(纏め)

訪問履歴でたまに見かけるんですが・・・
Weight Paintをする時にMeshを作り込みすぎて
他のMeshの内側にあるMeshを塗る方法がわからない人が
たまにいるようなので・・・猫さんはこうしてます!!を紹介・・・

まぁ、Blenderにある機能なんですが・・・

例えば、こんなものを作った場合です・・・

ptfig1.jpg

通常はこんな風になっているので
ptfig2.jpg

中にある通路風のとこは塗れません・・・


そこで、塗りたい所を隠している部分をEditモードで非表示にします。
ptfig4.jpg

で、Weight Paintモードでシェーディング形式を指定するところの右側にあるボタンを
クリックします。
マスキングしてペイントする機能です。
これで、邪魔なところが消えているのでペイントするために
CTRL+Aなどでペイントする箇所を選択状態にして塗ります。
しかし、よくあるんだけど・・・ちゃんと見えているのに塗れない部分が
あったりします。
そんな時は塗って不要になった部分を消して、もう一度やれば
塗れる様になると思います。

で、再表示すると・・・
ptfig5.jpg

こんな風に塗れてます。
見える角度を微妙に変えると塗れたりする時もありますが・・
そんな時には、試行錯誤せずにEDITモードに戻って
不要な部分を非表示にして、やり直すほうが結果的には
早く塗れますよ・・・

まぁ、参考までに・・・・

追記)
文中にEDITモードに戻ってとかありますが・・・
戻らなくてもWeight Paintの中(Mask機能中)で編集ツール(Box/Circle/自由曲線)が使えるので
続きを読む
  次のページ >>