「法線マッピング追記」の編集履歴(バックアップ)一覧はこちら
「法線マッピング追記」(2010/12/05 (日) 19:34:49) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*&bold(){法線マッピング追記}
XNAで法線マッピングを適用させる方法がわかったので追記しておくよ。
方法といっても、とても付け焼刃なものだけどね。
*エディタで開いて直接書き込む
どうやら3Dソフトが出力するfbxファイルには、基本的に法線テクスチャの情報はついてこないらしい。
ので、要は「エディタでFBXファイルを開いて法線テクスチャ情報を直接書き込んでしまおう」っていうのが今回の解決方法。なかば無理矢理なやり方だ。
[[XNAクリエーターズ公式サンプル>http://create.msdn.com/ja-JP/education/catalog/sample/normal_mapping]]
XNA公式のサンプルファイルではうまくいってるんだから、そのサンプルFBXファイルの中にどういう風に法線テクスチャ情報が書いてあるか確かめて、そっくりそのまま真似すればいい。
&ref(lizard.png)
このトカゲのfbxファイルをVisual Studioで開く。そして、文字検索機能でたぶん法線の英語読みである「normal」と書かれてるあたりに
法線テクスチャがあるに違いないと検索してみた結果、それらしいのがあった。あった。
&ref(rezardnormal.png)
----
ある程度見ていくと、どうやらこのサンプルファイルは「トカゲ」「目玉」「岩」の三つにモデルが分かれていて、例えばトカゲ本体の情報は、Model::lizardという項目でひとくくりにされているらしい。
つまりこの欄に書かれているたくさんのPropertyたちが、トカゲ3Dモデルの各種情報というわけだな。
&ref(normal1.png)
そして、このサンプルの情報を頼りに、自分で作った3Dモデルにも法線テクスチャの情報を書いてやる。「Property: "NormalMap", "Enum", "A+U",0, "ファイル名"」の1行をファイル名のところ以外丸パクリしちゃった。
多分大丈夫だとは思うけど、もしかしたらPropertyの順番にも意味があるかも知れないから、とりあえずサンプルにならってColorプロパティの上に書き込んどくことにしたよ。
&ref(mynorma.png)
*結果
実行してみた結果。
今まで色情報しかなくてのっぺりだった3Dモデルに、ちゃんとデコボコがつくようになったよ。これで本当に画面に写したかった形になった。
&ref(seikou.png)
問題点としては、法線マッピングの表示には専用のコンテンツパイプラインが必要だということ。今回はただ表示するだけなので
サンプルファイルの実行データを利用して事なきを得たど、このままだと他のコンテンツパイプラインとかと併用ができない。
他の実験では3Dのスキンアニメーション用にLAGライブラリというのを使っているので、どうにかしてそれぞれのコンテンツパイプラインを
合体させる方法を見つけないと、法線マップ付きのリアルな3Dモデルをアニメーションさせるということができないままになってしまう。
今後の課題ってやつだ。あんま難しいのは苦手なんだけどなぁ。
*&bold(){法線マッピング追記}
XNAで法線マッピングを適用させる方法がわかったので追記しておくよ。
方法といっても、とても付け焼刃なものだけどね。
*エディタで開いて直接書き込む
どうやら3Dソフトが出力するfbxファイルには、基本的に法線テクスチャの情報はついてこないらしい。
ので、要は「エディタでFBXファイルを開いて法線テクスチャ情報を直接書き込んでしまおう」っていうのが今回の解決方法。なかば無理矢理なやり方だ。
[[XNAクリエーターズ公式サンプル>http://create.msdn.com/ja-JP/education/catalog/sample/normal_mapping]]
XNA公式のサンプルファイルではうまくいってるんだから、そのサンプルFBXファイルの中にどういう風に法線テクスチャ情報が書いてあるか確かめて、そっくりそのまま真似すればいい。
&ref(lizard.png)
このトカゲのfbxファイルをVisual Studioで開く。そして、文字検索機能でたぶん法線の英語読みである「normal」と書かれてるあたりに
法線テクスチャがあるに違いないと検索してみた結果、それらしいのがあった。あった。
&ref(rezardnormal.png)
----
ある程度見ていくと、どうやらこのサンプルファイルは「トカゲ」「目玉」「岩」の三つにモデルが分かれていて、例えばトカゲ本体の情報は、Model::lizardという項目でひとくくりにされているらしい。
つまりこの欄に書かれているたくさんのPropertyたちが、トカゲ3Dモデルの各種情報というわけだな。
&ref(normal1.png)
そして、このサンプルの情報を頼りに、自分で作った3Dモデルにも法線テクスチャの情報を書いてやる。「Property: "NormalMap", "Enum", "A+U",0, "ファイル名"」の1行をファイル名のところ以外丸パクリしちゃった。
多分大丈夫だとは思うけど、もしかしたらPropertyの順番にも意味があるかも知れないから、とりあえずサンプルにならってColorプロパティの上に書き込んどくことにしたよ。
&ref(mynorma.png)
*結果
実行してみた結果。
今まで色情報しかなくてのっぺりだった3Dモデルに、ちゃんとデコボコがつくようになったよ。これで本当に画面に写したかった形になった。
&ref(seikou.png)
問題点としては、法線マッピングの表示には専用のコンテンツパイプラインが必要だということ。今回はただ表示するだけなので
サンプルファイルの実行データを利用して事なきを得たど、このままだと他のコンテンツパイプラインとかと併用ができない。
他の実験では3Dのスキンアニメーション用にLAGライブラリというのを使っているので、どうにかしてそれぞれのコンテンツパイプラインを
合体させる方法を見つけないと、法線マップ付きのリアルな3Dモデルをアニメーションさせるということができないままになってしまう。
更に今回はサンプルにFBXファイルがあったおかげで模倣できたけど、xファイルの方で解決する方法は未だ見つかってないので、それも問題になっている。
今後の課題ってやつだ。あんま難しいのは苦手なんだけどなぁ。