【Blender】制作メモ&TIPS
目次
この記事の目的
この記事はモデリング作業をスムーズに進める為の、モデル制作作業の進め方や注意点、モデルのクオリティを上げるためのポイント等を纏めておく記事となります。
設定について
焦点距離
ビューの焦点距離の初期設定は50mmだがこれだと近すぎるので値を変えておく。70~100mmぐらい。
カラーマネジメント
レンダープロパティの「カラーマネジメント」のビュー変換は初期で「AgX」に設定されているが、これはフォトグラフィック向けの設定なので「標準」に変えておく
同じモデルを「標準」と「AgX」でレンダリングしたのが上の画像で左半分が「標準」右半分が「AgX」になる。
モデリング
サブディビジョンサーフェスは使用するか否か?
サブディビジョンを使用すると少ない頂点で滑らかな局面が作れる半面、細かい部分の作り込みがやりづらい、ポリゴン数の制御が難しいなどのデメリットもある。
スキニング、テクスチャ作業後に適用:ミミロップモデリングはこの方法で進め、終了時に所感を書く
顔のモデリング
口周りのメッシュについて
口周りのメッシュ分割が多いと後々シェイプキーを追加するときに頂点移動が大変なので、モデリング段階で頂点数を抑えるか、シェイプキーを追加する段階でメッシュを削減したほうが良い。上の画像は分割が多すぎるのでエッジループを選択して減らすところ。
ω口のモデリング
ωのような形の口を作る際に、下唇までωの形にしてしまうと、上の画像のようにシェイプキーで口を少しだけ開いたときに下唇の形が悪い形になってしまい、口のシェイプキーの中間値を使った表情が作りづらくなってしまう。
なので下唇はなるべく”ω”ではなく”_”の形にして、上唇で下唇の一部が隠れるようにモデリングする。
こうすることで開き途中の口の形が自然になる。
髪の毛のモデリング
髪のパーツごとの比率
・横から見たときの前髪+横髪:後ろ髪の比率は、1:1~1.2ぐらいがいい感じになる気がする(要参考モデル画像)。
斜めから見た髪のボリューム感について
・斜め髪の先端部分をX方向は外側、Y方向は手前に出すと(画像上2枚)斜めから見たときのボリュームが出るが、下から見上げた時に隙間ができてしまう。先端は内側に入れて中間部分でボリュームを出すようにしたほうが良いか?
試してみたいこと
・前髪を作る際にUV球をアタリとして使用する、またはUV球からメッシュを伸ばす、切り裂くなどして髪を作る。
体のモデリング
脚の付け根について
最初に足の付け根を作る際には後々動かすことを考えて、股関節のエッジが斜めになるように斜めの円から作ったほうが良い。
上の画像は水平の円から足を作った結果だが、股関節の斜めのエッジを後から入れようとしてだいぶ無茶している。
股の内側の編集時のポイント
股の内側を作るときはミラーモディファイアを無効化するとやりやすい
手のモデリング
指の断面の頂点数
指を作るときに円から伸ばして作るが、最初の円の頂点数は6より8のほうが良いだろう。6にするとサブディビジョンサーフェスをかけたときに指が細くなりすぎてしまう。編集で太くできないことはないがやりづらい。
尻尾のモデリング
カーブで尻尾を作成する。上記画像はNURBSパスを複数くっつけてマテリアルを設定したもの。
ソリッド表示にするとこのようになる。カーブオブジェクトは「ペジェ」よりも「NURBSパス」のほうが扱いやすくきれいに作れる。
毛束を長めにすることで上の画像の赤いラインのような「いい感じの明暗の境界ライン」が生まれるので、毛束は長めに作ったほうが良いかもしれない(もちろんモデルや部位によるが)
上は同じような形状の円柱メッシュを作成して法線転写をした画像。想像していたようなきれいな結果にはならなかった。
上記尻尾にボーンを入れて自動ウェイトを設定してポーズを変更したもの。毛先の部分が大きくずれてしまったのでメッシュをつなげるか、しくはウェイトモックを使用する、手動でウェイトペイントする必要がある。
上の画像のようなシンプルな形状のウェイトモックを作成し、元のオブジェクトへウェイト転送を行う。
その結果上のような結果となった、多少の調整は必要かもしれないが十分使えそうではある。太い尻尾だとボーンを通した中心部から離れるにしたがって変形が歪むので、大きく動かさないようにしたほうが良いかもしれない。
ボーン設定
VRChatフルトラ想定時の注意
VRChatでトラッキング運用を想定している場合、Hip~UpperChestまでのボーンは垂直かつ1直線状に配置する必要がある。上の画像のような配置だと6点トラッキング時に頭を横に向けた際に体が傾くという不具合が出た。
Tポーズ時の左右の手のヘッドボーン間の長さ = 足首からHeadのヘッドボーン間の長さにするといい感じにトラッキングできるらしい。画像のモデルだと腕の長さが短い。
HipのヘッドとUpperLegの三角形は逆三角形にした方が良いらしい。とはいえこれが原因と思われる動作不具合らしきものも見てないので影響は低そう。
参考:VRChatのボーンの挙動について|ろーてく|pixivFANBOX
ボーン配置時の目安
目のボーン
VRChatで動かす場合は目のボーンは垂直に上に伸ばしZを前にする。ヘッドの位置を基準に目が回転するのでちょうどいい位置を設定する。
VRMだと変わるかもしれない。
Hip・Spine・Chest
Hip、Spine、Chestはそれぞれ
- Hip:尻の中心から腰(くびれ)あたりまで、骨盤をイメージして範囲を取る。
- Spine:Hipのテールから胸(大胸筋)の下端まで
- Chest:Spineのテールから首の付け根の下部まで、肋骨をイメージして範囲を取る。
Shoulderの位置
首から接続を離して僧帽筋、三角巾をカバーするように、テールは気を付けの姿勢をしたときに腕が体にめり込まないように少し体からはみ出させる。
親指の付け根
親指の付け根は人差し指のふちと手首を結んだライン上に来るように配置する。
指モデリング時の注意
指をモデリングする際には親指以外のすべての指をまっすぐにそろえて作ったほうが良い。
指が傾いているとボーンを入れようとしたときに中心に入れるのが難しくなる。
その場合はメッシュ編集で関節両端の頂点を選択しSHIFT+Sで3Dカーソルを選択物に合わせれば大体の指の中心が取れる。
スキニング
サブディビジョンサーフェスについて
もしサブディビジョンサーフェスを使っているのであればスキニング作業前に適用したほうが良さそう。理由としては肘や膝などの関節でエッジを減らしたい場所にもエッジができてしまうため。また、ウェイトペイント作業も細かい制御ができないため(ここは良し悪し)
ウェイト転送の方法
コピー元のメッシュ→コピー先のメッシュの順に選択してからウェイトペイントモードに切り替えて、メニューの「ウェイト」から「ウェイト転送」を選択する。
その後出てきたウィンドウにて
- データタイプ:頂点グループ
- データ作成:オン
- 頂点マッピング:最近接面の補間
- 転送元レイヤーの…:名前
- 対象レイヤー:全レイヤー
- ミックスモード:置き換え
- ミックス係数:1.0
にする、特に転送元レイヤーの項目が「アクティブレイヤー」になっていると1つのボーンのウェイトしかコピーされないので注意する。
メッシュの一部分だけ転送したい場合は、転送したいメッシュをPで別オブジェクトにして転送するか。データ転送モディファイアで頂点グループを指定して転送する。
アニメーションが遅いとき
動作確認でボーンを動かしたときに動作が重い原因
- ・顔にデータ転送モディファイアで頂点数の多いデータの法線を転写していた、データ転送モディファイアをオフにすることで解決。
- ・シェイプキーが設定されている、シェイプキーを削除することで解決する。
ウェイト確認用のポーズリスト
ウェイト確認する際は以下のポーズを取らせてチェックする
- ・片足上げ(股間の変形がおかしくないか)
- ・膝曲げ(膝の変形をチェック)
- ・椅子に座る(お尻の変形をチェック)
- ・M字開脚(これがOKなら股間説周りはだいぶ大丈夫)
- ・胴体のひねり、横曲げ、屈み、反り
- ・ひじの変形
- ・手をグーにする
UV展開
基本操作
どう分けるか?
基本的には材質で分けていけばよいはず。キャラモデルであれば「髪・肌・目」「服や装飾品」(場合によっては顔だけさらに分けたり)といった具合。
顔と目が1つのメッシュオブジェクト内にあるのに顔のUVと目のUVが別々ということは避ける。1つのメッシュオブジェクトに2つのマテリアルを割り当てることになる、やってはいけないわけではないが避けたほうがパフォーマンスに良いらしい。
UV展開の形状
UV展開の形状については、元の形状を出来る限り維持するタイプと、垂直、水平の四角形に展開する2通りのタイプが主流と思われる。以下にそれぞれのメリットを記載する。
元の形状を可能な限り維持して展開する
PhotoShopなど他のテクスチャペイントでテクスチャを描く場合、こちらの方が元の形状が分かるため描きやすい。
垂直、水平の四角形に展開する
髪の毛を短冊状にUV展開するとテクスチャが描きやすくなる。
以下の記事を参照。
ブログの女の子を作る #58 髪の毛を改善する (2) テクスチャ画像を作る【Blender,Unity】
またセルルックなモデルでラインを綺麗に出したい場合はUVのエッジが垂直、水平になるように展開し、テクスチャも垂直、水平に描いていくと綺麗な線が出る。 以下の記事の「輪郭線の秘密(2)」の項を参照。
西川善司の「試験に出るゲームグラフィックス」(1)「GUILTY GEAR Xrd -SIGN-」で実現された「アニメにしか見えないリアルタイム3Dグラフィックス」の秘密,前編
テクスチャ
基本的な進め方
まずはワークスペースを「テクスチャペイント」に変更する。この時左側の画像エディターがペイントモードになっているか確認する。
その後、編集モードでテクスチャを塗りたい箇所を選択すると左側にUVが表示される。
画像エディターのツールバーにある「+新規」を押すとダイアログが出てくるので名前やサイズを入力する。サイズはとりあえず4096で良いと思う。アルファはオン(透過を使わないならオフでよい)、生成タイプはブランクにして「新規画像」を押す。
そうすると真っ黒な画像が生成される。だがこのままだとモデルには反映されないのでマテリアルに設定する必要がある。
ワークスペースを「シェーディング」に変更してテクスチャノードに先ほど作成した画像を設定する(この例ではMToonマテリアルのLit Color Textureに設定している、このノードは最終的に出力されるノードにつながっている)
「テクスチャペイント」ワークスペースに戻ると3Dモデルに直接ペイントできるようになる。
テクスチャペイントモードではツールバーにマテリアル選択スロットが表示され、選択するとオブジェクトに設定されているマテリアルと、マテリアルにせていされているテクスチャが表示されるのでここから描きこむテクスチャを変更することができる。
操作方法・ショートカット
スポイト操作
「SHIFT+X」でスポイト操作、バージョンによっては「S」だったりする。
Blender外からスポイト
描画カラー表示されている場所でEキーを押すとBlender内だけでなく別ウィンドウの色もスポイトすることが出来る。
影マスクを使用する
ベースカラーテクスチャに固定影を描きこんだりする場合、テクスチャにそのまま固定影を描きこむよりも影マスクを使用したほうが作業しやすい。
MToonマテリアルを使う場合のやり方は、上の画像右のような画像をミックスノード(ミックス形式は乗算)の係数に繋ぎ、そのミックスノードのAにはベースとなるテクスチャ、Bには乗算で掛ける色を繋ぎ、ミックスノードの出力をVRMアドオンで追加したMToonマテリアルOutputノードのLit Colorに繋ぐ。これでマスクで指定した箇所は光が当たっていても影の色となる。
それとは別にAにベーステクスチャ、Bに乗算する色を繋ぎ係数を1.0にした乗算ミックスノードを作りShade Colorに繋ぐ。これで光が当たらない箇所は固定影と同じ影色となる。
これらマテリアル設定はそのままではMToonに使えないので、最終的にはClipStudioPaintで合成しそれぞれ1枚のベーステクスチャ、影テクスチャとする。
もちろんこのようなやり方をせずにAutoReloadアドオンなどを使いClipStudioPaintで作業してもよい。
シェイプキー
ミラー編集時の注意
ミラー編集する際に、スナップなどによって重ねた頂点を編集しようとすると、ミラー側ではこちらが選択したものと違う頂点が動くことがある。
回避方法としては頂点を重ねるのは最後にするか、シェイプキーがある状態でもモディファイアを適用できるようにするアドオンなどを使用して、ミラーモディファイアをつけた状態でシェイプキーを作るかする。
メッシュの整理
シェイプキーを作成する前にサブディビジョンサーフェスを適用していた場合、必ず目や口周りのメッシュは整理すること。上はちゃんとメッシュを整理しなかったためにシェイプキーを作る際に非常に苦労したまつ毛。
VRM
ここからはVRChat及びVRMで必要になるシェイプキーについて記述する
注意:ベースのシェイプと形状が同じシェイプキーはFBXエクスポート時に削除されるため、そのような場合は変化が分からないぐらい僅かに頂点移動させる。
VRMで必要となるシェイプキーは以下の通りとなる。
リップシンク
- A:あ、の音声
- I:い、の音声
- U:う、の音声
- E:え、の音声
- O:お、の音声
まばたき
自動まばたきやアイトラッキングをするために必要なシェイプキーは以下の5つとなる。
- Blink:まばたき
- Blink_L:左まばたき
- Blink_R:右まばたき
表情
- NEUTRAL:標準の表情
- Joy:喜
- Angry:怒
- Sorrow:哀
- Fun:楽(VRM1.0では廃止されてRelaxとなった)
- Relax:リラックス
アイトラッキング
視線制御をシェイプキーで行う場合に設定する項目。 ボーンで制御する場合でも作っておいたほうが良い。
- LookUp
- LookDown
- LookLeft
- LookRight
VRCHAT
リップシンク
VRChatでは発生に合わせて口の形を変える機能がある。そのために以下の15のシェイプキーの設定をする必要がある。全て1から作るのではなくある程度作ったら作成したシェイプキーをブレンドして残りを作ればよい。
注意:リップシンクを有効にするためにはシェイプキーの含まれているメッシュの名前を”Body”(大文字小文字も区別あり)にする必要がある。 (VRCSDK2.0時点、3.0では不明)
参考:VRChatアバターのリップシンクの作成方法&VRChatでの設定方法 – ゼロから始めるアバター生活
リップシンク用シェイプキー一覧
- vrc.v_sil:発声無しの形状、ベースとほぼ同じ形状で問題ないと思われる
- vrc.v_PP:put,batの発音、ベースを若干すぼめる、もしくはベースのまま。
- vrc.v_FF:fat,vatの発音、ihの下唇を修正、またはihとEのブレンドで作る。
- vrc.v_TH:think,thatの発音、Eをベースに修正、またはaaとのブレンド。
- vrc.v_DD:tip,dollの発音、THをベースに修正、またはaaとのブレンド。
- vrc.v_kk:call,gasの発音、Eをベースに修正、またはihとのブレンド
- vrc.v_CH:chair,sheの発音、Eをベースに修正、またはihとのブレンド
- vrc.v_SS:sir,zealの発音、ihをベースに修正、またはFFとのブレンド
- vrc.v_nn:lot,notの発音、Eをベースに修正、またはkkとのブレンド
- vrc.v_RR:redの発音、SSをベースに修正、またはsilとのブレンド
- vrc.v_aa:”あ”の形状
- vrc.v_E:”え”の形状
- vrc.v_ih:”い”の形状
- vrc.v_oh:”お”の形状
- vrc.v_ou:”う”の形状
まばたき
自動まばたきやアイトラッキングをするために必要なシェイプキーは以下の5つとなる。
- vrc.lowerlid_left:左下まぶた、多くの場合はダミーでやっているらしい。
- vrc.lowerlid_right:右下まぶた、同様にダミーシェイプで良い。
- vrc.blink_left:左まぶた。
- vrc.blink_right:右まぶた。
- blink:両目まばたき、最初に両目を作ってから
注意: 上記のリップシンクやまばたきで使用するシェイプキーをunityで設定する際は他の表情では使用しないこと。 (使用するとリップシンクや自動まばたきが動作しなくなる)
その他
その他表情:表情を作る際は 〇〇_eyeblow_L(R)、〇〇_eye_L(R)、〇〇_mouthでパーツごとに分解すると使いやすいかも。 (シェイプキーが増えると容量も増えるので注意)
表情バリエーション
- cheek:頬染め
- futa:目のメッシュを隠すシェイプキー、以下の特殊表情用
- shiitake:しいたけ目
- surprise:驚き、○_○目
- shock:><目
- jitome:ジト目
歯について
歯のシェイプキーを設定するときのベースの歯の位置としては
×口内の上下に隠れるようにしておく
○軽く閉じた形式にしておく(口を開けたときに歯が軽く見える程度)
理由としては歯を見せるシェイプキーを作るときに、ベースの歯が×の状態にしておくと、歯を開いた時に急に歯が生えてくるように見えるから。
マテリアル&シェーディング
BlenderでのMToonの扱いについて書く予定