BlenderNewNifPlugin の変更点

Top/BlenderNewNifPlugin

*目次 [#xf9bfb5a]
#contents

*新Nif inport/export pluginでの素体編集 [#cae0f8fb]

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です。

**旧Nifプラグインでの問題 [#x5c282be]

Blender2.49bの旧Nifプラグインでインポートしたメッシュをそのままエクスポートすると、元のメッシュには無かった奇妙な光る部分が発生します。
#ref(Blender249b-Body-StrangeLuster.jpg)
#ref(Blender249b-Body01.jpg)

法線のからみなのだと思うのですが、Blender上で見てもおかしなところは見つけることができませんでした。

2014年10月頃から、Blender2.71以降で動作する新nifプラグインが発表されていて(http://www50.atwiki.jp/skyrim_mod/pages/55.html)、これでFallout3のメッシュを編集してみます。

Blender2.75に新nifプラグインを導入、Type3の貧乳ボディ(Alice body)をインポート。オプションはデフォルト。加工せずに、そのままエクスポートします。オプションはFallout3でそれ以外はデフォルト。NifSkopeでは表示できるので、ゲームに導入(Data\meshes\characters\_male\femaleupperbody.nif)。
#ref(Blender275-Body-Transparent.jpg)
#ref(Blender275-Body01.jpg)

表示されない。[[こちらの記事>http://www24.atwiki.jp/fo3ss/pages/33.html]]にあるとおり、「装備メッシュはエクスポートする時Shadow MapとShadow Frustumをオンにしないと表示されません」なのですが、新nifプラグインにはそのオプションは見当たりません。たぶんBlenderのテクスチャで設定ができるのだとおもいますが、探せませんでした。

NifSkopeで元メッシュと違いを探してみると、NiTriShape→NiMaterialProperty→Alphaがゼロなので、「1」にしてみたところ、
#ref(Blender275-Body-NifskopeAlpha1.jpg)
#ref(Blender275-Body02.jpg)

今度は表示されましたが今度は体のあちこちに継ぎ目が。
#ref(Blender275-Body-Alpha1.jpg)

Blenderに戻り、メッシュを調べてみると、継ぎ目の部分はメッシュが開いています。メッシュが開いている部分はどうもUV展開する境目と一致しているっぽい。

メッシュが開いていればレンダリングで境目がでるだろうから、閉じることを考えます。インポートオプションに「CombineVertices」があって、これをオンにしてインポートしてみたところ、開いているメッシュが閉じ、同時に頂点数も減ったのですが、これをエクスポートしてゲームで表示すると、Blender2.49bで出力した物と全く同じ、奇妙な光る部分が発生しました。Blender2.49bでの問題は重なった頂点をプラグインが勝手に重複削除処理することだったようです。新nifプラグインのインポートオプション「CombineVertices」も同じ処理のようで、使用すべきではなさそうです。

重複頂点削除すると、頂点数がオリジナルのメッシュから減るので、しない方法を模索してみたがどれもうまくいかなかったので、重複頂点削除の方向で試してみました。

メッシュを全選択して重複頂点削除
#ref(Blender275-Body-DeleteOverlappedVertexes.jpg)
#ref(Blender275-Body04.jpg)

537個の頂点が削除された
#ref(Blender275-Body-537VertexesDeleted.jpg)
#ref(Blender275-Body05.jpg)

これをエクスポート
#ref(Blender275-Body-AssignError.jpg)
#ref(Blender275-Body06.jpg)

ポリゴンがアサインされてない、というエラーがでます。ご丁寧に「問題となったメッシュを表示しているので、みつけるのは簡単」というメッセージがそえられているのですが、表示されたメッシュは未選択。

Fallout3のメッシュは、身体欠損の表現のため、BP_で始まるいくつかの頂点グループがあり、すべての面はどれかの頂点グループに属していなければなりません。ここで重要なのは「面」が属する、ということ。すべての「頂点」がグループに属していても、頂点グループの境目の頂点は両方のグループにまたがっていないと、面は取り残されてしまいます。

BP_TORSOの頂点の範囲
#ref(Blender275-Body-BP_TORSO.jpg)

BP_TORSOSECTION_LEFTLEGの頂点範囲
#ref(Blender275-Body-BP_TORSOSECTION_LEFTLEG.jpg)
#ref(Blender275-Body08.jpg)

二つをフォトショップで重ね合わせて、わかりやすいように色分けすると
#ref(Blender275-Body-NotSelectedPolygons.jpg)
#ref(Blender275-Body09.jpg)

選択されていない面があることがおわかりでしょう。Blenderでこの面を見つけにくいのは、Blender上でBP_TORSOとBP_TORSOSECTION_LEFTLEGの頂点を同時に選択してしまうと、間にはさまれた「取り残され面」も選択されてしまうので、見つけにくいのです。

先の重複頂点削除では重なった頂点が削除され、このとき両方の頂点グループにまたがった頂点が削除されています。これを見つけ出し、両方の頂点グループにまたがるようにして、取り残される面をなくさないとエラーが無くなりません。

**新nifプラグインでの素体の編集 [#mf94a5a1]

まず、インポートしたメッシュの切断面肉キャップなどを隠します。体メッシュを編集モードで開き頂点選択を解除したのち、辺モードにします。この状態で「選択→非多様体」を実行すると、境目になる辺が選択されます。辺モードでする理由は、このコマンドを頂点モードで実行すると線が3本集まる部分では▽が生じてしまうためです。
#ref(Blender275-Body-SelectBorderSideMode.jpg)
#ref(Blender275-Body10.jpg)

このままでは、首や袖など開いた部分も選択されているので、非選択にして境目だけ残す(これはやらなくても良いかも)
#ref(Blender275-Body-ExcludeNeckAndSleeve.jpg)
#ref(Blender275-Body11.jpg)

境目をシームにする
#ref(Blender275-Body-MarkSeam.jpg)

同時に、頂点グループSeamを作って登録(これも後の利便のためなのでやらなくてもいいかも)
#ref(Blender275-Body-MarkVertexesGroup.jpg)
#ref(Blender275-Body13.jpg)

選択されている境界部分の頂点を重複頂点削除
#ref(Blender275-Body-DeleteOverlappedData.jpg)
#ref(Blender275-Body14.jpg)
全選択のときより削除される頂点が1個少ない。理由は不明です。

オブジェクトモードで、胴体オブジェクトを複製(Shift-D)、別レイヤーに移します。
移した胴体オブジェクトを編集モードで開き、全選択解除したのち、BP_TORSOを選択、面で削除
#ref(Blender275-Body-CopyMoveSelectDelete.jpg)
#ref(Blender275-Body15.jpg)

同様に、すべてのBP_XXXXを順序に選択、面削除していくと、選択されない面が残ります
#ref(Blender275-Body-BP_XXXX-NotSelectedSurfaces.jpg)
#ref(Blender275-Body-ReasonOfExportError.jpg)
#ref(Blender275-Body16.jpg)
#ref(Blender275-Body17.jpg)

この面がエクスポートエラーの原因となる「取り残され面」。これを参考に元メッシュで頂点グループを編集し、いずれかの頂点グループに編入していきます

編入が終わったら、別レイヤーに作った複製オブジェクトを削除して(削除しないと、これまたエクスポートエラーの原因になります)、エクスポート。オプションをFallout3にするのをお忘れなく。NifSkopeで元メッシュと頂点数を比較したところ、一致しました。
#ref(Blender275-Body-CompareOriginalAndExportData.jpg)
#ref(Blender275-Body18.jpg)

境目の重複頂点削除で頂点数が減っているのにこれは不思議。未だ理由は分かりません。

NiTriShape→NiMaterialProperty→Alphaを1にします
#ref(Blender275-Body-NifskopeAlpha1.jpg)
#ref(Blender275-Body02.jpg)
セーブして終了。そのほかのパラメータは適宜変更してください。

できたメッシュをゲームで確認したところ、境目も奇妙な光りも出なかったので結果オーライです。

**おまけ。今時のボーンウエイトコピー [#c7d7a0bb]

nifプラグインがBlender2.49bしか使えなかった時代は、ウエイトコピーをボーンウエイトコピースクリプトで行っていました。これはこれで便利だったのですが、現バージョンのBlenderでnifプラグインが使えるようになりインポート、エクスポートができるようになったのは朗報ですが、現バージョンのBlenderでは2.49b用のボーンウエイトコピースクリプトが使えなくなってしまいました。

あまりに常識なのか、ネットにウエイトのコピーのやり方が載って無くて困ったのですが、現バージョンでのウエイトのコピー方法はモディファイアで行うのだそうです。試行錯誤してみたところ、以下のようにすると良さそう。私のように2.49bからなかなか乗り換えできない方、お試しください。

コピー対象メッシュAlice
#ref(Blender275-WeightCopy-TargetMeshAlice.jpg)
#ref(Blender275-WeightCopy01.jpg)

ウエイトコピー元メッシュArms01
#ref(Blender275-WeightCopy-OriginalMesh-Arms01.jpg)
#ref(Blender275-WeightCopy02.jpg)

オブジェクトモードでコピー対象メッシュAliceを選択、モディファイア「データ転送」を付加します。
#ref(Blender275-WeightCopy-SelectAlice-ModifiersDataTransfer.jpg)
#ref(Blender275-WeightCopy03.jpg)

ウエイトペイントモードにして、効果が見えるようにします。
モディファイア「データ転送」のパラメータを
  元オブジェクトArms01選択→頂点データチェック→breastL選択→頂点グループ→データレイヤーを生成
の順に設定すると、ウエイトが設定されます。
#ref(Blender275-WeightCopy-SelectOriginalObjArms01-SelectBreastL-CreateDataLayer.jpg)
#ref(Blender275-WeightCopy05.jpg)

ウエイトのコピー元の体型がかけ離れている場合、ウエイトがうまく投影されない場合があります。そのときは頂点データのチェックの右脇にある頂点マッピングのリストから希望に近い効果が得られるものを探します。

モディファイアでつけられたウエイトはそのままではウエイトペイントモードで編集できないので「適用」ボタンで適用してから編集します。

**追記。光る線への対処 [#v64c0102]

上記記事のあと、こどもていこくの素体を新プラグインとBlender2.75aの組み合わせで編集して、体側に光る線が出ましたので、対処方法とその後分かったことなどを書きます。

Fallout3のMOD作家さんのブログなどで既に言及されている方法ですが、Nifskopeで開き当該メッシュを「Update Tangent Space」します。具体的には次のようにします。

NifファイルをNifskopeで開きます。

対象となるメッシュを右クリックし、メニューから「Mesh→Update Tangent Space」を実行、そのまま保存します。または、SpellsメニューからBatch→Update All Tangent Spacesですべてのメッシュが処理されます。
#ref(Nifskope-UpdateTangentSpace.jpg)
#ref(Nifskope-UpdateTangent.jpg)
(ただ、Oblibion時代に同じような光る線に悩まされたとき、Update All Tangent Spacesはさんざん試して駄目だった記憶があるので、これも万能じゃない気が…)


光る線の確認はGECKでもできます。GECKだとesmファイルを読み込むのに若干時間は掛かるものの、立ち上げておけば、nifファイルの変更を即座に確認でき、こどもていこく兵のようにランダムに出現するNPCも種族指定で見られます。


GECKでの確認はGECK起動後、File→Data...から開くesmをダブルクリックで指定
#ref(GECK-SelectESP.jpg)

Active File Warningは「はい」。その後警告などが出ますが、すべてキャンセルでスルー。

Character→Race...で種族一覧を開く
 NPCの種族の調べ方は、Object WindowのNPCツリーに、こどもていこくならNameに「Child Soldier」と付いたNPCが複数いるので、目的のNPCを選びダブルクリックし、TraitsタブのRace欄に種族が書かれています。

EditorIDの一覧から種族をクリックして選択。PreviewをFullにチェック。EditingをFemaleにチェックすると女性キャラの全身がプレビューできます。
#ref(GECK-RaceWindow.jpg)

プレビューウインドウ内で、マウス左ボタンで回転、右ボタンでPreferenceメニュー、ホイールボタンで平行移動、ホイール回転がズームです。また、視界から消えてしまったときはキーボードの「c」キーでセンターに戻ります。「w」キーを押すとワイヤフレーム表示になります。

右ボタンのPreferenceメニューは、マウスでの移動量などを設定できます。デフォルトでは動きすぎて思ったところに定まらないので、Preview Movementタブで調整してください。

種族一覧で種族を切り替えるたびにメッシュやテクスチャを読み込むので、メッシュをいじったら一度他の種族を表示してから元の種族を選ぶと、変化が反映されるのでスピーディーに確認できます。また、ワイヤフレーム表示で、問題の発生している箇所を特定しやすくなります。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS