トップページ > 過去ログ > 記事閲覧
DxlibModelViewerでの.FBX読み込みについて
名前:ar 日時: 2013/01/18 18:55

付属のDxlibModelViewerにて"法線再計算"にチェックが入った状態で 手元のボーンフレームの含まれる.fbxファイルを読み込もうとするとエラー落ちする様です。 このボーンを含んだ.fbxファイル(BoneTest.fbx)は法線マップを使用する予定のモデルである為 読み込みの段階では法線マップが設定されていませんが、 "法線再計算"にチェックを入れて読み込むとエラー。 (この時 "2954:VMD Load Error : 対応していない VMD バージョンです"と言うエラーがLogから確認できました) チェックを外した場合は読み込むことが出来るようです。 ただこの場合は読み込みは通りますがUVマッピングに異常が発生する様で不自然な斑点(マップ抜けや重なり?)の様なものが発生したり、 法線はスムージングされているが従法線、接線がそれについてきていなかったりする様です。(頂点単位になってしまう) (正直法線マップを使用するモデルの従法線、接線ベクトルが本来どう言った形でシェーダに渡されているのか正しく理解していないのですが) これは自作のシェーダにて確認しました。pmdファイル等でも同様の現象が確認できました。(元々キャラクターはpmdを扱う予定でした) .fbxファイルはBlenderと言う総合3Dソフトのエクスポータで出力しているのでファイル自体が正常でない可能性もありますが確認の手段がありません。 エラー報告ついでの質問となりますが、この"法線再計算"とは本来どういった用途で使われ、どういった動きをするものなのでしょうか?(サンプルから察するにmqo専用?) 通常ライティングでは使用しない従法線、接線ベクトルを計算するものだと認識していますがDxlibではmv1に変換する際これらの情報をどう扱っているのでしょうか。 エラーの出てしまうファイルを用意しました。 ttp://""1.axfc.net/uploader/so/2759465.zip (頭にhと、""の部分にwを半角で三つ) BoneTest.fbx:ボーンの含まれるファイル BoneTest.mv1 : 上記ファイルを"法線再計算"チェックを外してテクスチャとマテリアルを設定したもの(上記異常が発生) Mesh.fbx : ボーンの含まれないファイル Mesh.mv1 : 上記ファイルにテクスチャとマテリアルを設定したもの (こちらが期待していた結果)

Page: 1 |

Re: DxlibModelViewerでの.FBX読み込みについて ( No.1 )
名前:管理人 日時:2013/01/22 01:03

ファイルを拝見いたしました まずご指摘の通りモデルビューアーの法線再計算機能をボーンフレームが含まれる モデルファイルで使用するとエラー終了するバグがありました、こちらは修正しました UVマッピングに異常が発生するという現象は確認できませんでした 現状のDXライブラリでは法線の再計算を行わないと法線マップの使用に必要な 従法線と接線ベクトルが生成されないようになっているので、法線マップが正しく 適用されていないことによる見た目の破綻がUVマッピングの異常と認識されたのかもしれません > エラー報告ついでの質問となりますが、この"法線再計算"とは本来どういった用途で使われ、 > どういった動きをするものなのでしょうか?(サンプルから察するにmqo専用?) mqoファイルは法線情報が存在しないため、法線を自前で計算する必要があります そのときに作成した機能をmqoファイル以外にも使用できるようにしたのが機能追加の経緯です fbxファイルでは従法線と接線も含まれていると最近知ったのですが、未だにファイルの従法線、接線を 読み取るようにしていないので、DXライブラリで法線マップを適用するには法線の再計算を行って 従法線と接線を計算で生成する必要があります 現在の用途はそれくらいです・・・ > 通常ライティングでは使用しない従法線、接線ベクトルを計算するものだと認識していますが はい、現状はそのご認識で間違いありません > Dxlibではmv1に変換する際これらの情報をどう扱っているのでしょうか。 どのように・・・ 普通に従法線と接線を計算して法線と合わせて一組で扱っています 法線再計算のバグを修正したバージョンをアップしましたので、 よろしければお試しください http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) // ビューアー http://homepage2.nifty.com/natupaji/DxLib/DxLibModelViewerTest.zip ただ、ボーンの含まれるファイルは上記バージョンでも正常な結果を得ることができません 現状のDXライブラリでは9個以上のボーンが関わる頂点がメッシュに含まれる場合、 その部分はシェーダーで扱われず、法線マップも適用されません 上記テスト版のビューアーで BoneTest.fbx を読み込んで頂き、フレーム一覧で 「kuri2_001」を選択、「フレームメッシュ一覧」の No:0 を選択して頂くと 「ステータス」欄の最下部にトライアングルリストの一覧が表示されます その中に「9ボーン以上スキニングメッシュ」というタイプのトライアングルリストが あると思いますが、その部分が1頂点に9個以上のボーンが影響を与えていて、 シェーダーが使用されず法線マップも不適用となっています 今のところ9ボーン以上が一つの頂点に影響を与えるメッシュに対応する予定はありませんので、 申し訳ありませんが各ボーン頂点に与える割り合いなどを調整して一つの頂点が関わる ボーンの数を最大で8個までに抑えるようにしてみてください そうすれば Mesh.mv1 と同じ描画結果が得られると思います
Re: DxlibModelViewerでの.FBX読み込みについて ( No.2 )
名前:ar(解決) 日時:2013/01/23 09:58

対応ありがとうございます。 修正バージョンを使って読み込んだところ正しく読み込むことが出来ました。 >関連ボーンが9ボーン以上のメッシュ これは全く気づきませんでした、申し訳ないです。こちらの確認不足でした。 手元にあった関連ボーンが8ボーンのメッシュを使ったところ正しく描画されたのを確認しました。 (これでもギリギリですがBlenderの自動ウェイト設定を安易に使用したのがまずかった様です) また、法線の疑問に対する回答ありがとうございます。 DXライブラリ(モデルビューア)での従法線、接線の仕様が理解できました。 まだまだ思った形にはなっておらず不明点も多いのですが、現状私が理解出来ていない事も多いので 確かな事をまとめた上でそれでも不明点があった場合にはまた質問させて頂きます。 その時はまたよろしくお願いします。本当にありがとうございました。

Page: 1 |