BlenderでFaceGenのメッシュを修正

トトロリ妹をFaceGenに出力していて思い出したんですが、フォロワーの顔(頭)メッシュを直したいのにECEで直して出力とやっていると大変なので何とかBlenderでちゃちゃっとやりたいな!って。
前々から思ってはいましたがようやく上手くできました。

facegen_0夜中の暗い部屋で一人でやりたくない作業ですね(゚Д゚)

ちょっと他のブログ記事や情報とは違うやり方になりますが、(というかこの方法じゃないと私の環境では上手くいかないです・・・)自作のトトロリフォロワーのnifを例に説明します。

1. FaceGenのnifファイルからメッシュデータをエクスポートする

まずは該当キャラのFaceGenのnifファイルをNifskopeで開きます。
今回は顔メッシュのみ修正しますので
BSFaceGenNiNodeSkinnedノード内にある顔メッシュ(NiTriShapeData)のある親ノードを選択します。
画像の場合(トトロリの場合)は、FemaleHeadNordとなっているノードが顔メッシュの親ノードになります。

facegen_1

次に、Fileからエクスポート > OBJを選択して出力します。

facegen_2


2. 出力したobjファイルをBlenderでインポートし修正する

Blenderに入ります。
インポートでobjを読み込みますが設定は以下の通り。

facegen_3

スケールを100倍にすること、回転をしないこと以外は特に触らず。(画像の通りです)

因みに画像はv2.49bの画面ですが、最新バージョンで読み込んでも問題ないです。
私は最新版のを普段使っています。

facegen_4新しいバージョンでインポートする場合はこんな感じで。

facegen_5

一応、マテリアルとテクスチャーを設定して、UVマップも確認しておいた方がいいかな~と思います。修正作業はテクスチャー(ノーマルマップも)貼り付けて光の反射加減も見ながらやるといいと思います。

facegen_6-1

(ノーマルマップもテクスチャに登録して設定)

facegen_6-2

(シェーディングをGLSLに設定)

facegen_6-3

(マテリアルで光り方・反射を適当に調節)

facegen_6-4

(プレビューはテクスチャーモード)

詳しいやり方は端折りますが、テクスチャーにノーマルマップも登録して画像のような設定にし、シェーディングをGLSLへ。マテリアルでnifにもあるような光源の設定がありますので光り方を調節。
これやると、テクスチャーの伸び縮みや突っ張られ方、表面の凹凸や光の反射具合を見ながら調整できるのでオススメ。

facegen_6
修正の際の注意点としては、
首と体の繋ぎ目になっている頂点は弄らないこと。
頂点を追加、マージ、分割しちゃダメ。
メッシュオブジェクト全体の位置の移動も作業時にするだけなら良いですが、エクスポートする際には元の位置に戻すようにします。

心の声:
顔にもウェイト設定(Vertex Groups)があるはずだと思っていたけどobjからインポートした場合ボーンが付いていないからか何も無い。nifの方に置いてきちゃったってことでしょうか?-?
ということはー・・・

結局のところ頂点の位置を移動することくらいしかできませんが、Blenderで作業できるだけでも十分ですよね!

3. 3ds形式でエクスポートする

修正が終わったらエクスポートですが、ここが他の情報と違っていて私は3ds形式で出力します。

File > エクスポート > 3D Studio (3ds)を選択します。
obj形式でエクスポートする場合と違い、特に何も設定する必要はないです。
最新バージョンとかですとメッシュの向きを設定できますがそこも触らず。
普通に前を向いている状態で出力されればOK

失敗談
私の環境が不味いのかobjで出力するとnifにインポートした際にUVマップが崩れていたりUV情報自体が無くなっていたりで全然ダメでした。。。

4. 出力した3dsファイルをNifskopeでインポートして各種設定をする

FaceGenのnifファイルをNifskopeで開き、出力した3dsをインポートします。
インポートする場所は最初にobjを出力した時と同じ顔メッシュデータ(NiTriShapeData)の親ノードに対してインポートします。※ここ重要。

facegen_7

画像ではFemaleHeadNordがメッシュの親ノードなのでFemaleHeadNordを選択してインポート。3dsを読み込むとまるで何事もなかったかのようにメッシュデータがすり替わります。

次に、各種設定をチェック&修正していきます。
要は元のnifとそっくり同じにすればよいですがその中でも重要な点を挙げておきます。
(設定順番は適当でイイです)

■インポートしたノードのValue値を修正

インポートしたノード(顔メッシュの親ノード)のValue値が変わっている場合は元のものに修正します。
画像の場合だと、Value値がface0となってしまっているので元のFemaleHeadNordに直します。

facegen_7-2

■UVの状態を確認します。

facegen_9
上の画像のようにメッシュの親ノードを右クリックでEdit UVを選択。
恐らく下のようにずれてると思います。
facegen_10
ズレていてもテクスチャが連続で並べられて表示されるので問題ないと思いますが気持ち悪いので直しますw

facegen_11
Ctrl+Aで全選択し、Alt+Sで画像のようなエディットを出して右下のY:値を2と入力してOKするとUVマップが丁度真ん中の四角に収まるかと思います。
後は右上の×をクリックして閉じてください。

一応テクスチャーを貼り付けて確認。
(馴れてくればこの辺りすっ飛ばしてもいいですが)

facegen_12
確認が終わったらテクスチャーのパスは戻しておいてください。

■Skin Partition Blocksの確認。

facegen_13
Skin Partition Blocksは、
顔メッシュの親ノード内にあるBSDismemberSkinInstanceノードのNiSkinPartitionを選択し、Block Details画面に出てくる3つ(首・頭・耳)のSkin Partition Blocksを選択することで確認できます。(上の画像参照)
顔メッシュが3つのブロックでわかれている筈ですが、これらの法線がぐちゃぐちゃになっていたらインポート失敗してます。経験談(汗)

■メッシュデータのHas Normalsをnoに設定。

facegen_8
今回はHas Normalsのみ元と違っていましたので記載しましたが、それ以外の項目も違っていたなら合わせてください。
※CenterやRadiusの位置情報は合わせなくてもいいと思います。

髪のメッシュなんかだとここ直すことなく入れ替わってくれてます。今のところ。

■BSFaceGenNiNodeSkinnedのChildrenを修正する

BSFaceGenNiNodeSkinnedノードを選択しBlock DetailsのNum Children数を確認します。
恐らく元のnifより数が増えてしまっているかと思いますのでChildrenを開いて確認します。

facegen_14画像は修正した後のものですが、矢印アイコンの付いた番号付きのノード名が並んでいるところをみると、顔メッシュの親ノードがだぶって登録されているかと思います。
このままだとCTDするのでだぶっているノードは消し、Num Children数を直します。

だぶっているどれか一つをダブルクリックして文字内容を消します。Noneとなるはず。

消したノードのChildrenが一番下であったなら楽なのですが、途中にあった場合消した分だけ手動で上に詰めるしかない?のかな。
消したところ以降のノードも消して上から詰めて登録し直せばよいです。
(ノードの番号を入力すると登録し直せます)

結果、一番下のChildrenがNoneとなった状態でNum Childrenの数を1減らしてください。
7となっていたら6に。
もし、だぶっているノードが2つ、3つあったらそれら消した分だけ数を減らしてください。

次にその下の緑のサークル矢印アイコンをクリックするとChildrenが更新されてNoneのChildrenが消えます。(下のChildrenから消えてくみたいですね)

以上で大丈夫かな。たぶん。
保存してゲームで確認してみてください。

髪や眼など他の部分も同じやりかたで修正できると思います。

ss15484ss24969
ECEでは気づけなかった凹凸の修正ややり難かった首回りの調整、髪の生え際の調整もこれで楽勝っ

おつかれさまでした。

BlenderでFaceGenのメッシュを修正」への10件のフィードバック

  1. tokikake

    うわーーーっ、、これはすごい!
    blenderで、ECEを使って作ったNPCのメッシュを整形しなおしたいと思って
    でも、どうもやりかたがはっきりしなかったんで、探してたんですが、、

    、objで出力でできるんですか@@; とってもありがたいです。
    ぜひチャレンジして、報告させていただきます。夢が広がりました(笑)
    本当にありがとうです。

    返信
    1. ブログ主gz 投稿作成者

      tokikakeさん、こんにちわ
      ブログ主のgzです。
      私も散々試して何故か上手くいかず、諦めかけていた矢先に行きついた方法でした。できた時は思わずガッツポーズ(ノ∀`)
      作業上手くいってくれることを願っておりますっ

      返信
  2. tokikake

    本当にできました。 しかし3dsで出力するってのは盲点ですね@@;
    書き換えるところも、まさかこんなところがってところまで説明していただけてるので本当に助かりました。

    colladaで直接ボーンも持ってこれる?? とか思いましたが、
    まだまだわかってないので、もっと勉強します。

    blenderでマテリアルを割り当てるときは、今までcyclesしか使ってなかったので、GLSLモードでのテキスチャの割り当て方まで学ばせていただきました本当にありがたいです! 
    しかしセンスがないので、いざ持ち込むと、どうも思ってるのと違うのにはがっかりします^^; skylimはじめたばかりなので(遅いですが)
    今後ともよろしくです。

    返信
    1. gz 投稿作成者

      無事できたようでよかったですー
      私もSkyrim歴半年程度ですからね、3Dモデリングに関してはずぶの素人です(ノ∀`)
      何か作る度に新大陸を発見しているような気分ですねー
      今後とも宜しくですっ

      返信
    1. gz 投稿作成者

      たぬさんこんにちは。
      行き当たりばったりのいい加減なブログですが、お役に立ててなによりですっ

      返信
  3. もず

    はじめまして。検索でこちらに辿り着きました。
    丁寧なご解説をありがとうございます。
    しかし、何度やってもSkin Partition Blocksで確認すると法線がぐちゃぐちゃになってしまっております。
    これが原因でゲーム内でもクリーチャーのような姿に(笑)
    インポートが失敗しているとのことですが、どう検索しても答えに辿り着きません。
    インポートを成功させるには、どうしたらいいでしょうか。
    ご教授お願いできないでしょうか…

    返信
    1. gz 投稿作成者

      こんにちは、もずさん
      記事にもちょこっと書いてありますが、私もSkin Partition Blocksの法線が崩れた経験があります。ウェイトが一致しなくて崩れちゃってるのかな~と想像してますが実際には何が問題で崩れるのかはわかりません。
      で、確認してみて欲しい点がいくつかあります。

      ●元のメッシュはnifからエクスポートしたものである必要があります。オリジナルメッシュはダメです(ウェイト情報や頂点の情報が食い違ってしまう)
      ●nifからobj形式でエクスポートする際は必ずそのメッシュの親ノードを選択してエクスポート。
      ●objをBlenderにインポートする時の設定をしっかり確認。
      ●Blenderで編集する時は頂点のマージ、削除、追加をしてはダメです。Blenderの設定で、重なった頂点は自動でマージなんてする機能があったしますので注意です。
      また、Objectモード上でのメッシュのスケールや位置、回転も弄っていたら元の数値に戻す。
      ●Blenderから3ds形式にエクスポートする際のメッシュの向きに注意。この向きを変えたら法線が正常になった事があったので確認してみてください。(この時はBlenderにインポートした際に向きを間違えてたからかもしれませんが。)
      ●Nifへインポートする際には入れ替え対象のメッシュの親ノードを選択してインポート。

      返信
      1. もず

        とてもご丁寧にご回答ありがとうございます。
        通りすがりでお世話をおかけしてしまいすみません。

        >Blenderの設定で、重なった頂点は自動でマージなんてする機能があったしますので注意です。

        恐らく、これが原因のようです。
        頂点を重ならないように配置して、重複する頂点を削除したら直りました。

        実は、Blenderを始めたばかりだったんです。
        もっと勉強しないとだめですね。
        ご迷惑おかけしました。

        日記を拝見しました。
        可愛らしくて素敵なMODをたくさんつくられているのですね。
        私もこんなに素敵なMODが作れるようになったらいいなぁ、と、拝見しておりました。
        これからも時々拝見しようと思います。
        ありがとうございました。

        返信
  4. ピンバック: 近況報告:キャラメイク沼日記 – Lucien-House

コメントを残す

メールアドレスが公開されることはありません。


*