#2 Ray-MMDに苦闘中のそこの君、諦めるにはまだ早いぞ
It is too early to give up using Ray-MMD
今回は次のような動画を制作しますので、一緒に頑張っていきましょう😊
このチュートリアルは、より多くの人が自分の作りたいものを自由に作れるようになると良いなと思ったことをきっかけに執筆が開始されました。
この記事を読んだだけで綺麗な映像を作れるようになるわけではありませんが、Ray-MMDの基礎習得の一助にはなるかと思われます。
制作方法は人それぞれではありますが、一連の手順を通して、私がどのような手順と方法を用いているのかを学んで頂けると嬉しいです。
このチュートリアルでは「視覚的にどう見えるか」という点を重点において解説を進めていきます。
そのため、実際には異なる効果であったり、意味を持っている可能性も大いに存在します。
これは私自身が3DCGに関する専門的な知識を有していないためであり、実際に正しい情報であることは担保できかねます。
可能な限り正確性を高める努力 はしていますが、どうしても至らない点はありますので、ご了承ください。
また、誤字脱字を発見した際は私のTwitterアカウントまでリプライやメンションでお知らせください。
このチュートリアルでは次のものが必要なので、事前にダウンロードおよび導入を行ってください。
また、各配布物における規約を記したREADMEは必ず目を通すようお願いいたします。
(敬称略)
配布物 | 制作者 | 配布先URL |
MikuMikuDance_v932x64 | 樋口M | |
MMEffect_x64_v037 | 舞力介入P | |
PmxEditor_0257 | 極北P | |
選択頂点の法線をZ軸方向に向けます。1.2 | 大葉真琴 | |
ray-mmd-1.5.2 | Rui | |
ColorGrading-master | Rui | |
AutoLuminous4 | そぼろ | |
Sour式鏡音リンVer.2.01 | Sour暄 | |
イラスト風瞳テクスチャ2 | ミコト | |
【明度下げ版】ガラス反射スフィアマップ | roz | |
エゴロックのモーションデータ | 粉吹きスティック | |
さる式お米ステージver1.0 | さるる~ |
今回も前回と同様に、最初にチュートリアル用フォルダと整理用のフォルダを作成することにします。
このステップは必須ではありませんが、行ったことを前提に解説を進めていきますので作成しない場合は適宜保存場所を読み替えてください。
デスクトップに
RayMMDTutorials
フォルダを作成しその中にTutorial2
フォルダを作成します。Tutorial2
フォルダの中に次の6つのフォルダを作成してください。フォルダ名 | 配置しておくもの | 用途 |
effects | ray-mmd-1.5.2, ColorGrading-master, AutoLuminous4 | MMEエフェクトを配置する |
exports | なし | 出力する画像、動画を保存する |
models | Sour式鏡音リンVer.2.01 | モデルデータを配置する |
motions | エゴロックのモーションデータ | モーションデータを配置する |
music | エゴロックの音楽(.wav)ファイル | 音源データを配置する |
pmm | なし | pmmファイルを保存する |
stages | さる式お米ステージver1.0 | ステージのファイルを配置する |
自分の見ている動画の多くでは、Sour式鏡音リンの瞳のテクスチャは改変されています。
私自身その瞳が好みなので、PMXEditorの使用方法の学習も兼ねて改変してみることにしましょう。
最初に
Models/Sour式鏡音リンVer.2.01
の中にイラスト風瞳テクスチャ2
のフォルダを配置しておきます。お好きな画像編集ソフトを用いて
eye.png
の瞳の部分をイラスト風瞳テクスチャ2
の14.png
に置き換えてください。次にPMXEditorを開き
Sour式鏡音リンVer.2.01/Black.pmx
を読み込みます。Pmx編集ウインドウで
材質
タブを選択した状態で、リストにある2: 目
, 3: 目白
, 4: 瞳
,5: HL
, 8: グル目
, 23: 涙
をCtrlキーを押しながらクリックして複数選択を行い、Texと表記されているラベル右の水色のボタンをクリックしてTexViewウインドウを開きます。TexViewのメニューバーのファイルからテクスチャ読み込みを選択し
Sour式鏡音リンVer.2.01/tex/eye.png
を開きます。メニューバーのファイルから現在のテクスチャへ変更を選択し確認ではいをクリックします。
次にテクスチャが改変されたことを確認しますが、もしこの時点でPmxViewウインドウ(以降PmxViewと表記)が表示されていない場合はPmx編集ウインドウのメニューバーの表示>モデル表示を有効にしてPmxViewを開いてください。
多分最初はボーンが表示されているので、PmxView左下の水色の丸アイコンをクリックしてボーンを非表示にしましょう。
PmxViewで変更が反映されていることを確認し、Pmx編集ウインドウで
Black.pmx
を上書きしてください。もともとのデータでは手のグローブとソックスは材質
14: Black
として一緒になっていますが、それぞれを異なる見た目にしたい(異なるマテリアルを割り当てたい)ので少し手間ではありますが、それらを2つの材質に分割することとします。PmxViewのメニューバー下にある絞をクリックし、絞込み表示(マスキング)ウインドウを開いて
頂点/材質
タブを選択した状態でラジオボタンの材質を選択し、右にある反ボタンをクリックしてすべての材質を非表示にし、14: Black
にだけチェックを入れます。PmxViewでメニューバー下にある頂と面を選択した状態で、左側のグローブだけが収まるようにカーソルをドラッグして範囲選択を行います。
PmxViewのメニューバーの編集>選択面から新規材質へ取り出しを選択し確認ではいをクリックします。
Pmx編集ウインドウで
材質
タブを選択し左側にあるリストを最下部までスクロールすると、新規材質1
を見つけることができるので、同様の手順を踏んで画面右側のグローブ新規材質2
、左右のソックスを新規材質3
として取り出しましょう。左右のグローブは別の材質である必要はないので、ひとつの材質にまとめてしまいましょう。
PmxViewで
材質
タブのリストにある新規材質1
と新規材質2
をCtrlキーで複数選択し、右クリックメニューから材質の結合を行います。PmxViewで絞込み表示(マスキング)ウインドウで
新規材質1
にのみチェックを入れると左右のグローブだけが表示されるので確認してみましょう。次に新規材質という名前では何の材質か分からないので名前を変更します。
Pmx編集ウインドウで
材質
タブを選択し、リストで新規材質1
を選択した状態で材質名とあるラベル隣のフォームにBlack3
と入力します。一度他の材質を選択すると表記が切り替わるので、同様の手順を踏んで
新規材質3
をBlack4
と変更しましょう。名前を変更したらリストの下にある矢印ボタンを使って材質の順番を
Black
, Black2
, Black3
, Black4
にしましょう。私自身あまり理解できていないため説明はできませんが、法線というものが存在します。
簡単に言えば法線には向きがあり、その向きを変えることで影の付き方を調整することができます。
Ray-MMDを少し触った方なら、顔の影のせいでモデルが不気味に見えてしまった経験があるのではないでしょうか?
今回は
選択頂点の法線をZ軸方向に向けます。
というPMXEditorのプラグインを用いてその問題を解決することにします。
プラグインの導入
プラグインを使用するにはまず導入を行う必要がありますが、これは非常に簡単です。
faceforward1.2.zip
を解凍したらPmxEditor_0257/_plugin/User
にフォルダごと移動します。Pmx編集ウインドウのメニューバーにて、編集>プラグイン>Userに
faceforword1.2
が表示されていれば成功です。
プラグインを使用する
プラグインを導入したらPmxViewのメニューバー下にある絞をクリックし、絞込み表示(マスキング)ウインドウを開いて
頂点/材質
タブを選択した状態で材質のラジオボタンにチェックを入れ、すべての材質のチェックボックスのチェックを外して非表示にします。0:face
にのみチェックを入れ、ウインドウ左下にある赤い三角アイコンの右2つをクリックして法線と選択した法線を表示するようにします。PMXView内で顔全体が収まるようカーソルをドラッグすると、法線の色が変化し範囲選択されたことが分かります。
その状態でPmx編集ウインドウのメニューバーにある編集からプラグイン>User>faceforward1.2>faceforward64を選択します。
ウインドウにて中央に向ける割合を
80%
に変更し、バイアスY
を0
にし、Z軸で前を向いているものだけ対象にするにチェックを入れた状態で実行ボタンをクリックし、完了したらメニューバーのファイルから名前を付けて保存します。後で80%法線を変更したと分かるよう
Black.normal.fixed.80.pmx
という名前にすると良いでしょう。簡単な背景としてさる式お米ステージver1.0を使用しますが、もともとのサイズが少々大きいので小さ くします。
PMXEditorを起動して、Pmx編集ウインドウのメニューバーのファイル>インポートから
さる式お米ステージver1.0/さる式ごま塩ステージ.pmx
を選択、あるいはpmxファイルをPmxViewに直接ドラッグ&ドロップすることで、読み込み時に追加選択/サイズ調整ウインドウが表示されます。このウインドウ内のサイズのグループにおいて
任意
とあるラジオボタンを選択し隣のフォームに0.5
と入力しOKをクリックします。カメラを引いてみてRiceの後ろの白い背景部分がグリッドに収まるぐらいのサイズになっていれば大丈夫です。
ファイルから名前を付けて保存を選択し、
さる式ごま塩ステージ.halfsize.pmx
という名前で保存しておきましょう。Step 1にて必要なモデルの改変を行ったので、さっそくRay-MMDを使った制作の準備を進めていくことにしましょう。
まずはMMDを起動して
ray-mmd-1.5.2
フォルダの中にあるray.x
をドラッグ&ドロップで読み込み画面が黒くなるのを待ち、黒くなったらメニューバーの表示
よりアンチエイリアス
をオフにして背景を白に戻します。
今回は夜空を背景にしたいので
ray-mmd-1.5.2/Skybox/Time of night
にあるTime of night.pmx
を読み込みます。このTime of Night.pmx
は背景や光源としての役割を果たすSkybox
のひとつで、これの他にはSky Hemisphere
やTime of day
といったものがあり、それぞれ異なった特徴を持ちますが長くなるので今回は割愛させて頂きます。
次にMMDのウインドウ右上にある
MMEffect
からエフェクトファイル割当
を選択し、エフェクトファイル割り当てウインドウ(今後はMMEのウインドウと表記)を表示したらMaterialMap
タブを選択します。初期状態では
Time of night.pmx
に`material2.0.fx
というファイルが割り当てられていまが、Skyboxにはそれ用のfxファイルを割り当てなければ正常に描画されません。そのため
Time of night.pmx
にはray-mmd-1.5.2/Materials
にあるmaterial_skybox.fx
を割り当てます。
fxファイルを割り当てた後に何の操作もせずMMEのウインドウを閉じると変更が保存されず元の状態に戻ってしまいます。
こうした事態を避けるためにも、割り当てを変更したら右下の更新ボタンをクリックして変更を保存するようにしましょう。
更新ボタンはfxファイルの割り当てを変更するとクリック可能になり、最新の状態、つまりは最後の更新から変更が無い場合は無効になります。
OKボタンも更新と同様に変更を保存しますが、こちらはMMEのウインドウを閉じてしまいます。
再度開くのも面倒なため、私は基本的に更新ボタンを使用しMMEのウインドウは常に表示させています。
背景となるSkyboxを読み込み適切なfxファイルを割り当てたので、次はモデルを読み込むことにしましょう。
Sour式鏡音リンVer.2.01/Black.normal.fixed.80.pmx
を読み込みます。モデルを読み込むと自動的にボーン操作パネルの選択ボタンが選択された状態になりますが、ボーンが邪魔でモデルがよく見えないので選択解除します。
読み込んだ初期の状態では全体的に白っぽく、前髪の描画もおかしいのでまずはこの問題を解決します。
MMEのウインドウで
Main
タブを選択し、Black.normal.fixed.80.pmx
に対してray-mmd-1.5.2/Main
にあるmain.fx
を割り当てます。
全体的には正しく描画されるようになりましたが、まだ前髪と目のあたりがおかしいですね。
この問題は
EnvLightMap
タブでTime of night.pmx
に対しray-mmd-1.5.2/Skybox
にあるskylighting_none.fx
を割り当てると解決できます。
初期状態では
EnvLightMap
タブのTime of day.pmx
には何のfxファイルも割り当てられておらず、(none)
になっているかと思います。試しにこの状態でチェックを付けてみるとモデルがすごくピンクになるわけですが、多分一度ぐらいはこのミスをやらかすのでこうした状況に陥ったら
EnvLightMap
を確認するようにしましょう。
ちなみに既に
skylighting_none.fx
を割り当てていた場合は左下の解除ボタンで割り当てを解除できます。現在はMMDの照明操作パネルで操作できるライトが当たっている正面部分以外が真っ黒になってしまっています。

これは他に光源が存在しないことが原因なので、モデル全体を照らしてくれる光源が欲しいところですね。
ここで思い出してほしいのが先ほど背景として読み込んだ
Time of night
で、先述した通り光源としても機能します。今回はこれを光源として用いることにし、そのためにライティング用のfxファイルを割り当てましょう。
EnvLightMap
タブでTime of night.pmx
に対してray-mmd-1.5.2/Skybox/Time of night
にあるTime of lighting.fx
を割り当てます。すると先ほどとは一転して明るくなり後ろから見ても真っ黒ではなくなりましたね。
しかしながら、私個人としては
Time of night
のTime of lighting.fx
はあまり好みではありません。というのもTime of nightに限らず光源はモデルに対し光源の色の影響を大い与え、今回の場合は全体的に青白くなってしまうからです。
現実において何かしらの物を赤い光で照らせば赤く、青い光で照らせば青く見えるのと同じで腕の肌の色を見ればそれが分かるでしょう。
どのSkyboxも表情操作パネルの各項目で色味等を調整できますが、それは私にとってはとても面倒なことでした。
少なくとも今の段階では単に明るさを提供してくれればよいので、今回は異なるSkyboxのfxファイルを利用します。
EnvLightMap
でTime of night.pmx
に対しray-mmd-1.5.2/Skybox/Sky Hemisphere
にあるSky with lighting.fx
を割り当てます。
今割り当てた
Sky with lighting.fx
はSky Hemisphere
という単純な白い背景のSkyboxのためのライティング用fxファイルですが、このように異なるSkyboxのものを利用することもでき、現在は先ほどとは違って白い光で照らされている状態にあります。fxファイルを割り当てたら必ず更新ボタン等で変更を保存することを絶対に忘れないようにしてください。
ここまでが今回のチュートリアルで必要となるRay-MMDのセットアップ作業になります。
慣れればすぐに終わらせることができますが、最初はやり直すのも大変でしょうのでここで一度保存しておきましょう。
Step 0で作成した
pmm
フォルダ内にproject01.step2.pmm
という名前で保存してください。セットアップが終わったので次はライティングの設定を行いたい所ですが、その前にいくつかやることがあります。
まず、床のグリッドは不要なのでこれを消してしまいましょう。
メニューバーの表示から座標軸表示をクリックすると消えますね。
で は次に、全体的に彩度が低いようなのでそれを調整することにしましょう。
ray-mmd-1.5.2
フォルダ内にあるray_controller.pmx
を読み込みます。読み込むと自動的にボーン操作パネルの選択ボタンが選択された状態になりますがこれを選択解除します。
Step 2では単にボーンの表示が邪魔だったから消したわけですが、今回は理由が異なります。
選択ボタンをクリックして選択と解除を繰り返すと選択された状態では影が付かないことに気が付きますね。
このように、選択された状態では本来とは異なる表示になるので常に解除することを忘れないでください。
モデルを読み込んだり切り替えると勝手に選択状態になりますが、その度に必ず解除してください。
前置きが長くなりましたが本題に入ることにします。
表情操作パネル右下で
Saturation+
を選択しスライダーを操作するか直接値を入力してからEnterで値を0.350
にします。
彩度が上がったことを確認したらセレクトボックスの上にある登録ボタンをクリックして変更を登録します。
この操作を行わないと変更が保存されず、フレームを移動した際に変更前の状態戻ってしまうので注意してください。
この操作は基本であり、今後はあまり書かないので値を変更したら自身で適切に登録を行ってください。
今回カメラは使用せずに正面固定とし、背景用にステージを読み込むのでSkyboxは完全に隠れてしまいます。
ただ、
Time of night
といったSkyboxの面白さを知るいい機会なので、一項目だけ値を変えてみましょう。Time of night
を選択し、表情操作パネル左上にあるRayleighHeight-
の値を0.470
にしてみます。
これだとなんだか宇宙にいる感じがして素敵ですね!
Time of day
とTime of night
の2つについては空をシミュレーションするSkyboxのようなので、時間や気力に余裕のある人はこのチュートリアルを終えた後に、いろいろと値を変えて遊んでみると楽しいかもしれませんね。では、ここでこれ以上語ることは無いのでセレクトボックス上の登録ボタンで登録して次に進みましょう。
後ろからの明るい光によって綺麗に輝いている動画を目にしたことはありませんか?
それを実現する方法はいくつもありますが、今回は簡単にMMDの照明を使って実現することにしましょう。
まず、次の表に従って照明操作パネルの各項目の値を設定してください。
項目名 | 値 |
赤 | 154 |
緑 | 154 |
青 | 154 |
X | 0.3 |
Y | -1.0 |
Z | -0.7 |
Zの値を変更したところで背景に流れ星が見えるようになりましたがこのように角度で背景が変化するSkyboxもあります。
設定できたらカメラを動かして後ろからモデルを見てみると、正面と比べ背面の方が若干明るいことがわかりますね。

しかし、まだまだ明るさ不足なのでそれを調整していきたいところです。
ただその前に表情操作の時と同じく照明操作パネル下部にある登録ボタンをクリックして登録しておく必要があります。
登録したら
ray_controller
を選択し視点パネルの正面ボタンを使って正面視点にします。おかしいですね?
先ほど照明の角度を調整したにも関わらず、最初と同じ角度で照らされ背景の流れ星もなくなってしまいました。
これはメニューバーの表示にあるモデル編集時カメラ・照明追従が無効になっているためなので、クリックして有効化します。
これでモデル操作パネルで何かモデルを選択しているときでも、先ほど設定した角度通りにライトが当たるようになりました。

ray_controller
で表情操作左上にあるSunLight+
の値を1.000
にしてみましょう。これはMMDの照明の明るさを上げるもので背面を見ると効果がよく分かりますね。

次に左下にある
BloomThreshold
の値を0.350
にすると、ブルームがかかってそれとなく綺麗な感じになりました。
BloomThreshold
はブルームがかかるしきい値を決めるもので、値が大きいほどかかりやすくなります。彩度を上げた際にも書きましたが、値を変更したら必ずセレクトボックス上にある登録ボタンをクリックしましょう。
今回の場合は左上と左下の両方でクリックする必要があります。
矢印キーでフレーム0と1を行き来して表示が変わらなければちゃんと登録できています。
また、現在のフレームが1になっている場合はちゃんと0に戻しておきましょう。
後ろから見るとブルームがかかるようになりましたが正面は全然ですね。
明るさが不足してい るので追加のライトを正面から当てることにしましょう。
ray-mmd-1.5.2/Lighting
にあるDirectionalLight.pmx
を読み込みます。同フォルダ内にある様々なpmxファイルを見れば分かるように、Ray-MMDには様々なライトが存在します。
それぞれ異なった性質や特徴を持ちますが、それの話はまた別の機会にしましょう。
今回使用する
DirectionalLight
は位置に関係なく向きのみによってライトの当たり方が変わるという性質があるので、これはMMDの照明操作の照明と同じようなものと考えても良いかもしれません。DirectinalLight
を選択し、次の表の通りに値を設定します。項目名 | 値 | 効果 |
R+ | 0.200 | ライトのRGB成分のうちR成分を上げる |
G+ | 0.200 | ライトのRGB成分のうちG成分を上げる |
B+ | 0.200 | ライトのRGB成分のうちB成分を上げる |
Intensity+ | 0.140 | ライトの明るさ(強度)を上げる |

値を変更したら登録する必要があるので、今回は上下左右で4つの登録ボタンをクリックする必要がありますね。
次にボーン操作パネルで選択ボタンをクリックして有効化し、ビューポートにおいて
DirectionalLight
の光源位置
を選択した状態で角度X
のフォームの値を14.9
に設定して、ボーン操作パネルで登録をクリックしてください。
不要な球を非表示にする
DirectionalLightの実体は足元にある球なわけですが、これが見えている必要はありませんね。
MMEのウインドウで
Main
とMaterialMap
タブの両方でDirectionalLight.pmx
のチェックを外すと非表示にできます。非表示にしたら、しっかりと更新をクリックして変更を保存しておきましょう。
DirectionalLight
を追加したことで明るくなったものの白っぽくなってしまいました。また、Skyboxの光(EnvDiffLight)は肌の影を消してしまいがちなので、これらの問題を解決します。
モデル操作パネルで
Time of night
を選択し、表情操作パネル右上のEnvDiffLight-
の値を0.630
にします。
これで全体的に白っぽいのと、肌の陰影の消失を解消することができましたね。
先ほど
EnvDiffLight-
で調整したもののまだ全体的に明るいのでもう少し暗くしたいですね。モデル操作パネルで
ray_controller
を選択しパネル左上のSunShadowV-
の値を0.340
にするといい感じになります。SunShadowV-
にはMMDの照明によってできる影の明度を下げる効果があります。
これは気づきにくいですが、
DirectionalLight
の光は正面斜め上から当たっているのでその角度的にスカートの下の脚や髪などの光が遮られている部分には影ができるはずですね。初期状態では影が付かないのでそれが付くようにし、自然な見た目にしてみます。
MMEのウインドウで
LightMap
タブを選択しDirectionalLight.pmx
に対しray-mmd-1.5.2/Lighting/DirectionalLight/Default
にあるdirectional_lighting_with_shadow.fx
を割り当てます。この時、ボーン操作パネルの選択ボタンが選択状態になっていたらそれをクリックして選択解除してください。

fxファイルを割り当てたことにより影が描画されるようになりましたが、何だかギザギザしていますね。
これはステージを読み込むことによって解決することができます。
stages/さる式お米ステージver1.0
にあるさる式ごま塩ステージ.halfsize.pmx
を読み込みましょう。
ここまでにそれなりの作業を行ってきたので、しっかりと保存しておきましょう。
名前は
project01.step3.pmm
としておきましょう。Step 3の最後で背景用のステージを読み込むついでに
DirectionalLight
の変なギザギザした影を直すことができました。Step 4では
ray_controller
のBloomThreshold
で設定したブルームのせい で床が眩しいので、それを解決します。今回は少しfxファイルを書き換える必要がありますが、1行だけで済むので安心してください。
ray-mmd-1.5.2/Materials
にあるmaterial_2.0.fx
を同フォルダ内に複製して、名前をstage.fx
に変更しましょう。MMEのウインドウで
MatrialMap
タブを選択しさる式ごま塩ステージ.halfsize.pmx
を選択した状態で右クリックからサブセット展開を行い材質2: 布
に対して先ほど作成したstage.fx
ファイルを割り当てます。次にfxファイルを開き80行目のコードを次のように変更して保存します。
80行目(編集前)
const float occlusion = 1.0;
80行目(編集後)
const float occlusion = 0.35;

どうにも
occlusion
は光を吸収する性質でも持つのか、明るさを抑えることができるようですね。本来の効果や使い方とは異なるかもしれないので気になる方は後でぜひ調べてみてください。
それでは、これで無駄に明るい問題を解決できたので次は不要な壁を非表示にすることにします。
Main
タブとMaterialMap
タブの両方で0: 壁
のチェックを外すと非表示にできます。ただ、ステージの壁はカメラを引かないと見えないと思うのでカメラを引いて確認すると良いでしょう。
忘れずに更新ボタンをクリックしましたか?
スカートの下の脚には影があるわけですが、この影がもう少し暗いと自然な見た目になるような気がします。
これは
ray_controller
で左上のSSAO+
の値を0.330
にすることで実現できます。SSAOはモデルにそれっぽい影を作ってくれるもので、
SSAO+
の数値を上げることにより影を濃くすることができます。
Step 4での作業内容は少ないですが、クラッシュによるデータ喪失を回避するためにもこまめな保存は大切です。
project01.step4.pmm
という名前で保存しておきましょう。このステップでは目のハイライトを光らせ、瞳に光沢を表現するスフィアを適応してみます。
まずは次の表を参考に
Sour_Rin_Black
の右下にある3つの項目の値を変更し、変更するごとに登録してください。項目名 | 値 |
瞳1off | 1.000 |
瞳2off | 1.000 |
HL2 | 1.000 |

目のハイライトはいくらか光っていると見栄えが良いように感じますね。
MaterialMap
タブでBlack.fixed.80.pmx
を選択してサブセット展開を行い材質5: HL
にray-mmd-1.5.2/Materials/Emissive/Fixed Color x4
にあるmaterial_albedo_x4.fx
を割り当てます。
ray-mmd-1.5.2/Materials/Emissive
内の各フォルダにあるfxファイルは発光を表現するためのもので、末尾の数字が大きいほど明るくなります。また、この
material_albedo_x4.fx
は材質の色と同じ色で発光させているように見せるためのものです。完全に白く光らせたい場合は
material_white_x4.fx
を使用するとできますが、私は前者の方が好きなので今回はそちらを使用します。
スフィアは光沢や反射を表現するために用いられるもので、角度によって見え方が変化します。
準備として
【明度下げ版】ガラス反射スフィアマップ
を4076063.png
という名前でray-mmd-1.5.2/Main
に保存します。ではさっそく、瞳にスフィアを適応するためのfxファイルを簡単に作成していきましょう。
同フォルダ内にある
main.fx
を複製しmain_ex_with_sphmap_eye.fx
という名前に変更します。そして次のようにコードを書き換えてください。
30行目
#define MATCAP_MAP_FROM 1
32行目
#define MATCAP_MAP_FILE "4076063.png"
保存が完了したらMMEのウインドウの
Main
タブで4: 瞳
にmain_ex_with_sphmap_eye.fx
を割り当てます。次の画像の通りになっていれば成功です。

この少女の瞳の輝きは、失わせるに はあまりにも惜しいので
prject01.step5.pmm
という名前で保存しておきましょう。これを書き始めた当初は、最初にマテリアルの割り当てを行う方が楽しくて良いかと思ったのですが、自分が制作したときはライティングの設定をした後にマテリアルを割り当て、そこからさらにライティングの微調整をしていたことを思い出しました。
また、Step 2の最後に書いた通りライトはモデルの色に影響を与えるので先にライトの調整をすると修正が減ると思います。
こうしたこともあり今の順番になっているわけですが、そのせいで一番の楽しみをお待たせしてしまいましたね。
ようやく皆様が待ち望んでいたであろうマテリアル割り当ての時間です!
各材質に様々なマテリアルを割り当てることで、発光や反射に滑らかさ等々を表現できることがRay-MMDの最大の楽しみと言えるでしょう。
Ray-MMDには初めから用意されているfxファイルが数多くあるので、それを使用したり改変する場合が多いかと思います。
しかし
ray-mmd-1.5.2/Materials/Editor
フォルダ内には様々な種類のEditorがあり、それを利用することもできます。Editorはそれのためのfxファイルとpmxファイルの2つを組み合わせて使用し、用途に応じて使い分けます。
最も一般的なStandardを例にすると、
material_editor_1.pmx
とmaterial_editor__1.fx
の2つを組み合わせて使用します。説明を聞くよりも実際に使ってみた方が早いので、さっそく試していきましょう。
まずは髪のマテリアル割り当てから始めることにしましょう。
今回はAnisotropicという種類のEditorを使用します。
MMEのウインドウで
13: hair
に対してray-mmd-1.5.2/Materials/Editor/Anisotropic
にあるmaterial_aniso__1.fx
を割り当てます。すると髪の色がほんのわずかに暗くなった気がしますが、正直よくわかりませんね。
今度は値を調整するために
material_aniso__1.fx
に対応するpmxファイルを読み込みます。
Editorのfxファイルに対応するpmxファイルは同じフォルダに入っているので、見つけるのは容易でしょう。
今回は
ray-mmd-1.5.2/Materials/Editor/Anisotropic
にあるmaterial_aniso_1.pmx
を読み込むことになります。Editorのpmxファイルを読み込むと、表情操作パネルにてfxファイル内の値を設定できます。
少し具体的に話すとEditorのfxファイルは対応するpmxファイルの表情操作の値を参照します。
そのことを確認するためにも
Aniso_1
を選択した状態で次の表に従って値を設定してみましょう。項目名 | 値 | 効果 |
AlbedS | 0.07 | 彩度を上げる |
Smoothness | 0.55 | 滑らかさを上げる |

Editorのfxファイルの書き換え
先述したようにEditorには様々な種類が存在し、それぞれ特徴が異なるので用途に応じて使い分けることになります。
表情操作パネル左下の
CustomA
を含めた6つの項目については少々特殊なものになっていて、同じCustomA
という名前でもEditorの種類によって効果が異なり視覚的な差異も生じます。今回使用したAnisotropicでは
Smoothness
の値を0.55
に設定し、カメラを顔に近づけた状態でCustomA
の値を変化させると、数値が1.000
に近づくにつれ若干光の反射の仕方が変わります。このチュートリアル記事を書こうと決める前は単にこの変化を楽しんでいただけなのですが、ある時fxファイルを間違えたときに面白いことができることに気が付きまし た。
CustomA
の値を0.000
にし登録したら、次のようにmaterial_aniso__1.fx
を書き換え保存してみてください。95行目
#define EMISSIVE_ENABLE 0
121行目
#define CUSTOM_B_MAP_FROM 1
125行目
#define CUSTOM_B_MAP_FILE "../../_MaterialMap/shift2.png"
ファイルを書き換えて保存すると髪に若干線が入るようになったことに気が付くと思います。

モデル操作パネ ルで
Aniso_1
を選択し左下のCustomBLoops
の値をスライダーを動かし0.800
にしてみましょう。数値が上がるにつれて線が細かくなり本物の髪のようになりましたがあまり目立たなくなってしまいましたね。

ここで
CustomA
の値を同じくスライダーを動かして1.000
にしてみるとはっきりと分かるようになりました。
ただ、少々主張が強すぎる気がするので
0.900
に下げるといい感じになるかと思います。
これは
Anistropic
というEditorの性質であり、次のステップで服に割り当てるCloth
というEditorでは同様の結果にはなりません。そのため、自分が何をしたいのかといった目的から適切なものを選択する必要があります。
簡単にAnistropic
だからと説明し ましたが、実際にはray-mmd-1.5.2/Materials/Editor/Anisotropic
内の各fxファイルの109行目
の#define CUSTOM_ENABLE
の値が3
であるためです。CUSTOM_ENABLE
にはいくつかの値を設定でき、指定した値によって効果が変化します。
今度は服に
Cloth
という名前のEditorのfxファイルを割り当てて調整していきましょう。まずは次の表の通りにEditorのfxファイルを割り当ててから対応するEditorのpmxファイルを読み込みます。
読み込むpmxファイルは
ray-mmd-1.5.2/Materials/Editor/Cloth
にあるmaterial_cloth_1.pmx
からmaterial_cloth_5.pmx
までの5つです。材質名 | ファイル |
Black | Materials/Editor/Cloth/material_cloth__1.fx |
Black2 | Materials/Editor/Cloth/material_cloth__1.fx |
Black3 | Materials/Editor/Cloth/material_cloth__2.fx |
Black4 | Materials/Editor/Cloth/material_cloth__3.fx |
Yellow | Materials/Editor/Cloth/material_cloth__4.fx |
Yellow2 | Materials/Editor/Cloth/material_cloth__4.fx |
Yellow3 | Materials/Editor/Cloth/material_cloth__4.fx |
pants | Materials/Editor/Cloth/material_cloth__5.fx |
fxファイルの書き換え
初期状態ではfxファイルを割り当てても、凹凸を表現し立体的に見せるための
ノーマルマップ
というものを読み込むようになっていません。そのため少し大変ではありますが、
material_cloth__1.fx
からmaterial_cloth__5.fx
までのfxファイル5つを書き換える必要があります。次のように書き換えてください。
31行目(編集前)
#define NORMAL_MAP_FROM 0
31行目(編集後)
#define NORMAL_MAP_FROM 1
34行目(編集前)
#define NORMAL_MAP_FILE "normal.png"
34行目(編集後)
#define NORMAL_MAP_FILE "_MaterialMap/normal.png"
31行目
と34行目
を書き換えてから保存すると、次のようなエラーが表示されることでしょう。
これは当然のことで、そもそも読み込むように指定したファイルがまだ存在しないのです。
なぜ先にファイルを用意しないのかというと、指定したファイル名を間違えたり、指定したファイル がそもそも無いがためにこうしたエラーを起こすことは度々あり、そうした場合の対処法を知ってもらいたかったためです。
エラーメッセージを読むと
_MaterialMap/
フォルダ内のnormal.png
というファイルを読み込むのに失敗したとありますね。確かにエクスプローラーを見ても
material_cloth__1.fx
があるフォルダには画像どころかフォルダすらありません。これは単に用意すれば解決でき、Ray-MMDにはノーマルマップがいくつか同梱されているのでそれを利用しましょう。
ray-mmd-1.5.2/Materials
に_MaterialMap
という名前のフォルダがあるので、そのフォルダをコピーしてray-mmd-1.5.2/Materials/Editor/Cloth
にペーストします。次に、ペーストした
_MaterialMap
フォルダ内にあるFabric02_N by 2gou.bmp
を複製してnormal.png
という名前で保存します。これでファイルをもう一度保存して服に薄っすら模様のようなものができていれば読み込みは成功です!

引き続き残りの4つのfxファイルも書き換えてください。
各Editorの値の設定
先ほどノーマルマップを読み込むようfxファイルを書き換えたので、今度は表情操作パネルで値を設定していきましょう。
見出しはモデル操作パネルにおける各pmxファイルの表示名と同じです。
既に何度か書いていますが、必ず各項目を変更するごとに登録ボタンをクリックしてください。
Cloth_1
項目名 | 値 | 効果 |
AlbedV | 0.450 | 明度を下げる |
NormalLoops | 0.500 | 布をきめ細かくする |
Smoothness | 0.440 | つやつやにする |
SpecularV+ | 1.000 | 光の反射の強調 |
Cloth_2
項目名 | 値 | 効果 |
AlbedV | 0.450 | 明度を下げる |
NormalLoops | 0.500 | 布をきめ細かくする |
Smoothness | 0.400 | つやつやにする |
Cloth_3
項目名 | 値 | 効果 |
AlbedV | 0.450 | 明度を下げる |
NormalLoops | 0.500 | 布をきめ細かくする |
Smoothness | 0.400 | つやつやにする |
SpecularV+ | 1.000 | 光の反射の強調 |
Cloth_4
項目名 | 値 | 効果 |
AlbedV | 0.170 | 明度を下げる |
NormalLoops | 0.500 | 布をきめ細かくする |
Smoothness | 0.400 | つやつやにする |
Cloth_5
項目名 | 値 | 効果 |
AlbedH | 0.820 | 色相を変える |
AlbedS | 0.180 | 彩度を上げる |
AlbedV | 0.970 | 明度を下げる |
NormalLoops | 1.000 | 布をきめ細かくする |
Smoothness | 0.430 | つやつやにする |

fxファイルは一度作成、改変すれば後は割り当てるだけでいくらでも使いまわせるので非常に便利です。
しかし一方で、ファイル内で直接値を指定している以上どのフレームにおいても値は同じです。
今回のチュートリアルでは使用していませんが、
ray-mmd-1.5.2/Materials/Emissive/Fixed Color x1
にあるmaterial_white_x1.fx
という、材質を白く発光させているように見せるfxファイルでは103
行目において、光の強さを指定するemissiveIntensity
の値を1.0
と指定しています。103行目
const float emissiveIntensity = 1.0;
それに対してEditorは表情操作の値を使用する仕組みになっていて、表情操作の値はフレームごとに登録できるため、0から100フレームまでの値は
0.5
だが101から200フレームまでの値は0.75
にするといった調整が可能です。Step 5では目のハイライトためにEditorではなく
material_albedo_x4.fx
を使用しましたが、これは途中で発光の強さの値を変更する必要が無いためです。このような場合はfxファイルを使用した方が楽ですが、フレームごとに変化させたい場合はEditorにしましょう。
Emissive(発光)はほとんどのEditorで設定できるのでシーンに応じて瞳のハイライトの値を変化させ、感情の揺れ動きの表現もできそうですね。
これがEditorの利点の1つであり、最も大きな利点となるでしょう。
残る2つについて話をすると、ひとつが表情操作パネルで値を調整ができるのでエディタを開く必要が無く、MMD内で完結させられるという点で、あとひとつは他のプロジェクトに影響を与えずに済むという点です。
前者は簡単に理解できると思いますが、後者の方は少し説明した方が良さそうですね。
まず、Step 4で作成した
stage.fx
というファイルを他のプロジェクト(pmmファイル)でも利用すると仮定しましょう。このチュートリアルにおける
stage.fx
のocculusion
の値は0.35
ですが、値を下げた分本来よりも暗くなってしまうので値を0.75
に上げたとします。そして久しぶりにこのチュートリアルのpmmファイルを開いてみると、床が眩しくなっていることに気が付きます。
複数のプロジェクトで同一のfxファイルを使用している時に値を書き換えてしまうとこのような事態が発生します。
単にfxファイルを複製すれば回避できる問題ではありますが、私にとってテキストエディタを開くのは面倒なことであり、MMD内で完結できるという点から好んでEditorを使用しています。