blenderでMMDモデルを作ろう|第4-2回:テクスチャ(スカルプト)
スカルプトというのは「デジタル粘土こねこね」と私は理解しています。
粘土でフィギュアを作るのと同じような感覚でメッシュを変形させられます。
私は、服のしわや筋肉の強調を表現するためにスカルプトを使うのですが、最終的にそれをテクスチャという形におとしこむため、ペイントで服のしわや筋肉を描ける方は本記事を読み飛ばして全然OKです!
逆に言うとペイントできない人でも服のしわっぽいものをテクスチャにできるのでスカルプト便利だと思います。
スカルプトについて軽く説明します。
試しにデフォルトキューブを選択し、スカルプトモードに入り、デフォルトのブラシ(SculptDraw、もっこりするブラシ)を選択した状態で、キューブをマウスでつんつんしたりなぞったりしてみました。
なんか思ってたのと違います。
これは、スカルプトにはある程度のポリゴン数が必要になるためです。
そこで、マルチレゾリューションーションモディファイア(以下、マルチレズと書きます)というものを使用してハイポリにします。
(マルチレズモディファイアはサブサーフモディファイアと似ていますが、スカルプトにはマルチレズのほうが適していると言われています。)
Subdivideのボタンを4回ポチポチしたところ、頂点数が増えました。
この状態でさきほどと同じブラシを使って、つんつんしてみます。
さっきより思っていた感じ(もっこりする)になりました。
このように、スカルプトするにはある程度ハイポリである必要があるのですが、それをそのままpmxにエクスポートするとモデルが重くなってしまいます。
そこで、ベイクを使ってスカルプトの結果をテクスチャに落とし込みます。
「さっきからベイクベイクって!なにそれ意味わかんないわよ!」という方は次記事で簡単に説明していますので、それを参照してください。
今回はズボンだけスカルプトしてみます。
ズボンのオブジェクトを選択し、マルチレズモディファイアを追加すると、自動的にモディファイアは1番上に来ました。
Subdivideを4回ポチポチすると、画面上に表示される頂点数は40万越えに。
- Preview: オブジェクトモードなどでのsubdivisionの数。
- Sculpt: スカルプトモードでのsubdivisionの数。
- Render: レンダリングされるときのsubdivisionの数。
なので、Previewのところは0や1でOKです。
スカルプトモードに入るとミラーモディファイアは自動でオフになりました。
私が服のしわをスカルプトする時はCreaseというブラシで、Curveのところは直線にすることが多いです。
どのブラシを使うかなどは人それぞれで自由だと思います。
しわ、描いてみます。ペンタブを使ってしわができそうなところを何度かなぞってみると、谷みたいなものができました。
Ctrlを押しながらなぞると、ブラシの効果が逆になります。Ctrlを押しながら先ほどの谷の両脇をなぞると、山のようなものができました。
どのブラシを選択している状態でも、Shiftを押しながらなぞるとスムージングされます。さきほどの山と谷の両端をShiftをおしながらなぞると少し滑らかになりました。
他の場所でも同様に、谷 -> 山 -> 端を滑らかに、の行程を繰り返してみました。
もう少し増やしてみました。(しわがどういうところにできるか、とかそういったセンスは!ないッ!)
マテリアルを表示してみると(千鳥格子があると全然わからなかったのでとりあえずオフにしましたがw)、こんな感じです。
今回はズボンだけですが、こんな感じで各オブジェクトをスカルプトしていきます。
今までの作品で、スカルプトがまぁまぁうまくいった例が下の2つです。
次は今までのペイントやスカルプトをベイクしていきます。
blenderでMMDモデルを作ろう|第4-2回:テクスチャ(ペイント、体)
タイトルでペイントって書いてますが、ペイントほぼしません。
ペイントの方法については前記事を参照してください。
UV展開をちょっとやり直したりします。
本記事では、シームレス(タイル状に並べたときつなぎ目が分からない)な柄を張り付ける方法を紹介します。
ズボンに千鳥格子柄を貼ってみようと思います。
こちらからダウンロードした画像を使用します。
ズボンのマテリアルを選択し、テクスチャタブでNewボタンをポチ、適当な名前を付け、Image下のOpenからダウンロードした画像を選択します。
めちゃくちゃ大きい千鳥格子ですね。
テクスチャタブを下にスクロールし、MappingのところのSizeを変更してみます。
いいくらいの大きさになりました。
Offsetのところをいじると柄が縦や横に移動します。
blender内で画像の回転はできません(たぶん)。
なので、たとえばチェック柄を使っていてチェックの向きを変えたいときは、画像のほうを画像編集ソフトなどで回転させるか、UVを回転させる必要があります。
ブラシと同様に画像のブレンドモードにもいろいろあります。
Screenとか。
今回はDarkenを選びました。
と、ここで気づきましたがベルト上の部分の柄がずれてるし大きさも違いますね。
編集モードに入り、面の選択モードでL keyを押すとUVのパーツごとに選択できます。
ズボン上を選択してみました。UV Image Editorでも確認。
うにょーんと曲がっているのでズボン前側の柄をあわせると、後ろ側があわなくなってしまします。
多少UVが歪んでしまいますが、こいつをまっすぐにします。
適当な面を選び、辺選択モードで縦の線をx軸でスケールゼロにし、縦にまっすぐにします。今度は横の線をy軸でスケールゼロにし、横にまっすぐにします。
その面が選択された状態で、3DビューポートのほうでU key -> Follow Active Quadsを選択します。
これにも複数モードがあるんですが、とりあえずLength Averageにしました。
先ほどのうにょーんがまっすぐになりました。
長さも大体でベルト下の部分に合わせます。
最後に、テクスチャの空いているところにパーツを戻して終わりです。
前記事と同じ方法で、爪も申し訳程度に塗りました。
次は、スカルプトで服のしわをつくって(描いて?)いきます。
blenderでMMDモデルを作ろう|第4-1回:テクスチャ(ペイント、顔)
私は、テクスチャのペイントはほぼしません。めちゃくちゃ下手だからです…。
が、とりあえず顔からやってみます。
まずは唇を塗りたいので、くちびるに割り当てられているマテリアル、顔_肌を選択し、テクスチャタブでNewをポチ、適当な名前を付けます。
下のImageのところでもNewをポチ、新しい画像を生成します。
いろいろなやり方がありますが、今回は材質の上に透明な画像を重ね、その透明な画像に書き込みます。
適当な名前を付け、好きな画像サイズを指定し、ColorのところのA(アルファ)をゼロにし、透明な画像を生成します。
顔のオブジェクトを選択した状態でテクスチャペイントモードに入ります。
同時に、UV展開のときに一番上に持ってきていたサブサーフモディファイアをミラーモディファイアの下に戻しておきます。
画面左側のパネル、Slotsタブで所望のマテリアル、テクスチャが選択されていることを確認します。
TexDrawというブラシを選択し、3Dビューポートでぬってみます。
Blend: Mixとなっているのが最も普通の(?)ブラシです。OverlayとかAddとかいろんなブレンドモードがあります。
UV Image Editorでも同様のテクスチャを開き、画面下でペイントモードにすることで塗ることができます。3Dビューポートでもリアルタイムで反映されます。
今度はまじめに唇を塗っていこうと思いますが、口を閉じたままだと塗りづらいので簡単に口開けシェイプキーを作成します。
頂点グループの下にあるシェイプキーのパネルで+ボタンを一度ポチ、で基準となるBasisが作成されるので、もう一度+ボタンをポチ、で新たにシェイプキーを作ることができます。
塗りがはみだすのがやだーという場合は、下のキューブボタンを押すと面マスクモードになり、塗りたい面を選択することができます。
ぬります。
さきほどのシェイプキーをオンにしました。消しゴムはErase Alphaです。
うっすいですが塗りました。(自信のなさが現れています。)
大事なのは画像を保存すること!!
UV Image Editorの下、Imageのところに* (アスタリスク)がついていると保存されてないよってことです。
Image -> Save As Imageで画像を保存できます。
ショートカットは Alt + S keyです。
あとは好きに書くだけだと思います。最後に画像の保存を忘れずに...。
おふざけで、ほくろとジョジョ線(下手)を書いてみました。
もし、他のマテリアルでも同じ画像を使いたい場合は、マテリアルタブでその材質を選び、テクスチャタブで先ほどのテクスチャを選択します。
さきほど同様、所望のマテリアルとテクスチャが選択されていることを確認します。
ブラシにもいろいろ種類があり、LineとかDotsとかもあります。
まゆげに線を引いてみました。めっちゃギザギザしてますね。
UVが小さかったり画像サイズが小さいとピクセルのギザギザがめだちます。
スタンプみたいなこともできるので簡単に説明します。
スタンプにしたい部分(色を付けたい部分)を白、背景を透明にした画像を用意します。
ブラシの下にあるテクスチャタブを開き、Newボタンをポチ。
今度はプロパティのほうにあるテクスチャタブのほうでOpenをポチ、さきほどのスタンプの画像を読み込みました。
また3Dビューポート左側のパネルに戻り、画像が読み込まれていることを確認し、Brush MappingをStencilにします。
(スクリーンショットがとれなくて申し訳ないのですが、)画面中央にスタンプが現れると思うので、スタンプしたいところに画面を移動させ、唇をぬったときと同じようにスタンプに重ねるようにぐりぐり塗ります。
こんなのができます。
私は、ペンタブを使って絵をかくのが苦手なので、Inkscapeを使ってスタンプしたい画像をつくり、それを使ってスタンプすることが多いです。
下二つの画像がその例です。
次は体のテクスチャをやっていきますー。
blenderでMMDモデルを作ろう|第3-2回:UV展開(体)
目、顔の次は体の展開をしていきます。
服が作られるときにどういうパーツで構成されるかな..と考えながやるのがいいらしいです。
私自身は、シームはまじ適当です。
今回超シンプルな服ということもあり...。
まず上半身はこんな感じでシームを付けました。
下半身はこんな感じです。
色が大きく変わる部分はそのままだとテクスチャにベイクしたときにギザギザしてしまいがちなので、ベルトとズボンの切れ目にシームをいれています。
手は表と裏、爪にわかれるようにシームをいれました。
顔と口内の時と同様に、Shift keyを押しながら上半身、下半身、手のオブジェクトを選択してUVを整理していきます。
めっちゃスペースあまりました。
UV展開の先生とかいたら怒られそうです。
もうこのあとUV動かしたくない!というときはUV Image EditorでP keyを押すと間違って編集モードで展開 (U key) してしまってもUVが動かなくなります。
これでとりあえずUV展開が終わったので、次はテクスチャにうつります。
blenderでMMDモデルを作ろう|第3-1回:UV展開(目、顔)
UV展開のときは、まず複数のオブジェクトをどのように各テクスチャにまとめるかということを考えます。
- 1体のモデルで1枚のテクスチャ(顔や体などすべてのオブジェクトを1枚のテクスチャ内に収める)を割り当てる
という人や、
- 各オブジェクト(顔、帽子、靴、上着、ズボンなど)に1枚のテクスチャをそれぞれ割り当てる
という人がいます。
私は、だいたいいつも
- 顔 (1024x1024)
- 髪 (256x256 から 1024x1024)
- 目 (256x256 か 512x512)
- 体 (1024x1024 か 2048x2048)
の4つに分けています。ほんとに自分がやりやすいように自由でいいと思います。
簡単な目からやっていきます。
モデリングする際、白目の部分を球体で作る(凸型)人と、へこませて作る(凹型)人がいますが、わたしは前者です。
目の凸型/凹型の違いについてはこちらのブログが参考になります。
MMDモデルの目の構造について(備忘録):ギン@砂Pのブロマガ - ブロマガ
わたしは白目、瞳の部分、ハイライトを別々のメッシュで作っています。
また、白目は球を半分に切ったような形で作っています。
UV Image Editorを開き、目のオブジェクトを選択し、編集モードに入り、まずは白目を選択して U keyで展開します。
S keyで縮小して端に寄せます。次に瞳部分を選択し U keyで展開します。
(瞳部分を白目部分より大きい領域に展開しているのは、柄とか書き込む部分がおおいものほど解像度が必要になるためです。)
目だけは簡単なのでテクスチャもついでにはろうと思います。
私は瞳のテクスチャ書いたことありません...。
いつもライセンスCC0のテクスチャを使用しています。
作者: proxeさん、リンク: https://www.blendswap.com/blends/view/41227
まずは瞳の材質を選択し、テクスチャタブを開き、Newボタンをポチ。
適当に名前を変更し、Openボタンをポチ。
事前に、上記で紹介した目のテクスチャの色を変え、余白を増やした画像を用意していたのでそれを開きます。
(びっくりしたみたいになってますね。)
ふたたびUV Image Editorを開き、目のオブジェクトを選択し編集モードに入り、Brouseボタンから先ほど開いた目のテクスチャを選びます。
瞳の部分をL keyで選択しS keyで縮小しました。
これで瞳の材質にテクスチャが貼れたので、同様に白目、ハイライトにも同じテクスチャを割り当てます。
複数のオブジェクトをShift keyを押しながら選択した状態で編集モードに入り、Draw Other Objectにチェックを入れ下のタブからAllを選ぶと、その他のオブジェクトのUVも薄い灰色で表示することができます。(これはあとあとも使います。)
白目、瞳、ハイライトの材質に同一の目テクスチャを貼り終えました。
人間っぽさが増した気がします。
次に顔のUV展開をしていきます。
これも人それぞれなんですが、ミラーモディファイアを適用してから展開する人もいれば、左右対称のテクスチャにするためミラーモディファイアを適用せずに展開する人もいます。
私は後者です。
歯、歯茎、舌も同一テクスチャを使う予定なので準備しておきました(ウェイトもやっておきました)。
シーム(UVの切れ目となるエッジ)を入れていきます。
作業しやすいようにテンキーの /(スラッシュ)で顔のオブジェクトだけ表示しています。
編集モードに入り、エッジを選択し、Ctrl + E key -> Mark Seamでシームを指定できます。
顔の前側、後ろ側、口内、鼻の穴、耳、目のくぼみなどがわかれるようにシームを入れました。
A keyで全選択し、U keyで展開してみると、"Object has non-uniform scale, unwrap will operate on a non-scaled version of mesh" というメッセージが上に表示されました。
オブジェクトのスケールがx:1, y:1, z:1になっていないとこういうメッセージがでます。
オブジェクトモードに戻ってみてみるとたしかにzのスケールが1になってませんでした。
オブジェクトを選択した状態でCtrl + A key -> Scaleで今の状態のスケールをx:1, y:1, z:1としてくれます。
また、サブサーフモディファイアを使っている場合はU keyで展開した後、画面左側のパネルでUse Subsurf Modifierにチェックをしておいた方がいいです。
このときサブサーフモディファイアは一番上にある必要があります。
UV Image Editorの画面右側のパネルのStretchにチェックを入れるといい感じのところが青くなり、展開で無理している部分は赤やオレンジっぽい色になります。
とりあえず大丈夫そうですね。
(ここで無理をさせているとテクスチャペイントやベイクがうまくいかないので、シームを変え展開、シームを変え展開...を繰り返しちょうどいい塩梅のところを見つける必要があります。)
一応展開できたので、簡単にUVを整理します。
書き込みが多くなりそうな部分ほど大きくしておいた方がいいです。
(私は書き込みしないんですが...。)
例えば眉に毛を書き込みたいような場合は眉の部分をL keyで選択し、拡大しておいた方がいいです。
とりあえず顔の前側を大きくして後ろ側を小さくしてみました(極端)。
この状態でA keyで全選択し、Ctrl + P keyを押すと、いい感じにテクスチャ内に収めてくれます。
3D Viewのほう(なんでこっちがわなんや)の画面左側のパネルに現れるMarginの値をいじると各パーツの間隔を調整できます。
パーツに回転してほしくない場合はRotateのチェックをはずせばokです。
歯、歯茎、舌も同じようにやっていきます。
適当にシームを入れ、
サブサーフモディファイアを一番上にし、
U keyで展開、Use Subsurf Modifierに✔。
顔 -> 口内の順でオブジェクトを選択し、目のときと同様に顔のUVを表示させた状態で、空いているところに適当に配置します。
これも、歯や舌にテクスチャを書き込む場合は大きめに展開しておいた方がよいです。
また、モーフで汗とか照れとかを作る予定で、顔と同じテクスチャ内に収めたい場合は、上画像のように余白をとっておいた方がいいです。
これで目と顔のUV展開はおわりです(適当すぎ?)。
次は体のUV展開をしていきます。
blenderでMMDモデルを作ろう|第2-?回:ウェイト(エクスポートしてみる?)
この段階でpmxにエクスポートする必要は全くないんですが、ウェイトの確認もかねてMMDで躍らせてみようと思います。
たとえば、ウェイトがうまくいかずポリ割までかえるとなると、UV展開やテクスチャの前にやっておいたほうがいいということもあるためです。
しかし、エクスポートの準備はまぁまぁめんどうなので現段階では本当にやってもやらなくてもいいです。
MMDでは頂点グループ4つまでしか認識されませんが、自動ウェイトなどを使った場合は5つ以上の頂点グループが割りあてられることが多々あります。
そこでまず、頂点グループを4つまでしぼりこみます。
今回、上半身と下半身のオブジェクトではVertex Weight Mixモディファイアを使っていたので、それをまず適用します。
が、このあとまた戻ってきたくなった時のためにオブジェクトを選択後、Shift + D keyで複製しておきます。
複製後、Vertex Weight Mixモディファイアを適用すると、モディファイア一覧はだいぶすっきりしました。
次に頂点グループのタブを開き、自動ウェイトの補足で使用したボーンの頂点グループを- (マイナス)ボタンで削除します。
そして、編集モードに入り、頂点を全選択後、画面左側タブのweight toolsの中にあるlimit totalボタンをポチ、limit: 4にします。
すると、画面上に○○ vertex weights limitedというメッセージがでます。
(今回は599でしたが、0のときもあります。)
これと同じことを下半身でもやります。
一度動かしてみて、limit totalする前とそんなに変わらない状態で動いていたらokです。
次に、[モデル名のエンプティ] -> [モデル名のアーマチュア] -> [モデルを構成するオブジェクトたち]という、[親]->[子]の関係を作ります。
今回は、extended_armという名前で準標準ボーン搭載のアーマチュアをインポートしたので、それに顔や髪などのオブジェクトを子にします。
モデルを構成するオブジェクトをShift keyを押しながらすべて選択し、最後にアーマチュアを選択後、Ctrl + P keyでSet Parent To -> Object (Keep Transform) を選択します。
するとアウトライナーのところではこんな感じで、[エンプティ] -> [アーマチュア] -> [オブジェクト(メッシュ)]という親子関係が見えます。
このエンプティを選択した状態でmmd_toolsのModel -> Exportをポチ、適当な名前を付けてエクスポートします。
Scaleは今回1.0ですが、これもモデルの大きさに合わせなければいけません。
ちょうどいい値が分からない場合は、Scaleの値を変えてエクスポートしつつpmxエディタで開いて大きさを確認するとよいと思います。
エクスポートしたpmxファイルを開くと、テクスチャを張っている髪以外まっしろです。
材質タブを開き、拡散色、反射色、反射強度の部分をいじってそれっぽい色にしました。
また、エッジも有効にしました。
では、MikuMikuDanceを開き、モーションを流し込んでみます。
今回は、しろたびさんのHappy Halloweenのモーションをお借りしました。
(ブログ用ですm(_ _)m)
— うさこ (@usausakokoko) 2018年9月10日
モーション: しろたびさん
振付: まなこさん
エフェクト: 望月さん pic.twitter.com/z29G40vEPc
エフェクトなしだとこんな感じです。
動いてますね!(わーい)
この段階でエクスポートがうまくいってウェイトもうまくいっている必要はないのですが、うまくいくっていると最終的なエクスポートにも自信が持てます。
次はUV展開をやっていきます。
blenderでMMDモデルを作ろう|第2-4回:ウェイト(ウェイトペイント、補足)
前記事の自動ウェイトである程度うごくようになりましたが、
- ひじがない
- 上半身が肩にひっぱられすぎ
- 上半身服が下半身服を貫通
という問題があったのでそれを解消していこうと思います。
まずひじですが、Tda式アペンドミクさんを参考にひじ補助ボーンを使ってみます。
動かす用のアーマチュアのひじボーンの付け根に、ひじ補助.L、+ひじ補助.Lという2本のボーンを作成します。
2本のボーンは全く同じ位置にあります。
[親]->[子]の関係は、[腕捩]->[ひじ補助]->[+ひじ補助]となるようにします。
次にポーズモードでひじ補助.Lボーンを選択し、MMD Bone Toolsタブを開き、MMDで言うところの回転付与を設定します。
Rotate + ボタンを押し、Influence: 0.6、その下のボーンをひじ.Lにします。
(ついでに、エクスポート時のためのボーン名も左ひじ補助にしておきます。)
するとひじ.Lを回転させるとひじ補助.L(とその子である+ひじ補助.L)が60%の割合(たぶん)で追従して動くようになります。
ボーンの制約(コンストレイント)も自動で追加されます。
真上から見た図がこちらです。
同様に、ひじ補助.R、+ひじ補助.Rも作成します。
+ひじ補助のほうを変形に使用するので、自動ウェイト用のアーマチュアにも+ひじ補助というボーンを作成します。
だいたいひじ部分に来るように設置します。
この状態で再度自動ウェイトを行い、ひじを曲げてみます。
ひじのところに+ひじ補助ボーンのウェイトが割り当てられ、ひじの変形がましになった気がします。
躍らせてみると
ビフォー
アフター
でましになった気がします。
次に、上半身が肩にひっぱられすぎる問題を解消します。
ウェイトを見てみると、腕ボーンのウェイトが動いてほしくないところにまでのっていることが分かります。
そこで、自動ウェイト用のアーマチュアに、上半身2ボーンを補足するようなボーンを追加します。
試行錯誤の末、4つのボーンをこの位置に配置しました。
この状態で再度自動ウェイトを行い、上記4つのボーンの頂点グループと上半身2の頂点グループが合算されるようにモディファイアを設定します。
Vertex Weight Mixというモディファイアを選択し、
- Vertex Group A: 上半身2
- Vertex Group B: 上半身2.001.L
- Mix Mode: Add
- Mix Set: All
とします。
これを先ほどの4つのボーンに対して繰り返し、最後に動かす用のアーマチュアモディファイアをもってきます。
すると、先ほどのこんな感じだった上半身2ボーンのウェイトが、
こうなりました。
肩と腕を上げてみるとこんな感じです。上半身があまり肩/腕に引っ張られなくなりました。
上半身と同様に、ウェイトを補足したい部分(今回は下半身と首)にも補足ボーンおよびvertex weight mix モディファイアを追加していきます。
首と下半身にも2本ずつ補足用ボーンを追加しました。
Vertex Weight Mixモディファイアは合計8つに。
おどらせてみると、全体的にだいぶ良くなった気がします。
あとは、自分が気に入るまで、
を行ったり来たり、繰り返すのみです。大変です。
でも動くと嬉しいからがんばるよね。
ただ、手動でウェイトを調整したあと、再度自動ウェイトを行うとそれまでの手動調整が消えてしまうので要注意です。
上半身服が下半身服を貫通する問題も今回は上記の流れで解決しましたが、うまくいかない場合は、上半身のオブジェクトと下半身のオブジェクトを統合 (Ctrl + J key) し、メッシュをつなげてから自動ペイントを行うとうまくいったりします。
また、自動ペイントは細かいパーツが苦手だったりするので、細かいパーツは手動でウェイトペイントするか、ウェイト転送がいいと思います。
ウェイト転送する際は、ウェイトのもとになるオブジェクトを選択後、Shift keyを押しながらウェイトを転送したいオブジェクトを選択し、ウェイトペイントモードに入り、Transfer Weightsを押し、 以下のような設定でうまくいくことが多いです。
たとえば、こういう体にそったものはウェイト転送でうまくいったりします。
------ 追記ここから -----
自動ウェイトでウェイトを設定したズボンのベルト穴部分がポーズによって浮くことに気づいたので、ウェイト転送を試してみます。
編集モードに入りベルト穴部分を選択し、P key -> Selectionで選択した面をズボンから分離します。
ズボンからベルト穴にウェイトを転送するので、ズボン -> ベルト穴の順でShift keyを押しながら選択し、ウェイトペイントモードに入ります。
画面左側のTransfer Weightsをポチ、以下のように設定を変更します。
オブジェクトモードに戻り、先ほどと同じポーズにしてみたところ、ベルト穴は浮かなくなりました。
ウェイト転送が終わったら、再度ベルト穴とズボンをCtrl + J keyでオブジェクト統合してもOKです。
------ 追記ここまで -----
そんなこんなで動くようになりましたー。
次はUV展開です。
と、そのまえにpmxにおためしエクスポートしてみてもいいかも。