このページの内容は古いものです。更新もしません。
モデルやモーションの規約によっては改造だけでなくMMDとその派生型以外のソフトウェアにモデルを持っていくこと自体を禁止しているものもあります。ご注意ください!!
Blender Ver2.83 LTS とblender_mmd_tools Addonを使い、EEVEEでMMDモデルをレンダリングして動画を作成する覚え書きです。
blender_mmd_tools Addonの導入方法や各オプションについてはBlender 2.8 mmd_tools Addonページをご覧下さい。
ある程度MMDとBlenderの操作に慣れている人向けです。
非効率的な方法を取っていたり間違いがあるかもしれません。
MMDモデルの構造(特に物理周り、稀にボーン構造)によっては正常に動きません。
PMXエディタやBlenderでの調整、改造が必要となる場合があります。
(MMDでは動作するがMMMでは動かないモデルなどは特に正常に動かない)
このページでは、例としてImagineGirls ヴィエンヌ - Version 2/VRキャラクター製作所のVienneV2_modA_Swimsuit.pmxを利用させてもらいます。
※ImagineGirls ヴィエンヌ - Version 2/VRキャラクター製作所には.blendファイルも付属していますがVer2.79で作成されたファイルでVer2.8xでは正常に開けないようなので.pmxファイルをmmd_toolsを使ってインポートしました。
.vmdモデルモーション/カメラモーションは下記の動画の物をお借りします。
下記動画の投稿者コメント欄にモーションファイルへのリンクがあります。

メニューバーからファイル→インポート→MikuMikuDance Model (.pmd .pmx)から読み込むか、3Dビュー画面上で[N]キーを押してサイドバーを出し、MMDタブのModel:下のImportからモデルを読み込みます。

インポート時のオプションについて詳しくはmmd_tools/インポートをご覧ください。
※拡大縮小を0.08にして、MMDとBlenderでサイズを一致させないと物理演算の結果が意図しないものになります。
例えば拡大縮小:1で読み込んだ場合、剛体のサイズが(MMD上と比べて)大きいのに剛体に設定された質量がそのままのため、相対的に軽くふわふわになります。
何らかの理由で拡大縮小の値を1にしたい場合は、Blenderのフィールドの重みの重力を12.5にするとMMD上の物理演算と似た状態になります。
(たとえ0.08倍でインポートしてもソフトウェアの仕様や物理エンジンのVerの違いなどでMMDの物理演算を完全に再現する事はできません)

メニューバーの編集→プリファレンス...→アドオンから検索バーに"mmd"と入力してmmd_toolsの項目を表示させます。
設定:のShared Toon Texture FolderにMikMikuDance_[version]/Dataへのパスを指定します。
これでToon関係のファイルが読み込まれて正常に表示されるはずですが、それでも紫色になる場合はなんらかの理由でベーステクスチャ(あるいはスフィア、Toonファイル)が読み込まれていない可能性があります。
例えばテクスチャの名前やパスに中国語が含まれていて正常に.zipファイルを解凍できなかった場合(文字化けしてテクスチャを見失っている)...など
MMDで正常に表示されるか確認してみましょう。(ついでにPmxEditorのPMXデータの状態検証で異常がないか検証してみる)

複数のノーマルマップを適用(合成)したい場合もあるでしょう。
そういった場合は[Shift]+[A]→カラーから、RGBミックスノードを二つ追加し、係数を共に1にします。
一つめのRGBミックスノードを乗算にして画像テクスチャノードのカラーを色1、色2にそれぞれ接続し、二つめのRGBミックスノードを除算にします。
乗算にしたRGBミックスノードのカラーを二つめのRGBミックスの色1に接続します。
ノーマルマップノードの[カラー]の上にマウスカーソルを持っていき、[Ctrl]+[C]でカラーをクリップボードにコピーしたら、二つめのRGBミックスの色2の上で[Ctrl]+[V]でペーストします。
最後に、除算にした二つめのRGBミックスノードのカラーをノーマルマップノードのカラーに接続します。

黒柚式五劫院ミユモデルは前髪が半透明なテクスチャが利用されているのですが、ご覧の通りノイジーになってます。

こういった半透明なテクスチャが使われていて、ノイジーな場合は該当マテリアルのマテリアルプロパティからブレンドモードをアルファブレンドにします。
必要に応じて、背面を表示のチェックをONorOFFにします。

ハイフェン3モデルなど、特定のモデルは顔面や目が黒くなる場合があります。
これは照れ/頬染めモーフ等のメッシュのノーマル(法線)が逆向きだからです。
該当材質のメッシュオブジェクトを選択して頂点編集モードでノーマルを反転させても良いですが、面倒なので裏面の非表示オプションをOFFにして対処します。

治りました。

もし裏面の非表示オプションをOFFにしても治らない場合は、該当材質のメッシュオブジェクトを選択して[TAB]キーを押して頂点編集モードに入って[A]キーで全選択→トップバー下のメッシュからノーマル→反転で反転させます。
さらに裏面の非表示オプションをONorOFFしてみます。

上記の画像はボディ材質にSSSを有効にしています。
胸の辺りなどに緑っぽいアザのような色が載っています。
これはSSSを有効にしたボディ(材質)に近接する材質のマテリアル設定を変更する事で解決できます。

このモデルの例では、cloth材質のマテリアルプロパティから、設定→スクリーンスペース屈折のオプションを有効にします。
(レンダープロパティでスクリーンスペース反射とその中の屈折を有効にしていないと効果がありません)

もう一つの方法は、cloth材質のマテリアルプロパティから、設定→ブレンドモード→アルファブレンドにします。(デフォルトではアルファハッシュです)
こちらはレンダープロパティでスクリーンスペース反射とその中の屈折を有効にしていなくても効果があります。

上記の画像は衣装や髪などのマテリアルプロパティを変更した例です。

モデルモーションを読み込みます。
必ずモデルのエンプティを選択した状態で、サイドバーからMMDタブ→運動:→importで.vmdファイルを選択します。
これはmmd_toolsの仕様でメッシュオブジェクトを選択してモーションをインポートすると該当する材質のモーフアニメーションのみ、アーマチュア(ボーン)を選択してインポートするとボーンアニメーションのみインポートされるからです。
通常はモデルのエンプティを選択してモーフ類とボーンアニメーションの両方を読み込みます。

.vmdファイルの選択ウインドウ表示されます。
拡大縮小はモデルのインポート時に指定した値と同じでないといけません。(今回は0.08)
余白は物理演算が暴れる際に指定します。(今回は0にしています)

3Dビュー上で[Shift]+[A]キーを押してカメラオブジェクトを追加します。
カメラオブジェクトを選択した状態でサイドバーからMMDタブ→運動:→importで.vmdファイルを選択します。

こちらもモデルモーション同様、拡大縮小をモデルのインポート時の値と同じにします。
モデルモーションを読み込む際に余白を指定した場合は同じ値を入力します。
カメラモーションを読み込むとMMD_Cameraというエンプティが作られます。カメラオブジェクトはエンプティの子になります。

現状では再生しても胸や髪が揺れません。
MMDと違ってBlenderでは物理演算はベイク(焼き込み)する必要があります。
まずはMMDの物理構造をBlenderの物理演算に対応させます。
モデルのエンプティを選択してサイドバーからMMDタブ→Physics:→Buildでビルド(変換)します。

ベイクしただけでは上記の画像のように物理が置いてけぼりされてしまいます。

ベイク(焼き込み)します。
シーンプロパティ→リジットボディワールド→キャッシュ→ベイクでベイクします。
(ベイクしても物理がおかしい場合は全物理演算をベイクや、いったんベイクを削除してもう一度ベイクしてみる)
※モーション読み込み前にBuildした場合、物理演算がおかしな挙動になるので、いったんクリーンしてからモーション読み込み→Buildする
動画ファイルへのリンク |
モデルやモーションの規約によっては改造だけでなくMMDとその派生型以外のソフトウェアにモデルを持っていくこと自体を禁止しているものもあります。ご注意ください!!
Blender Ver2.83 LTS とblender_mmd_tools Addonを使い、EEVEEでMMDモデルをレンダリングして動画を作成する覚え書きです。
blender_mmd_tools Addonの導入方法や各オプションについてはBlender 2.8 mmd_tools Addonページをご覧下さい。
ある程度MMDとBlenderの操作に慣れている人向けです。
非効率的な方法を取っていたり間違いがあるかもしれません。
MMDモデルの構造(特に物理周り、稀にボーン構造)によっては正常に動きません。
PMXエディタやBlenderでの調整、改造が必要となる場合があります。
(MMDでは動作するがMMMでは動かないモデルなどは特に正常に動かない)
このページでは、例としてImagineGirls ヴィエンヌ - Version 2/VRキャラクター製作所のVienneV2_modA_Swimsuit.pmxを利用させてもらいます。
※ImagineGirls ヴィエンヌ - Version 2/VRキャラクター製作所には.blendファイルも付属していますがVer2.79で作成されたファイルでVer2.8xでは正常に開けないようなので.pmxファイルをmmd_toolsを使ってインポートしました。
.vmdモデルモーション/カメラモーションは下記の動画の物をお借りします。
下記動画の投稿者コメント欄にモーションファイルへのリンクがあります。
- EEVEEの設定
- ライティング
- MMDモデルの読み込み(.pmxファイルのインポート)
- シェーダーノードの設定
- マテリアルプロパティの設定
- モーションファイル読み込み前の準備
- モデル/カメラモーションの読み込み
- 音源の読み込み
- 動画へ出力
- その他
EEVEEはデフォルトでは全ての機能が有効ではありません。
必要なオプションだけ有効にしていく方式です。


今回はアンビエントオクルージョン(AO)、ブルーム、スクリーンスペース反射(とその中の屈折オプション)にチェックを入れます。
影の立方体サイズを下げると影が柔らかく、上げるとくっきりします。ただし、光源(ライト)がないと効果はありません。
今回はHDRIを光源(ライト)の代わりに使うのであまり弄る必要はないです。
Blender2.83のEEVEEではデフォルトの設定ではHDRIなどを用いたIBLのみだと影が生成されません。影が欲しい場合は別途光源(ライト)を用意します。
カラーマネージメントの項目を開くとビュー変換という設定があります。
デフォルトではこれがFilmicになっており、リアル系のカラーマネジメントになっています。
好みや作りたい映像などにもよりますが、セルルックな映像を作る場合はこれを標準にした方が良いとされています。(このページでは標準にして進めていきます)
(例えばMMDモデルを使って実物のフィギュアを撮影したかのような画像を作りたい場合はFilmicの方が良いかもしれません)
必要なオプションだけ有効にしていく方式です。


今回はアンビエントオクルージョン(AO)、ブルーム、スクリーンスペース反射(とその中の屈折オプション)にチェックを入れます。
影の立方体サイズを下げると影が柔らかく、上げるとくっきりします。ただし、光源(ライト)がないと効果はありません。
今回はHDRIを光源(ライト)の代わりに使うのであまり弄る必要はないです。
Blender2.83のEEVEEではデフォルトの設定ではHDRIなどを用いたIBLのみだと影が生成されません。影が欲しい場合は別途光源(ライト)を用意します。
カラーマネージメントの項目を開くとビュー変換という設定があります。
デフォルトではこれがFilmicになっており、リアル系のカラーマネジメントになっています。
好みや作りたい映像などにもよりますが、セルルックな映像を作る場合はこれを標準にした方が良いとされています。(このページでは標準にして進めていきます)
(例えばMMDモデルを使って実物のフィギュアを撮影したかのような画像を作りたい場合はFilmicの方が良いかもしれません)
HDRI(High Dynamic Range Image)は明るさの情報を持っています。
HDRIなど、画像を利用してライティングするのをIBL(Image Based Lighting)と言います。
MMD風に簡単に言えば、光源情報が含まれたスカイボックスという感じです。
本当はHDRIに追加でライトオブジェクトなどを設定して複数から光を当てる方が良いのですが、今回はHDRIのみで進めて行きます。(Blenderに初期配置されているライトオブジェクトは削除しています)
※ライティングの基本として三点照明というものがあります。3DCGのみならず写真撮影などでも使われる手法です。興味のある方は検索してみて下さい。
"HDRI CC0"などで検索すればフリーなHDRIファイルが配布されています。
※ちなみに、blender-[ver]-windows64\[ver]\datafiles\studiolights\worldフォルダ内にデフォルトの.exrファイルがあります。(forest.exrがマテリアルプレビューのデフォルトです)
今回はマテリアルプレビューでデフォルトのforest.exrを使ってみますが、その前にBlenderへバンドルされているNode Wranglerアドオンを有効化します。
HDRIを用いたIBLの設定以外にも、ノードを利用する際に便利です。

アドオンを有効化したら、トップバーからShadingタブを開き、画面中央のオブジェクトをワールドにします。

背景ノードを選択した状態で[Ctrl]+[T]キーを押して環境テクスチャノードの開くから”blender-[ver]-windows64\[ver]\datafiles\studiolights\world\forest.exr”を開きます。

上図のように背景にforest.exrの画像が表示され、明るくなったはずです。(マウスカーソルを3Dビュー上に持っていって[Z]キーからレンダーを選択していないと変わりません)
背景ノードの強さから背景画像や明るさの全体的な強さを調整できます。
マッピングノードの位置、回転、拡大縮小からそれぞれを操作できます。

映像編集ソフトで合成するなど、背景を透過したい場合には、レンダープロパティのフィルム→透過にチェックを入れます。
HDRIなど、画像を利用してライティングするのをIBL(Image Based Lighting)と言います。
MMD風に簡単に言えば、光源情報が含まれたスカイボックスという感じです。
本当はHDRIに追加でライトオブジェクトなどを設定して複数から光を当てる方が良いのですが、今回はHDRIのみで進めて行きます。(Blenderに初期配置されているライトオブジェクトは削除しています)
※ライティングの基本として三点照明というものがあります。3DCGのみならず写真撮影などでも使われる手法です。興味のある方は検索してみて下さい。
"HDRI CC0"などで検索すればフリーなHDRIファイルが配布されています。
※ちなみに、blender-[ver]-windows64\[ver]\datafiles\studiolights\worldフォルダ内にデフォルトの.exrファイルがあります。(forest.exrがマテリアルプレビューのデフォルトです)
今回はマテリアルプレビューでデフォルトのforest.exrを使ってみますが、その前にBlenderへバンドルされているNode Wranglerアドオンを有効化します。
HDRIを用いたIBLの設定以外にも、ノードを利用する際に便利です。

アドオンを有効化したら、トップバーからShadingタブを開き、画面中央のオブジェクトをワールドにします。

背景ノードを選択した状態で[Ctrl]+[T]キーを押して環境テクスチャノードの開くから”blender-[ver]-windows64\[ver]\datafiles\studiolights\world\forest.exr”を開きます。

上図のように背景にforest.exrの画像が表示され、明るくなったはずです。(マウスカーソルを3Dビュー上に持っていって[Z]キーからレンダーを選択していないと変わりません)
背景ノードの強さから背景画像や明るさの全体的な強さを調整できます。
マッピングノードの位置、回転、拡大縮小からそれぞれを操作できます。

映像編集ソフトで合成するなど、背景を透過したい場合には、レンダープロパティのフィルム→透過にチェックを入れます。

メニューバーからファイル→インポート→MikuMikuDance Model (.pmd .pmx)から読み込むか、3Dビュー画面上で[N]キーを押してサイドバーを出し、MMDタブのModel:下のImportからモデルを読み込みます。

インポート時のオプションについて詳しくはmmd_tools/インポートをご覧ください。
※拡大縮小を0.08にして、MMDとBlenderでサイズを一致させないと物理演算の結果が意図しないものになります。
例えば拡大縮小:1で読み込んだ場合、剛体のサイズが(MMD上と比べて)大きいのに剛体に設定された質量がそのままのため、相対的に軽くふわふわになります。
何らかの理由で拡大縮小の値を1にしたい場合は、Blenderのフィールドの重みの重力を12.5にするとMMD上の物理演算と似た状態になります。
(たとえ0.08倍でインポートしてもソフトウェアの仕様や物理エンジンのVerの違いなどでMMDの物理演算を完全に再現する事はできません)

メニューバーの編集→プリファレンス...→アドオンから検索バーに"mmd"と入力してmmd_toolsの項目を表示させます。
設定:のShared Toon Texture FolderにMikMikuDance_[version]/Dataへのパスを指定します。
これでToon関係のファイルが読み込まれて正常に表示されるはずですが、それでも紫色になる場合はなんらかの理由でベーステクスチャ(あるいはスフィア、Toonファイル)が読み込まれていない可能性があります。
例えばテクスチャの名前やパスに中国語が含まれていて正常に.zipファイルを解凍できなかった場合(文字化けしてテクスチャを見失っている)...など
MMDで正常に表示されるか確認してみましょう。(ついでにPmxEditorのPMXデータの状態検証で異常がないか検証してみる)
mmd_toolsで.pmxファイルをインポートした際に作られるMMDShaderDevグループノードでもそれなりに綺麗ですが、せっかくBlenderにインポートしたのにノーマルマップやSSSが使えないなど不満点もあります。

上の画像はデフォルトのMMDShaderDevグループノードでレンダリングしたものです。
ノードとかよくわからない、上の画像のような質感で不満がない...という方はこの項目を飛ばして下さい
下記の文章はノードを弄ってみたいという方向けのものになります。
また、ノードの組み方はあくまで一例です。あんまり正しくないかもしれません。

ノードを操作する前にトップバーからShadingタブを開きます。
画面中央下部のシェーダーエディターのワールドをオブジェクトにします。
適当なメッシュオブジェクト(材質)を画面上の3Dビューから選択してから、シェーダーエディター上で[Home]キーを押してMMDShaderDevグループノードを表示させます。
画面上の3Dビュー上で[Z]キーを押してマテリアルプレビューからレンダーに切り替えておきましょう。
MMDShaderDevグループノードを開いてグループノードの中でノードを追加したり編集する方がいいです。
これは後述するモーフのバインドで材質モーフやUVモーフなどを正常に動かすためです。
※ちなみにサイドバー→MMDタブ→Convert Materials for Cycles→[3Dビューの左下に表示されるオプション]でConvert to Principled BSDFを選択するとレンダリングエンジンがCyclesに切り替わり、MMDShaderDevがPrincipled BSDFシェーダーに置き換えられますが、モーフのバインドが機能しないバグがあります。(バインド後にコンバート、コンバート後にバインド共に機能しない,2020/12/06のVer)

MMDShaderDevグループノードをクリックして選択し、[TAB]キーを押して開きます。

上図のような画面になったはずです。
この中にノードを追加したり接続したりします。
もう一度、[TAB]キーを押すとMMDShaderDevグループノードを閉じれます。

上の画像はデフォルトのMMDShaderDevグループノードでレンダリングしたものです。
ノードとかよくわからない、上の画像のような質感で不満がない...という方はこの項目を飛ばして下さい
下記の文章はノードを弄ってみたいという方向けのものになります。
また、ノードの組み方はあくまで一例です。あんまり正しくないかもしれません。

ノードを操作する前にトップバーからShadingタブを開きます。
画面中央下部のシェーダーエディターのワールドをオブジェクトにします。
適当なメッシュオブジェクト(材質)を画面上の3Dビューから選択してから、シェーダーエディター上で[Home]キーを押してMMDShaderDevグループノードを表示させます。
画面上の3Dビュー上で[Z]キーを押してマテリアルプレビューからレンダーに切り替えておきましょう。
MMDShaderDevグループノードを開いてグループノードの中でノードを追加したり編集する方がいいです。
これは後述するモーフのバインドで材質モーフやUVモーフなどを正常に動かすためです。
※ちなみにサイドバー→MMDタブ→Convert Materials for Cycles→[3Dビューの左下に表示されるオプション]でConvert to Principled BSDFを選択するとレンダリングエンジンがCyclesに切り替わり、MMDShaderDevがPrincipled BSDFシェーダーに置き換えられますが、モーフのバインドが機能しないバグがあります。(バインド後にコンバート、コンバート後にバインド共に機能しない,2020/12/06のVer)

MMDShaderDevグループノードをクリックして選択し、[TAB]キーを押して開きます。

上図のような画面になったはずです。
この中にノードを追加したり接続したりします。
もう一度、[TAB]キーを押すとMMDShaderDevグループノードを閉じれます。
mmd_toolsでMMDモデルなどをインポートした際にデフォルトで作られるMMDShaderDevグループノードはNPR(Non-Photorealistic Rendering ,非写実的レンダリング)の実装の一つです。
MMDモデルに設定されたスフィアマップやToonなどを利用でき、テクスチャではなく材質色や環境色などで色を表現している古いモデルやアクセサリでもMMD上と完全に同じではありませんが描画されます。
ただし、MMDではMMEとシェーダーを導入する事で(シェーダーにもよりますが)ノーマルマップなどを利用できますが、デフォルトのMMDShaderDevでは利用できません。
この項目ではMMDShaderDevにPrincipled BSDFを追加(一部置き換え)する事でMMDShaderDevによるNPRな表現を維持しつつ、Principled BSDFのSSSやノーマルマップなどの機能を利用する方法を記載します。
※ただし、SSSなどを効かせる場合などはライティングや望む質感にもよるが、後述する方法などでToon等をOFFにした方が良い。

[Shift]+[A]キーを押してシェーダー→プリンシプルBSDFを選択、追加します。

[Shift]+[A]キーからコンバーター→シェーダーからRGBへを選択、追加します。

光沢BSDFノードのBSDF出力ソケットと、追加したシェーダーからRGBへノードのシェーダー入力ソケットを接続します。

[Shift]+[A]キーからカラー→RGBミックスノードを追加します。
シェーダーからRGBへノードのカラー出力ソケットとRGBミックスノードの色2入力ソケットを接続します。
RGBミックスノードの係数を0.020に設定します。

中央のミックスノードのカラー出力ソケットと、追加したミックスノードの色1入力ソケットを接続します。

追加した方のミックスノードのカラー出力ソケットとプリンシプルBSDFのベースカラー入力ソケットを接続します。

画面上部右の最小ノードの値出力ソケットとプリンシプルBSDFのアルファ入力ソケットを接続します。

プリンシプルBSDFのBSDF出力ソケットとグループ出力のシェーダーを接続します。
おそらく、見た目がちょっと変わったはずです。

プリンシプルBSDFの粗さの値を1.0にします。
プリンシプルBSDFのメタリック、スペキュラー、粗さ、放射、ノーマル各ソケットをグループ入力の一番下の半透明なソケットに順に接続します。
これはノーマルなどをMMDShaderDevグループノードの外から操作したいためです。
※スペキュラーは基本的に操作しない!
MMDモデルに設定されたスフィアマップやToonなどを利用でき、テクスチャではなく材質色や環境色などで色を表現している古いモデルやアクセサリでもMMD上と完全に同じではありませんが描画されます。
ただし、MMDではMMEとシェーダーを導入する事で(シェーダーにもよりますが)ノーマルマップなどを利用できますが、デフォルトのMMDShaderDevでは利用できません。
この項目ではMMDShaderDevにPrincipled BSDFを追加(一部置き換え)する事でMMDShaderDevによるNPRな表現を維持しつつ、Principled BSDFのSSSやノーマルマップなどの機能を利用する方法を記載します。
※ただし、SSSなどを効かせる場合などはライティングや望む質感にもよるが、後述する方法などでToon等をOFFにした方が良い。
- プリンシプルBSDFの追加、ベースカラーの設定

[Shift]+[A]キーを押してシェーダー→プリンシプルBSDFを選択、追加します。

[Shift]+[A]キーからコンバーター→シェーダーからRGBへを選択、追加します。

光沢BSDFノードのBSDF出力ソケットと、追加したシェーダーからRGBへノードのシェーダー入力ソケットを接続します。

[Shift]+[A]キーからカラー→RGBミックスノードを追加します。
シェーダーからRGBへノードのカラー出力ソケットとRGBミックスノードの色2入力ソケットを接続します。
RGBミックスノードの係数を0.020に設定します。

中央のミックスノードのカラー出力ソケットと、追加したミックスノードの色1入力ソケットを接続します。

追加した方のミックスノードのカラー出力ソケットとプリンシプルBSDFのベースカラー入力ソケットを接続します。
- プリンシプルBSDFのアルファの設定

画面上部右の最小ノードの値出力ソケットとプリンシプルBSDFのアルファ入力ソケットを接続します。
- プリンシプルBSDFのBSDF出力をグループ出力のシェーダーへ接続

プリンシプルBSDFのBSDF出力ソケットとグループ出力のシェーダーを接続します。
おそらく、見た目がちょっと変わったはずです。
- グループ入力へプリンシプルBSDFのノーマルなどを接続

プリンシプルBSDFの粗さの値を1.0にします。
プリンシプルBSDFのメタリック、
これはノーマルなどをMMDShaderDevグループノードの外から操作したいためです。
※スペキュラーは基本的に操作しない!
今ののままではMMDShaderDevグループノードの中を編集するとすべてのマテリアルの質感が変わってしまいます。
シングルユーザー化する事で、例えばボディや衣装といった個別のマテリアルごとに質感を設定、割り当てる事ができます。

上記画像の赤丸で囲んだ部分をクリックするとシングルユーザーにできます。
ノードの名前がおそらく、MMDShaderDev.001となっているはずです。
名前はお好きなものにできますが、日本語にするより”Skin”など英語の方がBlender上で検索しやすいです。

さらに上記画像の赤丸で囲んだ部分をクリックしてフェイクユーザーを有効にしておきます。
フェイクユーザーを有効にしていないと、使っていない(孤立した)ノードが.blendファイル保存時に消されてしまいます。(.blendファイルに保存されない)

シングルユーザー化したノードをマテリアルに割り当てるには、シェーダーエディターでマテリアルを選択(Shadingタブ、画面中央)し、MMDShaderDevグループノードのマテリアルアイコンをクリックして選択します。
シングルユーザー化する事で、例えばボディや衣装といった個別のマテリアルごとに質感を設定、割り当てる事ができます。

上記画像の赤丸で囲んだ部分をクリックするとシングルユーザーにできます。
ノードの名前がおそらく、MMDShaderDev.001となっているはずです。
名前はお好きなものにできますが、日本語にするより”Skin”など英語の方がBlender上で検索しやすいです。

さらに上記画像の赤丸で囲んだ部分をクリックしてフェイクユーザーを有効にしておきます。
フェイクユーザーを有効にしていないと、使っていない(孤立した)ノードが.blendファイル保存時に消されてしまいます。(.blendファイルに保存されない)

シングルユーザー化したノードをマテリアルに割り当てるには、シェーダーエディターでマテリアルを選択(Shadingタブ、画面中央)し、MMDShaderDevグループノードのマテリアルアイコンをクリックして選択します。
Principled BSDFのSSS(Subsurface Scattering, サブサーフェススキャタリング)を利用します。

MMDShaderDevグループノードをシングルユーザー化し、名前を”Skin”とでもしておきます。
サブサーフェスカラーとしてベーステクスチャ(or材質色)を補正して利用します。
(よくわからなければベーステクスチャ(or乗算ノード)をそのままサブサーフェスカラーに接続しても良い気がする...)

[TAB]キーでMMDShaderDevグループノードを開き、[Shift]+[A]からカラー→ガンマでガンマノードを、カラー→色相/彩度からHSV(色相/彩度/輝度)ノードを追加します。
MMDShaderDevグループノード左上の乗算ノードのカラー出力ソケットとガンマノードのカラー入力ソケットを接続します。
ガンマノードとHSV(色相/彩度/輝度)ノード、プリンシプルBSDFのサブサーフェスカラーをそれぞれ接続します。
ガンマノードのガンマの値を3.000程度に設定し、HSV(色相/彩度/輝度)ノードの色相の値を0.480程度に設定します。
AOノードとカラーランプノードを使って疑似Thicknessマップ(Fake Thickness map)を作り、利用します。
(こちらもよくわからなければ0.1~0.2程度に設定しておいても良い気がする)


[Shift]+[A]から入力→アンビエントオクルージョン(AO)を、コンバーター→カラーランプをそれぞれ追加します。
アンビエントオクルージョン(AO)のAO出力ソケットとカラーランプの係数入力ソケットを接続し、カラーランプのカラー出力ソケットをプリンシプルBSDFのサブサーフェスに接続します。
カラーランプの∨をクリックしてカラーランプを反転を選択し、色を反転させます。
カラーランプの黒い方のカラーストップ(矢印)を選択してカラー(係数の上の黒い所)をクリックしてHSVのVを0.5にして灰色に設定します。
カラーストップの位置や色(白黒)で範囲や強度を設定できます。

SSSを有効にしたマテリアルは、マテリアルプロパティから設定→サブサーフェスの透光にチェックを入れます。

MMDShaderDevグループノードをシングルユーザー化し、名前を”Skin”とでもしておきます。
- サブサーフェスカラーの設定
サブサーフェスカラーとしてベーステクスチャ(or材質色)を補正して利用します。
(よくわからなければベーステクスチャ(or乗算ノード)をそのままサブサーフェスカラーに接続しても良い気がする...)

[TAB]キーでMMDShaderDevグループノードを開き、[Shift]+[A]からカラー→ガンマでガンマノードを、カラー→色相/彩度からHSV(色相/彩度/輝度)ノードを追加します。
MMDShaderDevグループノード左上の乗算ノードのカラー出力ソケットとガンマノードのカラー入力ソケットを接続します。
ガンマノードとHSV(色相/彩度/輝度)ノード、プリンシプルBSDFのサブサーフェスカラーをそれぞれ接続します。
ガンマノードのガンマの値を3.000程度に設定し、HSV(色相/彩度/輝度)ノードの色相の値を0.480程度に設定します。
- サブサーフェスの設定
AOノードとカラーランプノードを使って疑似Thicknessマップ(Fake Thickness map)を作り、利用します。
(こちらもよくわからなければ0.1~0.2程度に設定しておいても良い気がする)


[Shift]+[A]から入力→アンビエントオクルージョン(AO)を、コンバーター→カラーランプをそれぞれ追加します。
アンビエントオクルージョン(AO)のAO出力ソケットとカラーランプの係数入力ソケットを接続し、カラーランプのカラー出力ソケットをプリンシプルBSDFのサブサーフェスに接続します。
カラーランプの∨をクリックしてカラーランプを反転を選択し、色を反転させます。
カラーランプの黒い方のカラーストップ(矢印)を選択してカラー(係数の上の黒い所)をクリックしてHSVのVを0.5にして灰色に設定します。
カラーストップの位置や色(白黒)で範囲や強度を設定できます。
- マテリアルプロパティの設定

SSSを有効にしたマテリアルは、マテリアルプロパティから設定→サブサーフェスの透光にチェックを入れます。
本来ならプリンシプルBSDFのシーンやシーンチントを操作するのですが、今回の例ではあまり効果がなかったので触っていません。
ノーマルマップやバンプマップなどを適用して表現した方が良いかもしれません。
ノーマルマップやバンプマップなどを適用して表現した方が良いかもしれません。
メタリック、粗さを操作、設定します。
プリンシプルBSDFのお約束としてメタリックの値は0 or 1なのですが、別に0.5とかでもエラー吐いたりレンダリング時に停止したりはしません。
粗さは値を入力しても良いですが、roughness map等を指定する事もできます。(非カラーデータとする必要がある)
プリンシプルBSDFのお約束としてメタリックの値は0 or 1なのですが、別に0.5とかでもエラー吐いたりレンダリング時に停止したりはしません。
粗さは値を入力しても良いですが、roughness map等を指定する事もできます。(非カラーデータとする必要がある)
望む質感、絵柄などにもよりますが、Toonやスフィア(特にToon)を効かせるとよろしくない場合もあります。

簡単な方法としては、シェーダーエディターでMMDShaderDevノードとMmd Toon TexやMmd Sphere Texノードとの接続を[Ctrl]+[マウス右クリック移動]で切断します。

ただし、マテリアルプロパティのMMD Material項目の設定を操作すると自動的に再接続されます。ご注意下さい。
これを避けたい場合はマテリアルプロパティのMMD Material項目でToon、スフィアテクスチャの割り当てを解除するか、MMDShaderDevを開いてToonやスフィアとの接続を解除する必要があります。

[TAB]キーを押してMMDShaderDevを開き、グループ入力のToon Tex Fac、Toon Tex、Sphere Tex Fac、Sphere Texを[Ctrl]+[マウス右クリック移動]で切断します。
Base Tex Fac、Base Tex等は切断してはいけません。(ベーステクスチャが描画されなくなる)

簡単な方法としては、シェーダーエディターでMMDShaderDevノードとMmd Toon TexやMmd Sphere Texノードとの接続を[Ctrl]+[マウス右クリック移動]で切断します。

ただし、マテリアルプロパティのMMD Material項目の設定を操作すると自動的に再接続されます。ご注意下さい。
これを避けたい場合はマテリアルプロパティのMMD Material項目でToon、スフィアテクスチャの割り当てを解除するか、MMDShaderDevを開いてToonやスフィアとの接続を解除する必要があります。
- MMDShaderDevを開いてToonやスフィアとの接続を解除する場合

[TAB]キーを押してMMDShaderDevを開き、グループ入力のToon Tex Fac、Toon Tex、Sphere Tex Fac、Sphere Texを[Ctrl]+[マウス右クリック移動]で切断します。
Base Tex Fac、Base Tex等は切断してはいけません。(ベーステクスチャが描画されなくなる)
ノーマルマップやバンプマップを使って擬似的に凹凸を表現したり、ラフネスマップ(Roughness Map)で(反射の)粗さを設定したりします。
いずれのマップも、Blender上では非カラーデータ(Non-Color Data)とする必要があります。
いずれのマップも、Blender上では非カラーデータ(Non-Color Data)とする必要があります。
ノーマルマップは法線マップとも言われ、法線方向を示すマップです。
擬似的に凹凸を表現するのに使われます。青っぽいテクスチャです。
このページでは、https://cc0textures.com/のLeather 007(2k PNG)を利用させてもらいます。
”CC0 PBR Textures”等で検索すると、上記のサイト以外にもフリー(CC0)なノーマルマップ等を含む、PBR Texturesが配布されています。
Node Wranglerアドオンを有効にしておいて下さい。

[Shift]+[A]キーからベクトル→ノーマルマップを選択してノーマルマップノードを追加します。

ノーマルマップノードを選択した状態で[Ctrl]+[T]キーを押すと、Node Wranglerアドオンの機能で画像テクスチャノードやマッピングノードが自動的に接続されます。

画像テクスチャノードの開くからLeather 007からダウンロードしたLeather007_2K_Normal.pngを開きます。
画像テクスチャノードの色空間を、Non-Colorにします。

画像テクスチャノードのカラー出力ソケットをノーマルマップノードのカラー入力ソケットに接続し直します。
ノーマルマップノードのノーマル出力をノーマル入力に接続します。
擬似的に凹凸を表現するのに使われます。青っぽいテクスチャです。
このページでは、https://cc0textures.com/のLeather 007(2k PNG)を利用させてもらいます。
”CC0 PBR Textures”等で検索すると、上記のサイト以外にもフリー(CC0)なノーマルマップ等を含む、PBR Texturesが配布されています。
Node Wranglerアドオンを有効にしておいて下さい。

[Shift]+[A]キーからベクトル→ノーマルマップを選択してノーマルマップノードを追加します。

ノーマルマップノードを選択した状態で[Ctrl]+[T]キーを押すと、Node Wranglerアドオンの機能で画像テクスチャノードやマッピングノードが自動的に接続されます。

画像テクスチャノードの開くからLeather 007からダウンロードしたLeather007_2K_Normal.pngを開きます。
画像テクスチャノードの色空間を、Non-Colorにします。

画像テクスチャノードのカラー出力ソケットをノーマルマップノードのカラー入力ソケットに接続し直します。
ノーマルマップノードのノーマル出力をノーマル入力に接続します。
- ノーマルマップノードの強さからノーマルマップの強さを、マッピングノードの拡大縮小からノーマルマップの密度を調整できます。

複数のノーマルマップを適用(合成)したい場合もあるでしょう。
そういった場合は[Shift]+[A]→カラーから、RGBミックスノードを二つ追加し、係数を共に1にします。
一つめのRGBミックスノードを乗算にして画像テクスチャノードのカラーを色1、色2にそれぞれ接続し、二つめのRGBミックスノードを除算にします。
乗算にしたRGBミックスノードのカラーを二つめのRGBミックスの色1に接続します。
ノーマルマップノードの[カラー]の上にマウスカーソルを持っていき、[Ctrl]+[C]でカラーをクリップボードにコピーしたら、二つめのRGBミックスの色2の上で[Ctrl]+[V]でペーストします。
最後に、除算にした二つめのRGBミックスノードのカラーをノーマルマップノードのカラーに接続します。
一度組んだノードを何度も組み直すのは面倒ですので再利用します。
基本だけ組んでしまえば例えばモデルキャラが違ってもある程度は流用できます。(もちろんモデルごとに、ライティングごとに微調整は必要だけど)
ノードだけでなく、モデルごとに調整した.blendファイルを作っておいて作りたい動画ごとにリンクorアペンドする...といった使い方もできます。

メニューバーのファイルからリンク...かアペンド...を選択して.blendファイルを指定するか、ウインドウにD&Dしてリンクorアペンドを指定します。

リンクorアペンドで開いたら上記のようなウインドウになるのでグループノードをリンクorアペンドしたい場合はNodeTreeを開き、該当ノードを開きます。

[Shift]+[A]からグループの項目にリンクorアペンドしたグループノードが表示されているのがわかります。
このまま追加して接続すればOKです。
基本だけ組んでしまえば例えばモデルキャラが違ってもある程度は流用できます。(もちろんモデルごとに、ライティングごとに微調整は必要だけど)
ノードだけでなく、モデルごとに調整した.blendファイルを作っておいて作りたい動画ごとにリンクorアペンドする...といった使い方もできます。

メニューバーのファイルからリンク...かアペンド...を選択して.blendファイルを指定するか、ウインドウにD&Dしてリンクorアペンドを指定します。

リンクorアペンドで開いたら上記のようなウインドウになるのでグループノードをリンクorアペンドしたい場合はNodeTreeを開き、該当ノードを開きます。

[Shift]+[A]からグループの項目にリンクorアペンドしたグループノードが表示されているのがわかります。
このまま追加して接続すればOKです。
.blendファイルの中のノードなど、選択したものとリンクします。
例えばA.blendファイルのAグループノードをB.blendファイルにリンクするとします。
その状態でA.blendファイルのAグループノードを編集するとB.blendファイルにも編集が適用されます。(A.blendファイルを参照している)
ただし、リンクしたオブジェクト等はリンク先では基本的に変更できません。
例えばA.blendファイルのAグループノードをB.blendファイルにリンクするとします。
その状態でA.blendファイルのAグループノードを編集するとB.blendファイルにも編集が適用されます。(A.blendファイルを参照している)
ただし、リンクしたオブジェクト等はリンク先では基本的に変更できません。

黒柚式五劫院ミユモデルは前髪が半透明なテクスチャが利用されているのですが、ご覧の通りノイジーになってます。

こういった半透明なテクスチャが使われていて、ノイジーな場合は該当マテリアルのマテリアルプロパティからブレンドモードをアルファブレンドにします。
必要に応じて、背面を表示のチェックをONorOFFにします。

ハイフェン3モデルなど、特定のモデルは顔面や目が黒くなる場合があります。
これは照れ/頬染めモーフ等のメッシュのノーマル(法線)が逆向きだからです。
該当材質のメッシュオブジェクトを選択して頂点編集モードでノーマルを反転させても良いですが、面倒なので裏面の非表示オプションをOFFにして対処します。

治りました。

もし裏面の非表示オプションをOFFにしても治らない場合は、該当材質のメッシュオブジェクトを選択して[TAB]キーを押して頂点編集モードに入って[A]キーで全選択→トップバー下のメッシュからノーマル→反転で反転させます。
さらに裏面の非表示オプションをONorOFFしてみます。

上記の画像はボディ材質にSSSを有効にしています。
胸の辺りなどに緑っぽいアザのような色が載っています。
これはSSSを有効にしたボディ(材質)に近接する材質のマテリアル設定を変更する事で解決できます。
- スクリーンスペース屈折を有効にする

このモデルの例では、cloth材質のマテリアルプロパティから、設定→スクリーンスペース屈折のオプションを有効にします。
(レンダープロパティでスクリーンスペース反射とその中の屈折を有効にしていないと効果がありません)
- アルファブレンドにする

もう一つの方法は、cloth材質のマテリアルプロパティから、設定→ブレンドモード→アルファブレンドにします。(デフォルトではアルファハッシュです)
こちらはレンダープロパティでスクリーンスペース反射とその中の屈折を有効にしていなくても効果があります。

上記の画像は衣装や髪などのマテリアルプロパティを変更した例です。
該当材質のマテリアルプロパティから、設定→スクリーンスペース屈折のオプションを有効にするとちょっとだけマシになります。(ライティング次第だけど)
本当はポイントライトなどで顔を照らして影を飛ばす方が良いでしょう。
ライティングを弄りたくない、スクリーンスペース屈折を有効にしても暗いという場合は、ノードの放射で発光させてしまうしかありません。
当たり前ですが、発光させすぎるとホラーっぽくなります。
本当はポイントライトなどで顔を照らして影を飛ばす方が良いでしょう。
ライティングを弄りたくない、スクリーンスペース屈折を有効にしても暗いという場合は、ノードの放射で発光させてしまうしかありません。
当たり前ですが、発光させすぎるとホラーっぽくなります。

モデルモーションを読み込みます。
必ずモデルのエンプティを選択した状態で、サイドバーからMMDタブ→運動:→importで.vmdファイルを選択します。
これはmmd_toolsの仕様でメッシュオブジェクトを選択してモーションをインポートすると該当する材質のモーフアニメーションのみ、アーマチュア(ボーン)を選択してインポートするとボーンアニメーションのみインポートされるからです。
通常はモデルのエンプティを選択してモーフ類とボーンアニメーションの両方を読み込みます。

.vmdファイルの選択ウインドウ表示されます。
拡大縮小はモデルのインポート時に指定した値と同じでないといけません。(今回は0.08)
余白は物理演算が暴れる際に指定します。(今回は0にしています)

3Dビュー上で[Shift]+[A]キーを押してカメラオブジェクトを追加します。
カメラオブジェクトを選択した状態でサイドバーからMMDタブ→運動:→importで.vmdファイルを選択します。

こちらもモデルモーション同様、拡大縮小をモデルのインポート時の値と同じにします。
モデルモーションを読み込む際に余白を指定した場合は同じ値を入力します。
- TIPS:カメラモーションではなくモデルモーションをカメラに読み込ませるとMMDデフォルトのカメラと同様の位置や焦点距離になる。
カメラモーションを読み込むとMMD_Cameraというエンプティが作られます。カメラオブジェクトはエンプティの子になります。

現状では再生しても胸や髪が揺れません。
MMDと違ってBlenderでは物理演算はベイク(焼き込み)する必要があります。
まずはMMDの物理構造をBlenderの物理演算に対応させます。
モデルのエンプティを選択してサイドバーからMMDタブ→Physics:→Buildでビルド(変換)します。

ベイクしただけでは上記の画像のように物理が置いてけぼりされてしまいます。

ベイク(焼き込み)します。
シーンプロパティ→リジットボディワールド→キャッシュ→ベイクでベイクします。
(ベイクしても物理がおかしい場合は全物理演算をベイクや、いったんベイクを削除してもう一度ベイクしてみる)
※モーション読み込み前にBuildした場合、物理演算がおかしな挙動になるので、いったんクリーンしてからモーション読み込み→Buildする
- TIPS:[ESC]キーでベイクを中断できます。
まずは音源を用意します。
モーション配布元の動画から入手するのが音ズレもなく良いのですが楽曲によっては著作権等の理由で利用できないものもあります。ご注意ください!!

トップバーのScriptingの右にある+ボタンをクリックし、Video Editing→Video Editingを選択します。

ビデオシーケンサー(画面下部の領域)のタイムライン上に音源データをD&Dします。
タイムライン上の音源はマウスで位置やトラックなどを変えられます。
キーボードの[space]キーを押して再生してみます。
右下、ストリップより調整→サウンド→ボリュームで音量を調整できます。
音がズレている場合は波形を表示オプションで波形を表示させて調整するといいかもしれません。
モーション配布元の動画から入手するのが音ズレもなく良いのですが楽曲によっては著作権等の理由で利用できないものもあります。ご注意ください!!

トップバーのScriptingの右にある+ボタンをクリックし、Video Editing→Video Editingを選択します。

ビデオシーケンサー(画面下部の領域)のタイムライン上に音源データをD&Dします。
タイムライン上の音源はマウスで位置やトラックなどを変えられます。
キーボードの[space]キーを押して再生してみます。
右下、ストリップより調整→サウンド→ボリュームで音量を調整できます。
音がズレている場合は波形を表示オプションで波形を表示させて調整するといいかもしれません。
トップバーからLayoutタブに戻り、キーボードの[Space]キーを押して再生してみます。
この際、テンキーの[0]キーを押すとカメラからの視点になります。

右下の出力プロパティから寸法→解像度から解像度を設定できます。
寸法の右の短冊状のアイコンをクリックするとプリセットを呼び出せます。(ただし、プリセットから解像度を変更した場合はフレームレートを30FPSに設定し直しましょう)
出力項目から出力先の指定などが行えます。

出力の項目でファイルフォーマットをFFmpeg動画にした場合、エンコーディングという項目が表示されます。
エンコーディングの右の短冊状のアイコンをクリックするとプリセットを呼び出せます。

メニューバーからレンダー→アニメーションレンダリングを選択するか、[Ctrl]+[F12]キーを押してレンダリングを開始します。
レンダリングには動画の長さやマシンスペックにもよりますが数時間かかります。
レンダリング中にキーボードの[ESC]キーを押すことでレンダリングをキャンセルできます。
この際、テンキーの[0]キーを押すとカメラからの視点になります。

右下の出力プロパティから寸法→解像度から解像度を設定できます。
寸法の右の短冊状のアイコンをクリックするとプリセットを呼び出せます。(ただし、プリセットから解像度を変更した場合はフレームレートを30FPSに設定し直しましょう)
出力項目から出力先の指定などが行えます。

出力の項目でファイルフォーマットをFFmpeg動画にした場合、エンコーディングという項目が表示されます。
エンコーディングの右の短冊状のアイコンをクリックするとプリセットを呼び出せます。
- TIPS:他の動画編集ソフト等に持っていくならファイルフォーマットを”AVI Raw”か、FFmpeg動画でプリセットからh264 in MP4にして出力の品質をロスレスにします。(ただし、ファイルのサイズがかなり大きくなってしまいます)

メニューバーからレンダー→アニメーションレンダリングを選択するか、[Ctrl]+[F12]キーを押してレンダリングを開始します。
レンダリングには動画の長さやマシンスペックにもよりますが数時間かかります。
レンダリング中にキーボードの[ESC]キーを押すことでレンダリングをキャンセルできます。
タグ
最新コメント