髪作成のメモ
髪メッシュの作成を方法メモしておいたのを少し整形して置いておきます。
未完な上に若干古いです。特にインポート・エクスポートで面倒くさくて2.49bは使いません。
必ずkuromimiさんの自作髪型MOD:準備編【修正】を参照にしてください。


私のグーグルドキュメントに以下の2つの資料を公開してます。
こちらも合わせてお読みください。


髪のメモ    カーブで髪の房を作る

髪のポリッシュとウェイトペイント


Blenderの導入やインポート・エクスポート方法はMod作成wikiのBlender導入を読んでおいてください。

作業を始める前に

とにかくリファレンスを集めます。
ヘアカタログを読んだり、文献を読んだり、実際に観察したり、
また他のmodやゲームではどうしているかをとにかくよく観察してください。
シルエット、髪の生え際、処理の仕方。
頭にないものからは具現化できません。
なれないうちは特に、最も時間をかけてください。

必要なツール
  • Blender 2.49b(import/exportのみ)
  • Blender最新版(5月時点で2.74。作業効率が圧倒的にいいので)
  • NifSkope
  • FO3Archive
必要なデータ
  • バニラのヘッドメッシュ
  • バニラの髪メッシュ
ファイルの抽出
FO3 Archiveでファイルの抽出をします。
できるだけ作りたい髪と同じような形や長さの髪を選びます。
女性顔メッシュ:data\meshes\actors\character\character assets\femalehead.nif
男性顔メッシュ:data\meshes\actors\character\character assets\malehead.nif
女性髪メッシュ:meshes\actors\character\character assets\hair\female
男性髪メッシュ:meshes\actors\character\character assets\hair\male

nifインポート
・NifSkopeでの作業
Block DetailsのところにNiHeaderがあります。それをクリックしてツリーを展開します。
バージョンをBlenderで読み込めるように書き換えます。数値をダブルクリックで編集できます。
User Version 12→11
User Version 2 83→34

書き終えたらCtrl+Sで一旦名前をつけて保存します。元とは違う名前にしましょう。(例Hair01_11.nif)
もう一度開き直すと以下のようにBSLightingShaderPropertyとNiAlphaPropertyが出てきます。
Blenderで読み込めないブロックなのでこれらをCtrl+Deleteで消します。
またCtrl+Sで上書き保存します。

この作業を顔と髪両方やっておきます。

・Blenderでの作業
File→Import→NetImmerse/Gamebryo(.nif & .kf & .egm)です。
importnif.png

この設定で髪と顔をインポートしておきます。

髪と顔をインポートできたら、File→Save(Ctrl+Sキー)で.blend形式で保存します。
2.49でのインポート作業はおしまいです。

髪作成
(RANさんのオブリビオンの時の髪作成チュートリアルですが参考になります。円筒から分割していく手法。)
板ポリから作る方法で作ります。左右に別れて生え際が縦に長い髪に向いてます。

先ほど作成した.blendファイルをBlender最新版をFile→Appendで持ってきます。
(Blendファイルはそのまま開くこともできますが、後々使うスカルプトのブラシプリセットが出なくて不便なので)
頭:Female.nif→Object→FemaleHead
髪:髪のnif→Object→髪オブジェクト
オブジェクトモードで右クリックで頭のオブジェクトを選択します。

Nキー押して画面右にPropetiesを出してTranslationのXYZを全部0にします。
髪も同様に全部0に。
Propertiesの3DCursorをX0Y0Z1.3にします。
Shift+AでMesh→Planeを出します。
plane.png

テンキー7で上視点を移動させて、タブキーでEdit Modeに入ります。
Ctrl+R(ループカット)を押してから、辺の方に持って行くと紫の線が出るのでテンキーで9と打つか、マウスのスクロールで9本まで増やします。左クリックを二回押して確定します。
LoopCut.png

同様に横もループカットで9分割して碁盤目上に。

・ShrinkWrapとMirror
ShrinkWrapはサランラップのようなもので、ターゲットに指定したものの形にあわせて変形させるモディファイアです。
Aキーで頂点を全選択したあと、プロパティウィンドウからレンチマーク(Modifiers)を選んで、Add Modifierを開いて右から3列目上から10番目のShrinkWrapを選びます。
TargetをFemaleHeadに、Offsetを0.2にします。その他はそのままで。
mod_shrinkwrap.png

頭の形に合わせて板ポリが変形しました。
plane_shrinkwrap.png

Aキーで全選択を解除して、Bキーの矩形選択ツールで板ポリの右半分を選択してXキー→Verticesで削除します。
Aキーで板ポリを全選択して、またAdd Modifierから右から2列目上から8番目Mirrorを選びます。
これで、X軸を挟んで左右対称になります。一々両側編集しなくて済むので作業時間が半分になります。

・髪のベースを作る。
Oキー押してPropotional Edit(他の頂点も一緒に動く機能)をオンにして、FalloffをSharpに設定します。
PropotionalEdit_Sharp.png

Ctrl+テンキー1で正面に向けてからテンキー8で一回押して、斜め上から縦の先が見える状態にしておきます。
ここで右端の縦線にカーソルを合わせてAlt+右クリックでループ選択します。
loopselect.png
 

Gキーを押して、ホイールで他の頂点も動かす範囲を調整してから下に引っ張ります。
左クリックで確定。

hair_GrabDown.png

下の方ほどポリゴンがかくかくしてるのでCtrl+Rのループカットで適度に分割します。
Altキーのループ選択とGキー二回押しの頂点スライドをうまく使って辺と辺の位置を均等に調整します。

hair_topology.png
これぐらいのポリ数が扱いやすいと思います

これでベースは完成です。
タブキー押してオブジェクトモードに戻り、ShrinkWrapをApplyで適用します。
ミラーはそのまま残しておきます。

・スカルプトで調整

スカルプトとは粘土細工のように持ったり削ったりできます。
まずSculpt Modeに入ります。

sculptmode.png

Tキーでツールシェルフを開いて、ブラシを選びます。
sculpt_brush.png

Clay(Cキー)で盛り上げてからSmooth(Sキー)でならすと綺麗にできるかもです。
モディファイアでミラーしてる方は調整できないので注意。
円の半径の調整は[ ]キーまたはFキーで大小の調整ができます。
効果の強さはツールシェルフのStrengthかShift+Fキーで調整できます。
あとは中クリックでグリグリ回しながら微調整します。
生え際とか毛先はループ選択にGキーのがやりやすいのでたまにエディットモードと合わせて微調整していきます。

 tuningwithsculpt.png
だいぶ髪っぽくなりました

・Bsurfaceで前髪を作る。
BsurfaceとはBlender標準搭載のアドオンで、GreasePencilという線を引く機能で面を生成します。
詳しくは Bsurfaces 1.5 ヘルプの日本語訳にて。

使うにはアドオンをまずオンにします。
User Prefrencesを開きます。

userpref.png

Addonタブで左側Meshボタン押すとBsurfaces GPL Editionが絞れます。人のマークの右側のチェックを入れます。
Bsurfaces_Addon.png

3DViewに戻って、Nキーを押して右側にPropertiesを開いて、Grease Pencilのところをチェック入れて
Drawing Setting:を以下のようにSurfaceにします。これで既存メッシュの表面をなぞるように描けます。

GreasePencil_N.png


髪のメッシュを選択してEditing Modeに入ってから線を引きます。
※Bsurfaceは何かしらのメッシュ選択状態でないと使えません。
線の引き方ですが、Dキー押しながら、左クリックしてそのままドラッグします。

Bsurface_Line.png

Tキーのツールシェルフを開いて、Add Surfaceボタンを押します。

Addsurface.png

線と線の間にメッシュが生成されます。(埋まってるのでGキーで引き出した)

Addsurface2.png

生成した直後に、ツールシェルフ下のBsurfaces add surfaceで
CrossとFollowでポリゴンの分割数の設定できます。弄ってみてください。

Bsurfaces_Addsurface.png

頭の形に沿うように線が引かれるので、耳周りや目にかかるような長い髪は向いてないですが、前髪や後ろ髪には使いやすいかもしれません。

・ポリゴンを分ける
ベースで作った髪は面積が大きいですからこれを短冊状に分割します。
個人的には縦3分割単位で分かるのがやりやすいです。

Alt+右クリックで縦方向にループ選択。そのあとVキー押すと分割できます。
マウスで位置を動かして左クリックで確定します。

sepalate.png

おんなじ要領で分割していきます。
dividemesh.png


後頭部の髪はBsurfaceで足して微調整してます。
髪を分けると選択しづらいと思うので右クリックで頂点選択して、その頂点のCtrl+Lで短冊全部選択できます。
Propotional EditのConnected(短冊単体のみ影響)と移動(G)や回転(R)、拡縮(S)を使ってランダム感を出して、短冊の真ん中をループ選択にAlt+Sで少し盛り上げるとそれっぽくなります。


続きは準備中

髪エクスポート
・Blender最新版での作業

ウェイトのコピーをします。
元にする髪ファイルをオブジェクトモードで選択。そのあとコピーする作成した髪を選択。
モードをウェイトペイントモードにします。
Tキーで画面左側にツールシェルフを出し、Weight ToolsからTransferWeightで押します。

7w3s0sq3.jpg

作った髪を選択してObject DataにVertex Groupsがあったら成功。

vertex groups

マテリアルをつける

Propertiesウィンドウからマテリアル→Newを押します。
materialnew.png

右隣のボタンのTextureでもNewを押します。
TypeをImage or Movieにします。
Imagesを選びます。マテリアルのテクスチャは最終的に使わないのでなんでも構いません。
MappingのCoordinates:をUVにその下Mapも作ったUVを選んでください。

materialtex.png

・VertexColorsをつける
Vertex Colorsのところで+ボタンを押すだけです。画像のようにColっていうのが出たら成功です。
実際に頂点カラーは塗りませんが、これがないと髪が正しく表示されません。
vertexcolors.png


・両面化
このままだと片面しか表示されないので、メッシュを複製して裏返します。
この作業の前の段階で別名で保存しておくのをおすすめします。
というのも両面化したあとにメッシュ編集に手間がかかるからです。
片面で編集→出力作業するときだけ両面化します。

EditモードでAキーで髪を全部選択します。※全面両面化すると単純に4倍重くなるので見えない部分は選択解除しておくと軽量化できます。
Shift+Dで複製します。(2.70)Tキーでツールシェルフを出してShading UVsタブにあるNormal:Flip Directionで面の向きを反転します。

あとは2.49用で読込できるようにShift+Ctrl+Sで別名で保存します。
保存画面が出ますので左下のLegacy Mesh Formatにチェックを入れて保存します。
名前は〇〇Hair_249.blendなどにしておくとわかりやすいでしょう。

・再作業時の注意点
一発でOKということは稀で手直しする必要があります。
必ず片面の状態で保存しておきます。
マテリアルをつけると3D View時のテクスチャが透過しなくなります。作業時にはマテリアルを消しておきます。
新規に板ポリ追加する場合はウェイトはコピーし直しします。複製はウェイトもコピーされるので不要です。
VertexColorは特にじゃまにならないので一回設定したらそのままで。

・2.49bの作業
Blender 2.49bで先ほど別名で保存したファイルを開きます。
何やら確認出ますがOK押します。
画面がおかしくなった場合はウィンドウ最大化ボタン押すと直ります。

オブジェクトモードでエクスポートする髪を選択します。
File→Import→Netlmmerse/Gamebryo (.nif & .kf & .egm)を選びます。
赤枠のImport Skeleton Only + Parent Selectedを選んでOK押します。

importskeletononly.png

これでスケルトンだけ読み込んで選択した髪につけました。

Blenderからnifに出力します。
出力する髪を選択した状態でFile > Export > Netlmmerse/Gamebryo (.nif & .kf & .egm)でスクリプトを起動。
以下の設定で出します。

exportnif_weight.png

NifSkopeでの作業
Blenderからエクスポートした髪にスカイリムの髪から設定を移植します。

NifSkopeで先ほど出力したNifを開きます。開いてすぐBlock DetailsのNiHeaderの三角をクリックして内容を表示。
Importした時と同じように今度はUser Versionを11→12とUser Version 2を34→83へ変更。
Ctrl+Sで一旦上書き保存しましょう。

以下の赤枠の不要なデータをCtrl+Deleteキーで削除します(マテリアルの設定)。
unuseddata.png


元にしたい髪のnifを開きNiTriShapeツリーのBSLightingShaderPropertyをCtrl+Cしてコピー、Exportした方のNiTriShapeを選択しCtrl+Vでペースト。
NiAlphaPropertyも同様にコピー&ペースト。

NiAlphaPropertyを以下のようにします。
Flags 4845
Threshold 50

BSDismemberSkinInstance→Partitions→PartitionsのBody Partの部分をSBP_131_HAIRに変更します。
(ダブルクリックしてValue右端の三角形のプルダウンメニューから選べます。)

・テクスチャの設定
BSLightingShaderPropertyツリー内のBSShaderTextureSetがテクスチャの設定です。
Block Details内のTexturesの三角を押してツリーを展開するとテクスチャファイルのパスが表示されます。
花のマークを押すとファイルブラウザが出て変更したいテクスチャに変更します。
ただし絶対パスになってしまうので他のファイルパス同様にtextures\より前のパスは削ります。
例:グレーの部分が不要。 C:\Program Files (x86)\Steam\steamapps\common\The Elder Scrolls V Skyrim\data\ textures\...

HairLineの作成
半透明のテクスチャ同士で重ねた時に頂点の順序によっては後ろが透過してしまうのを通称アルファ病と言って髪を作る上では悩ましい問題でした。
バニラの髪がそうなんですが、透過情報を扱うNiAlphaPropertyのFlagsによってはアルファ病が出ないんですが、毛先がギザギザしてしまって美しくなりません。

しかし、毛先もきれいに透過できてアルファ病にも悩まされない方法が生まれました。(Apacchi Sky Hairがこの方法なのでApacchi法と勝手に呼んでます)

半透明の髪と全く形状が同じ不透明な髪(HairLine)をふたつ表示することで回避できます。

エクスポートが終わって編集が済んだ髪のnifを開き、NiAlphaPropertyのFlagsを4844 Threshold を200にします。
あとは別名で保存します。例:Hairline〇〇.nif


※ただし表面と裏面x2で4倍のポリゴン数になってしまいバニラの髪に比べると激重です。
多くの髪Modで元になっているSims Modの髪はポリゴン数が多いので尚更。
Showracemenu PreCacheKillerが出るまでCTDが多発したのもそういう理由です。

CKに登録
CK起動前にMeshes下のどこかにフォルダを設置して、中に髪のファイルを入れておきます。

CKを起動して、File->Dataを開き、Skyrim.esmをダブルクリックしてチェックを入れ、OKで読み込みます。
エラーは全部キャンセルします。

・HairLineを登録
Character->HeadPartsで元にしたいHairLineを選んで右クリックでDupicateします。
(人間種族の女性だったらHairLineFemaleNord01などを選びます)
Duplicateしたのを開きます。
HairLineで大事なのはHairLineTypeがMiscなのとIs Extra Partにチェックが入ってること。
ModelをEdit押して作ったHairLineのファイルを指定します。
Triがついてる場合はEdit→Edit→キャンセルで外しておきます。
最後にIDを変えてからOK押します。
新しいオブジェクトとして作りますかと聞いてくるので必ず「いいえ」→次に設定を引き継ぐかどうかで「はい」で。

headparthairline.png


同様にCharacter->HeadPartsで元にしたいHairを選んで右クリックでDuplicateします。
Duplicateしたのを開きます。
Extra Parts内で右クリックしてNewをおして、作ったHairlineを指定します。
ModelをEdit押して作った髪を指定します。
OK押して確定してからいいえ→はい。

headparthair.png
Valid Racesが髪を適用する種族です。FormListにどんな種族が登録されるか記載されてます。


以上で髪の登録は終了です。
あとはespに名前をつけて保存してください。



Blender Export時に失敗しやすいポイントのメモ

■BSDismemberSkinInstanceがついてない。SkinInstanceはウェイトの情報が格納されている。
→考えうる原因
・Export時にExport Dismember Body PartsがONになってないです。

・ウェイト付けてないです。肩にかからない短髪はHeadは赤(1.0)一色、Spineが青(0.0)で。
Blender最新のだとボーンウェイトコピーがないのでTransfar Weights使う。

・Vertex Group名が違う
髪は大体NPC Head [Head]、NPC Spine2 [Spn2]、SBP_131_HAIR(BP_TORSO)のVertex Groupが必要
元にする髪によってはNPC L Clavicle [LClv]、NPC R Clavicle [RClv]がつく。

・ボーンのParent設定してない
髪を選択したまま、Importから髪を直接読み込みます。

■SkinInstanceがついていてもウェイト情報が抜ける
→マテリアルとテクスチャがついてない。マテリアル設定は使わないのでなんでもいいです。

■髪が伸びる
→BSDismemberSkinInstanceの設定が正しくない。ウェイトとスケルトンが一致しないと発生するので2.49bの時にスケルトンのImportからやり直します。ウェイトコピーした髪のスケルトンなら失敗しないです。

■髪が表示されない
→NiTriShapeData内のVertex Colorsがついてない。
→NiNodeの一番最初(0番)がScene Root。これは不要なので右クリック→Block→Deleteしておきます。

関連記事
コメントの投稿


Does not accept comments that are all written in English on this blog for blocking a spam. If you have any questions, send a e-mail: tktk11111[at]gmail.com

コメント

名無しさん2014.04.10 12:07

すみません解決しました。
nifskopeのツリーが変だったみたいです。
ありがとうございました。


名無しさん2014.04.10 11:53

うーん・・・髪の造形には拘らずに手順どおりに作ってみて導入してみたのですがゲーム内だとつるっぱげになっちゃいます。
髪が表示されない原因は記事内でも書かれていますがNiTriShapeData内のVertex Colorsがついてない以外にあるのでしょうか?


Elk2014.04.06 18:27

あ、説明が足りなかったようですみません。
いまは、まずは整形への第一歩で、今後のフォロワー化のことも含め、Skyrim内にて新規マイキャラをECEで作ってみようかとおもっていました。
いままでの使用ががRace Menuでしたので、インストール方に戸惑っていた次第です。
何度もすみませんでした。
ECEでのキャラメイク後程試してみますね^^
ありがとうb


tktk2014.04.06 16:43

>Elkさん
ご自身の入ってるスケルトンを選ぶんですが、UNPはバニラのスケルトンですのでRealistic Ragdoll Normalを選びます。


Elk2014.04.06 13:17

なるほど~。
そうでしたか、勘違いしてすみませんでした。
ついでにお伺いしてもよろしいでしょうか?
髪型ではなく、ECEについてですが、Realistic Ragdoll NormalとUNPとの選択等がインストール時にでますが、両方を使用している場合は、どちらを選べばよいか、tktkさんはご存知でしょうか?
お時間のある際にでも構いませんので、よろしければお返事くださいませ。
こちらで質問して御免なさい。
今現在は、めざせミラ・ジョボビッチフォロワーという感じです!
では、よい休日を^^


tktk2014.04.05 17:48

>Elkさん
Wrye BashはLeveled Listの競合用とウィザードの作成のためにいれてあるんですが使ってません。検証のためには仮想化できるMOが使いやすそうなんですが、不精なのとMod作成時にMO固有の問題もあるようで移行には至ってませんねー


Elk2014.04.05 03:55

深夜帯になりますが、ご返信の方誠にありがとうございます。寝起き後のトイレ後、目が覚めてしまいました(汗)
隠し立てするような件ではなかったですねw

WBとNMMとの併用ですね^^
参考になりました。
OSのインスト等、一切合財やり直しているので、実践まで、もうしばらくかかりそうです。
tktkさん、どうもありがとう。


tktk2014.04.05 01:31

>管理人のみの方
基本的には手動ですが、espの管理ではNMM使ってますね。入れてるmod自体少ないのでファイル構成は全部覚えてます。最近では競合しなそうなフォロワーmodとか装備modは7zごとNMMに突っ込んでます。


2014.04.04 21:37

このコメントは管理人のみ閲覧できます


tktk2014.03.30 14:48

>TMさん
ありがとうございます。意外なところで役に立つものですね。


TM2014.03.29 22:18

紹介されてたアパッチ法でnumenumeHairの禿を直せました!参考になります。