nifをBlender編集するにはインポートプラグインが必要で、これまでNifプラグインがあるのはVer2.49bでした。これが、少々癖があったためおかしな症状に悩まされたりもしましたし、なかなか新しいバージョンのBlenderに移行できない理由にもなっていました。
2014年10月頃から、Blender2.71以降で動作する新nifプラグインが発表されていて(http://www50.atwiki.jp/skyrim_mod/pages/55.html)、これでFallout3のメッシュを編集してみたところ、良い結果が得られましたのでここでレポートします。
一度mixiで書いた日記を元に書いていますので、内容は防備録風になっています。ご了承ください。
ここで使用した素材はBlender 2.75a、Nif Inport Plugin ver 2.6.0、メッシュはDIMONIZED TYPE3 female bodyです。
Blender2.49bの旧Nifプラグインでインポートしたメッシュをそのままエクスポートすると、元のメッシュには無かった奇妙な光る部分が発生します。
フォト
法線のからみなのだと思うが、Blender上で見てもおかしなところは見つけられない。
2014年10月頃から、Blender2.71以降で動作する新nifスクリプトが発表されていて(http://www50.atwiki.jp/skyrim_mod/pages/55.html)、これでFallout3のメッシュを編集してみる。
Blender2.75に新nifスクリプトを導入、Type3の貧乳ボディ(Alice body)をインポート。オプションはデフォルト。加工せずに、そのままエクスポートする。オプションはFallout3でそれ以外はデフォルト。NifSkopeでは表示できるので、ゲームに導入(D:\GAME\Fallout3\Data\meshes\characters\_male\femaleupperbody.nif)。
フォト
表示されない。ほむら衣装での記事でも書いたが「装備メッシュはエクスポートする時Shadow MapとShadow Frustumをオンにしないと表示されません」なのだが、新nifスクリプトにはそのオプションが見当たらない。
NifSkopeで元メッシュと違いを探してみると、NiTriShape→NiMaterialProperty→Alphaがゼロなので、「1」にしてみた。
フォト
今度は表示された。ところが今度は体のあちこちに継ぎ目ができた。
フォト
Blenderに戻り、メッシュを調べてみると、継ぎ目の部分はメッシュが開いている。メッシュが開いている部分はどうもUV展開する境目と一致しているっぽい。
メッシュが開いていればレンダリングで境目がでるだろうから、閉じることを考えた。インポートオプションに「CombineVertices」があって、これをオンにしてインポートしてみたところ、開いているメッシュが閉じ、同時に頂点数も減ったのだが、これをエクスポートしてゲームで表示すると、Blender2.49bで出力した物と全く同じ、奇妙な光る部分が発生した。Blender2.49bでの問題は重なった頂点をスクリプトが勝手に重複削除処理することだったようだ。新nifスクリプトのインポートオプション「CombineVertices」も同じ処理のようで、使用すべきではなさそうだ。
重複頂点削除すると、頂点数がオリジナルのメッシュから減るので、しない方法を模索してみたがどれもうまくいかなかったので、重複頂点削除の方向で試してみる。
メッシュを全選択して重複頂点削除する。
フォト
537個の頂点が削除された
フォト
これをエクスポートする。
フォト
ポリゴンがアサインされてない、というエラーがでる。ご丁寧に「問題となったメッシュを表示しているので、みつけるのは簡単」というメッセージがそえられているが、表示されたメッシュは未選択。
Fallout3のメッシュは、身体欠損の表現のため、BP_で始まるいくつかの頂点グループがあり、すべての面はどれかの頂点グループに属していなければならない。ここで重要なのは「面」が属する、ということ。すべての「頂点」がグループに属していても、頂点グループの境目の頂点は両方のグループにまたがっていないと、面は取り残されてしまう。
BP_TORSOの頂点の範囲
フォト
BP_TORSOSECTION_LEFTLEGの頂点範囲
フォト
二つをフォトショップで重ね合わせて、わかりやすいように色分けすると
フォト
選択されていない面があることが分かる。Blenderでこの面を見つけにくいのは、Blender上でBP_TORSOとBP_TORSOSECTION_LEFTLEGの頂点を同時に選択してしまうと、間にはさまれた「取り残され面」も選択されてしまうので、見つけられない。
先の重複頂点削除で重なった頂点が削除され、このとき両方にまたがった頂点が削除されている。これを見つけ出し、両方のグループにまたがるようにして、取り残される面をなくさなくてはいけない。
手順を次のように行った。
まず、インポートしたメッシュの切断面肉キャップなどを隠す。体メッシュを編集モードで開き頂点選択を解除したのち、辺モードにする。この状態で「選択→非多様体」を実行すると、境目になる辺が選択される。もし、このコマンドを頂点モードで実行すると線が3本集まる部分では▽が生じてしまう。
フォト
このままでは、首や袖など開いた部分も選択されているので、非選択にして境目だけ残す。
フォト
境目をシームにする
フォト
同時に、頂点グループSeamを作って登録
フォト
選択されている境界部分の頂点を重複頂点削除
フォト
全選択のときより1個少ない。
オブジェクトモードで、胴体オブジェクトを複製(Shift-D)、別レイヤーに移す。
移した胴体オブジェクトを編集モードで開き、全選択解除したのち、BP_TORSOを選択、面で削除
フォト
同様に、すべてのBP_XXXXを順序に選択、面削除していくと、選択されない面が残る
フォト
フォト
この面が「取り残され面」。エクスポートエラーの原因となる。これを参考に元メッシュで頂点グループを編集し、いずれかの頂点グループに編入していく
編入が終わったら、別レイヤーに作った複製オブジェクトを削除して(削除しないと、これまたエクスポートエラーの原因になる)、エクスポート。NifSkopeで元メッシュと頂点数を比較したところ、一致した。
フォト
境目の重複頂点削除で頂点数が減っているので、これは不思議。未だ理由は分からない。
ゲームで確認したところ、境目も奇妙な光りも出なかった。