blenderでMMDモデルを作ろう|第5-1回:ベイクとは、種類、手順
ベイク(焼きこみ)は「3Dを2D画像に落とし込むこと」と私は考えています。
(シミュレーションの保存もベイクと呼ばれたりします。)
デフォルトキューブでやってみるのでそれでイメージできるかもしれません。
キューブの各面にそれぞれ異なるマテリアルを割り当てました。
一つのマテリアルには上から千鳥格子も重ねています。
Smart UV Projectというのを使ってUV展開もしました。
Marginの値を大きくして、UVに隙間を与えています。
また、マルチレズモディファイアを使い、軽くスカルプトもしました。
いざベイク!
まずは編集モードに入り、UV Image Editorを開き、Newボタンをポチ。
適当な名前を付け、サイズを指定します。色は何でもOKです。
これで、キューブ_texという画像が、このオブジェクトに割り当てられました。
この状態がめっちゃ大事です。
カメラマークのレンダータブの下の方にBakeがあります。
ベイクにもいろいろ種類がありますが、まずテクスチャ(Textures)をやってみます。
Clearのところにチェックが入ってると画像をいったん全部透明にしてからベイクされます。
マージンが各UVの島(パーツ)からどれだけはみ出すかです。
Bakeボタンをポチ、すると、さきほどの真っ黒な画像がこうなりました。
この画像をImage -> Save as Imageで保存します(大事!)。
キューブを複製し、今ある6つのマテリアルを全て削除しました。
マテリアルタブでNewをポチ、新たなマテリアルを割り当てます。
テクスチャタブでNewをポチ、ImageのOpenから先ほど保存した画像を開きます。
すると、2つのキューブは全く同じ色になりました。
オレンジのマテリアルの上に張っていた千鳥格子もきちんとテクスチャになっています。
Bakeテクスチャを使うと、こんな感じで複数のマテリアルを1つのテクスチャに色として落とし込むことができます。
次に、Bakeのフルレンダー(Full Render)をやってみます。
フルレンダーはそのときの光源の向きや強さなど、すべてレンダリングするときと同じように計算して、画像にしてくれます。
今、ヘミライトを使っておりx,y,z軸すべて0の状態です。
そのため、下の面はほんとは赤色のマテリアルが割り当てられているのですが、真っ黒になっていることを覚えていてください。
再度編集モードに入り、+ボタンをポチ、新たな画像を生成します。
新たな画像が生成され(キューブ_fullという名前にしました)、今度はこの画像がオブジェクトに割り当てられています。
この状態でベイクモードをフルレンダーに変え、ベイクをポチ。
するとこんな画像ができました。
比較するとこんな感じです。
下の赤い面が真っ黒になっています。
マルチレズモディファイアを使ってスカルプトした結果も見えています。
もう一つキューブを複製し、先ほどと同様の方法で新たなマテリアルをわりあて、新たなテクスチャを作り、保存したキューブ_fullという画像を開いてみました。
なんか暗い………。
これはベイク前の光源とベイク後の光源で二重に計算されているためです。
マテリアルタブを下にスクロールし、シェーディングのところのシェードレスに✔をいれてみます。
シェードレスにすると光源はもう計算されなくなるため同じ明るさになりました。
※スペキュラ(光沢)はフルレンダーでもベイクされません。
まとめると、ベイクの手順は
- 編集モードで、UV Image Editorで新たな画像を生成し(または開いて)、画像を割り当てる
- ベイクボタンをポチ
- 画像を保存
です。
書いてみると単純な感じがしますが、1がなかなかうまくいかないこともあります。
うまくいかないときは再度新たな画像を生成してみるのがおすすめです。
私がよく使うベイクは
- テクスチャ(色のみ)
- フルレンダー(スカルプトした結果など含めて全部)
です。
ベイクでノーマルマップも作れるのですが今回は割愛します。
(リアル系のMMDではノーマルマップも使ったりしますよね。)
あとは、使用しているモディファイアによってベイクがうまくいかないことがあります。
うまくいかないときは必要なさそうなモディファイア(アーマチュアなど)のレンダーボタン(カメラマーク)をオフにしてやってみるのがおすすめです。
絶対やってる手順は正しいはずなのになぜかベイクがうまくいかないときもあります...。
そういうときは新しいblenderファイルを作成し、オブジェクトをアペンドし、そこでベイクしてみるとうまくいったりします。
では、まずは顔のベイクからやっていきますー。
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展開をやっていきます。