#2 Ray-MMDに苦闘中のそこの君、諦めるにはまだ早いぞ

It is too early to give up using Ray-MMD
こんにちは、えくりでぃあす(@Eclidiuth)です。
前回から大分期間が空いてしまいましたが、ついに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
さるる~

Step 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
ステージのファイルを配置する

Step 1 モデルの改変

瞳のテクスチャの改変

自分の見ている動画の多くでは、Sour式鏡音リンの瞳のテクスチャは改変されています。
私自身その瞳が好みなので、PMXEditorの使用方法の学習も兼ねて改変してみることにしましょう。
最初にModels/Sour式鏡音リンVer.2.01の中にイラスト風瞳テクスチャ2のフォルダを配置しておきます。
お好きな画像編集ソフトを用いてeye.pngの瞳の部分をイラスト風瞳テクスチャ214.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と入力します。
一度他の材質を選択すると表記が切り替わるので、同様の手順を踏んで新規材質3Black4と変更しましょう。
名前を変更したらリストの下にある矢印ボタンを使って材質の順番を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%に変更し、バイアスY0にし、Z軸で前を向いているものだけ対象にするにチェックを入れた状態で実行ボタンをクリックし、完了したらメニューバーのファイルから名前を付けて保存します。
後で80%法線を変更したと分かるようBlack.normal.fixed.80.pmxという名前にすると良いでしょう。

ステージのサイズ縮小

簡単な背景としてさる式お米ステージver1.0を使用しますが、もともとのサイズが少々大きいので小さくします。
PMXEditorを起動して、Pmx編集ウインドウのメニューバーのファイル>インポートからさる式お米ステージver1.0/さる式ごま塩ステージ.pmxを選択、あるいはpmxファイルをPmxViewに直接ドラッグ&ドロップすることで、読み込み時に追加選択/サイズ調整ウインドウが表示されます。
このウインドウ内のサイズのグループにおいて任意とあるラジオボタンを選択し隣のフォームに0.5と入力しOKをクリックします。
カメラを引いてみてRiceの後ろの白い背景部分がグリッドに収まるぐらいのサイズになっていれば大丈夫です。
ファイルから名前を付けて保存を選択し、さる式ごま塩ステージ.halfsize.pmxという名前で保存しておきましょう。

Step 2 Ray-MMDのセットアップ

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 HemisphereTime 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を割り当てます。

MMEのウインドウの注意点

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を割り当てていた場合は左下の解除ボタンで割り当てを解除できます。

Skyboxでモデルを照らす

現在は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 nightTime of lighting.fxはあまり好みではありません。
というのもTime of nightに限らず光源はモデルに対し光源の色の影響を大い与え、今回の場合は全体的に青白くなってしまうからです。
現実において何かしらの物を赤い光で照らせば赤く、青い光で照らせば青く見えるのと同じで腕の肌の色を見ればそれが分かるでしょう。
どのSkyboxも表情操作パネルの各項目で色味等を調整できますが、それは私にとってはとても面倒なことでした。
少なくとも今の段階では単に明るさを提供してくれればよいので、今回は異なるSkyboxのfxファイルを利用します。
EnvLightMapTime of night.pmxに対しray-mmd-1.5.2/Skybox/Sky HemisphereにあるSky with lighting.fxを割り当てます。
今割り当てたSky with lighting.fxSky Hemisphereという単純な白い背景のSkyboxのためのライティング用fxファイルですが、このように異なるSkyboxのものを利用することもでき、現在は先ほどとは違って白い光で照らされている状態にあります。
fxファイルを割り当てたら必ず更新ボタン等で変更を保存することを絶対に忘れないようにしてください。

ファイルの保存

ここまでが今回のチュートリアルで必要となるRay-MMDのセットアップ作業になります。
慣れればすぐに終わらせることができますが、最初はやり直すのも大変でしょうのでここで一度保存しておきましょう。
Step 0で作成したpmmフォルダ内にproject01.step2.pmmという名前で保存してください。

Step 3 細かい調整とライティングの設定

セットアップが終わったので次はライティングの設定を行いたい所ですが、その前にいくつかやることがあります。
まず、床のグリッドは不要なのでこれを消してしまいましょう。
メニューバーの表示から座標軸表示をクリックすると消えますね。
では次に、全体的に彩度が低いようなのでそれを調整することにしましょう。

彩度を上げる

ray-mmd-1.5.2フォルダ内にあるray_controller.pmxを読み込みます。
読み込むと自動的にボーン操作パネルの選択ボタンが選択された状態になりますがこれを選択解除します。
Step 2では単にボーンの表示が邪魔だったから消したわけですが、今回は理由が異なります。
選択ボタンをクリックして選択と解除を繰り返すと選択された状態では影が付かないことに気が付きますね。
このように、選択された状態では本来とは異なる表示になるので常に解除することを忘れないでください。
モデルを読み込んだり切り替えると勝手に選択状態になりますが、その度に必ず解除してください。
前置きが長くなりましたが本題に入ることにします。
表情操作パネル右下でSaturation+を選択しスライダーを操作するか直接値を入力してからEnterで値を0.350にします。
彩度が上がったことを確認したらセレクトボックスの上にある登録ボタンをクリックして変更を登録します。
この操作を行わないと変更が保存されず、フレームを移動した際に変更前の状態戻ってしまうので注意してください。
この操作は基本であり、今後はあまり書かないので値を変更したら自身で適切に登録を行ってください。

Skyboxで遊んでみる

今回カメラは使用せずに正面固定とし、背景用にステージを読み込むのでSkyboxは完全に隠れてしまいます。
ただ、Time of nightといったSkyboxの面白さを知るいい機会なので、一項目だけ値を変えてみましょう。
Time of nightを選択し、表情操作パネル左上にあるRayleighHeight-の値を0.470にしてみます。
これだとなんだか宇宙にいる感じがして素敵ですね!
Time of dayTime 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に戻しておきましょう。

DirectionalLight

後ろから見るとブルームがかかるようになりましたが正面は全然ですね。
明るさが不足しているので追加のライトを正面から当てることにしましょう。
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のウインドウでMainMaterialMapタブの両方でDirectionalLight.pmxのチェックを外すと非表示にできます。
非表示にしたら、しっかりと更新をクリックして変更を保存しておきましょう。

Skyboxのさらなる調整

DirectionalLightを追加したことで明るくなったものの白っぽくなってしまいました。
また、Skyboxの光(EnvDiffLight)は肌の影を消してしまいがちなので、これらの問題を解決します。
モデル操作パネルでTime of nightを選択し、表情操作パネル右上のEnvDiffLight-の値を0.630にします。
これで全体的に白っぽいのと、肌の陰影の消失を解消することができましたね。

ray_controllerでの調整

先ほどEnvDiffLight-で調整したもののまだ全体的に明るいのでもう少し暗くしたいですね。
モデル操作パネルでray_controllerを選択しパネル左上のSunShadowV-の値を0.340にするといい感じになります。
SunShadowV-にはMMDの照明によってできる影の明度を下げる効果があります。

DirectionalLightの影

これは気づきにくいですが、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 4 ステージの設定

Step 3の最後で背景用のステージを読み込むついでにDirectionalLightの変なギザギザした影を直すことができました。
Step 4ではray_controllerBloomThresholdで設定したブルームのせいで床が眩しいので、それを解決します。
今回は少し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で影を調整する

スカートの下の脚には影があるわけですが、この影がもう少し暗いと自然な見た目になるような気がします。
これはray_controllerで左上のSSAO+の値を0.330にすることで実現できます。
SSAOはモデルにそれっぽい影を作ってくれるもので、SSAO+の数値を上げることにより影を濃くすることができます。

保存

Step 4での作業内容は少ないですが、クラッシュによるデータ喪失を回避するためにもこまめな保存は大切です。
project01.step4.pmmという名前で保存しておきましょう。

Step 5 モデルの設定

このステップでは目のハイライトを光らせ、瞳に光沢を表現するスフィアを適応してみます。
まずは次の表を参考にSour_Rin_Blackの右下にある3つの項目の値を変更し、変更するごとに登録してください。
項目名
瞳1off
1.000
瞳2off
1.000
HL2
1.000

目のハイライト

目のハイライトはいくらか光っていると見栄えが良いように感じますね。
MaterialMapタブでBlack.fixed.80.pmxを選択してサブセット展開を行い材質5: HLray-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 6 マテリアルの割り当て

これを書き始めた当初は、最初にマテリアルの割り当てを行う方が楽しくて良いかと思ったのですが、自分が制作したときはライティングの設定をした後にマテリアルを割り当て、そこからさらにライティングの微調整をしていたことを思い出しました。
また、Step 2の最後に書いた通りライトはモデルの色に影響を与えるので先にライトの調整をすると修正が減ると思います。
こうしたこともあり今の順番になっているわけですが、そのせいで一番の楽しみをお待たせしてしまいましたね。
ようやく皆様が待ち望んでいたであろうマテリアル割り当ての時間です!
各材質に様々なマテリアルを割り当てることで、発光や反射に滑らかさ等々を表現できることがRay-MMDの最大の楽しみと言えるでしょう。
Ray-MMDには初めから用意されているfxファイルが数多くあるので、それを使用したり改変する場合が多いかと思います。
しかしray-mmd-1.5.2/Materials/Editorフォルダ内には様々な種類のEditorがあり、それを利用することもできます。
Editorはそれのためのfxファイルとpmxファイルの2つを組み合わせて使用し、用途に応じて使い分けます。
最も一般的なStandardを例にすると、material_editor_1.pmxmaterial_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
つやつやにする

Editorの3つの利点

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.fxocculusionの値は0.35ですが、値を下げた分本来よりも暗くなってしまうので値を0.75に上げたとします。
そして久しぶりにこのチュートリアルのpmmファイルを開いてみると、床が眩しくなっていることに気が付きます。
複数のプロジェクトで同一のfxファイルを使用している時に値を書き換えてしまうとこのような事態が発生します。
単にfxファイルを複製すれば回避できる問題ではありますが、私にとってテキストエディタを開くのは面倒なことであり、MMD内で完結できるという点から好んでEditorを使用しています。
ただ、Editorの場合は表情操作パネルで毎回値を指定する必要があるので似たような値の場合は面倒ですけどね。
どちらを使用するべきかは経験を積んでいけば自然と分かるようになるので、着実に学んでいきましょう。

保存

これだけの数の値の設定をやり直すのは面倒なのでproject01.step6.pmmという名前で保存しておきましょう。

Step 7 肌の調整

肌の調整はSkinというEditorで大まかな色を設定した後にAutoLuminousというエフェクトを使って明度の調整を行います。
AutoLuminousは物体を発光させているように見せるエフェクトではありますが上記のような使い方も可能です。

肌のマテリアル割り当て

MMEのウインドウを開き材質0: face11: skinに対して