8_1_マテリアル - gaj-cg/ray-mmd-docs-ja GitHub Wiki

8.マテリアル

8-1.マテリアル概要

マテリアルとは、モデルの見た目を決定する設定です。MMDのモデルでは「材質」と呼ばれている設定ですが、ray-mmdでは従来のMMDモデルの設定とは異なり、PBR(Physically Based Rendering - 物理ベースレンダリング)用のマテリアル設定を行うことになります。

その為、MMDのモデルにray-mmdのデフォルトマテリアル(material_2.0.fx)を設定すると、多くの場合、白っぽい感じになりMMD標準のレンダリング結果との差を感じることになると思います。これは、ray-mmdがMMDの材質設定に合わせたレンダラーではなく、PBRのマテリアル設定に合わせたレンダラーだからです。

PBRのマテリアル設定、特にアルベドで参照されるテクスチャマップの色の設定方法が従来のものと大きく異なり、輝度で言うと非金属の場合sRGBで30~240程度に収まり完全な白(255)や黒(0)は使われません。

ray-mmdのマテリアルは、モデルの材質設定の一部を参照しつつ、足りないパラメータについてはマテリアル設定のfxファイルで補う形になっています。

デフォルトマテリアルの material_2.0.fx をコピーして編集することで、独自のマテリアルファイルを作成することが出来ます。

PBRのマテリアル詳細については下記の参考資料を参照してください。

マテリアルファイルの使い方

マテリアルファイル( material_2.0.fx 等)を「MaterialMap」タブで材質に割り当てることで質感を設定していきます。
※ マテリアルを設定する前に、「4_1_クイックスタート」でモデルの「Main」タブに main.fx を割り当てたように、全てのモデルには「Main」タブに main.fx を割り当てなければなりません。

  1. モデルの「Main」タブに main.fx を割り当てる。
  2. 「MaterialMap」タブを選択し、モデルを選んでマウスの右クリックで「サブセット展開」を選択します。
  3. 希望する材質にマテリアルファイルをドラッグ・アンド・ドロップ、または、ダブルクリックで表示されるファイルダイアログから選択し、設定します。
    * Tips:
    この時、「MaterialMap」タブで材質のチェックをオフにすると、MMDでの表示が消えるので希望する材質を見つけやすいかもしれません。
  4. 「OK」ボタンを押して割り当てを終了します。

マテリアル(Materials)フォルダ一覧

ray-mmdには多くのプリセット(と言うよりはサンプル)マテリアルが有ります。ここではフォルダごとにどのようなマテリアルファイルが有るか見ていきます。

ルートフォルダ

デフォルトのマテリアルファイルとreadmeが有ります。

ファイル名 説明
material_2.0.fx デフォルトのマテリアル設定ファイル。
ray.xが追加されている時に、モデルを追加すると「MaterialMap」タブに自動的に割り当てられる。
material_common_2.0.fxsub マテリアルのプログラムコード。
各マテリアル設定ファイルから読み込まれ実行される。
material_skybox.fx スカイボックス用のマテリアル設定ファイル。
README.md マテリアルの各パラメータについて書かれたファイル。(英語)
日本語に意訳したものは、8_2_マテリアル_パラメータを参照してください。
README_chs.md マテリアルの各パラメータについて書かれたファイル。(中国語)
  • material_2.0.fx を割り当てたシェーダーボール

    8_1_material_def

_MaterialMap フォルダ

プリセットマテリアルで使用される各種マップが有ります。

ClearCoat フォルダ

金属・非金属の材質に関わらず透明な層を持つ材質を模したマテリアル。例えば、車のボディなど。
Shading Model ID の Clear Coat(=6) を使用したサンプルマテリアル。

material_albedo.fx material_black.fx
8_1_ClearCoat_albedo 8_1_ClearCoat_black
material_metal_clearcoat.fx material_white.fx
8_1_ClearCoat_metal 8_1_ClearCoat_white

Clothフォルダ

布を模したマテリアル。マイクロファセットによる表面の細かな凸凹によるざらつきを再現しています。詳細はペーパー(PDF)を参照してください。
Shading Model ID の Cloth(=5) を使用したサンプルマテリアル。

material_black_coat.fx material_cloth.fx material_white.fx
8_1_Cloth_black_coat 8_1_Cloth_albedo 8_1_Cloth_white

Editorフォルダ

コントローラーを使用して、マテリアルの値を変更することが出来ます。

使い方

  1. Editorフォルダ内の任意のfxをモデルに割り当てます。
  2. 同じフォルダにある同じ番号のPMXをMMDに追加します。(これがコントローラーになります。)
  3. コントローラーのモーフを操作してマテリアルの設定を行います。
  • Tips:
    コントローラーを調整する時は、「表示」メニューの「モデル編集時カメラ・照明追従」をオンにし、ボーン操作パネルの「選択」ボタンをオフ(ショートカット:Cキー)にしておくと調整がやりやすいと思います。

コントローラーの説明

表情操作パネル 左上

Albedo,Specular,Emissiveの色やマップの繰り返し回数等を設定します。HSVで設定するものはSの設定を上げておかないと変化がわかりづらいかもしれません。

モーフ名 機能
AlbedoH
AlbedoS
AlbedoV
AlbedoのH(色相)S(彩度)V(明度)を調整します。
AlbedoLoops Albedoに設定しているマップの繰り返し回数を設定します。
SpecularH
SpecularS
SpecularV+
SpecularV-
SpecularのH(色相)S(彩度)V(明度)を調整します。
SpecularLoops Specularに設定しているマップの繰り返し回数を設定します。
EmissiveR EmissiveのカラーをRGBで調整します。
EmissiveBlink Emissiveの点滅速度を調整します。
割り当てたfxファイルのEMISSIVE_MAP_APPLY_BLINK1が設定されていないと機能しません。
EmissiveIntensity Emissiveの輝度を調整します。
EmissiveLoops Emissiveに設定しているマップの繰り返し回数を設定します。
表情操作パネル 右上

ノーマルマップの設定を行います。ノーマルマップが設定されていないと機能しません。

モーフ名 機能
NormalScale+
NormalScale-
Normalの凸凹感を調整します。
NormalLoops Normalに設定しているマップの繰り返し回数を設定します。
NormalSubScale+
NormalSubScale-
NormalSubの凸凹感を調整します。
NormalSubLoops NormalSubに設定しているマップの繰り返し回数を設定します。
表情操作パネル 右下

Smoothness,Metalness,Melaninの設定を行います。

モーフ名 機能
Smoothness Smoothnessを調整します。
SmoothnessLoops Smoothnessに設定しているマップの繰り返し回数を設定します。
Metalness Metalnessを調整します。
MetalnessLoops Metalnessに設定しているマップの繰り返し回数を設定します。
Melanin Melaninを調整します。
MelaninLoops Melaninに設定しているマップの繰り返し回数を設定します。
表情操作パネル 左下

Shading Model ID 用の設定を行います。Shading Model ID が 1 以上でないと機能しません。
また、Shading Model IDによってCustomA、CustomBのパラメータの意味が変わります。詳細は「8_2_マテリアル_パラメータ」を参照してください。

モーフ名 機能
CustomA
CustomALoops CustomAに設定しているマップの繰り返し回数を設定します。
Custom2R
Custom2G
Custom2B
CustomBLoops CustomBに設定しているマップの繰り返し回数を設定します。

Emissive フォルダ

発光体表現を行うマテリアル。光を投射するわけではないので、他のモデルを照らしたり、影ができるようなことはありません。(AutoLuminanceのようなものと言えばわかりやすいですかね?)

フォルダ名 説明
material_lighting.fx これはライトを追加した時に、自動的にそのライトの「MaterialMap」タブに割り当てられます。(ライト用)
Fixed Color x1~x4 アルベドまたは固定色で発光して見えるマテリアル。x1,x2,x4は emissiveIntensity で輝度を変えたもの。
Fixed Color Blink x1~x4 Fixed Color x1~x4に点滅設定を追加したもの。
Rainbow Emmisiveに設定する色にアニメーションGIFを使用して、色が変化するマテリアル。効果を確認するにはMMDの再生ボタンを押す必要があります。
BodyLine Rainbow同様アニメーションGIFを使用して、発光する部分を制御しているマテリアル
material_albedo_x2.fx material_blue_x2.fx material_green_x2.fx
8_1_Emissive_x2_albedo 8_1_Emissive_x2_blue 8_1_Emissive_x2_green
material_orange_x2.fx material_purple_x2.fx material_red_x2.fx
8_1_Emissive_x2_orange 8_1_Emissive_x2_purple 8_1_Emissive_x2_red
material_white_blue_x2.fx material_white_pink_x2.fx material_white_x2.fx
8_1_Emissive_x2_white_blue 8_1_Emissive_x2_white_pink 8_1_Emissive_x2_white
material_yellow_green_x2.fx material_yellow_x2.fx
8_1_Emissive_x2_yellow_green 8_1_Emissive_x2_yellow

Hair フォルダ

髪の毛向けのマテリアル。
主にスペキュラの乗りが変わっています。
*_anisotropy.fxは、Shading Model ID の Anisotropy(=3) を使用したサンプルマテリアル。

material_2.0.fx
黒いモデルを使用
material_hair.fx material_hair_sss.fx
8_1_material_def_black 8_1_hair 8_1_hair_sss
material_hair_with_anisotropy.fx material_hair_with_anisotropy2.fx
8_1_hair_with_anisotropy 8_1_hair_with_anisotropy2

Metallic フォルダ

金属のマテリアル。
金属のマテリアルの設定は、アルベドに金属の種類に応じたF0(光が垂直に入射するときのフレネル反射率 F(0°))が設定されます。この値は現実世界での測定に基づいた値です。

Flat ingot rough フォルダ

表面がざらついた金属( Smoothness の値が低い)

*_meatal.fxAlbedo にモデルのテクスチャを使い、その他はテクスチャではなく const float3 albedo に、F0(光が垂直に入射するときのフレネル反射率 F(0°))が設定されています。

material_rough_brass.fx material_rough_copper.fx material_rough_gold.fx
8_1_Metallic_rough_brass 8_1_Metallic_rough_copper 8_1_Metallic_rough_gold
material_rough_iron.fx material_rough_metal.fx material_rough_silver.fx
8_1_Metallic_rough_iron 8_1_Metallic_rough_metal 8_1_Metallic_rough_silver

Flat ingot smooth フォルダ

表面が滑らかな金属( Smoothness の値が高い)
*_meatal.fxAlbedo にモデルのテクスチャを使い、その他はテクスチャではなく const float3 albedo に、F0(光が垂直に入射するときのフレネル反射率 F(0°))が設定されています。

material_smooth_brass.fx material_smooth_copper.fx material_smooth_gold.fx
8_1_Metallic_smooth_brass 8_1_Metallic_smooth_copper 8_1_Metallic_smooth_gold
material_smooth_iron.fx material_smooth_metal.fx material_smooth_silver.fx
8_1_Metallic_smooth_iron 8_1_Metallic_smooth_metal 8_1_Metallic_smooth_silver

Flat ingot worn フォルダ

摩耗した金属( Smoothness にマップを使用したサンプル)
*_meatal.fxAlbedo にモデルのテクスチャを使い、その他はテクスチャではなく const float3 albedo に、F0(光が垂直に入射するときのフレネル反射率 F(0°))が設定されています。

material_worn_brass.fx material_worn_copper.fx material_worn_gold.fx
8_1_Metallic_worn_brass 8_1_Metallic_worn_copper 8_1_Metallic_worn_gold
material_worn_iron.fx material_worn_metal.fx material_worn_silver.fx
8_1_Metallic_worn_iron 8_1_Metallic_worn_metal 8_1_Metallic_worn_silver

Ingot Bricks フォルダ

レンガ状の金属( NORMAL_MAP_FILE,OCCLUSION_MAP_FILE を使用したサンプル)
*_meatal.fxAlbedo にモデルのテクスチャを使い、その他はテクスチャではなく const float3 albedo に、F0(光が垂直に入射するときのフレネル反射率 F(0°))が設定されています。

material_rough_brass.fx material_rough_copper.fx material_rough_gold.fx
8_1_Metallic_Bricks_brass 8_1_Metallic_Bricks_copper 8_1_Metallic_Bricks_gold
material_rough_iron.fx material_rough_metal.fx material_rough_silver.fx
8_1_Metallic_Bricks_iron 8_1_Metallic_Bricks_metal 8_1_Metallic_Bricks_silver

Programmable フォルダ

プログラムコード(.fxsub)が専用に作られたマテリアル。その為、設定ファイルも専用のものになっています。
waterは water.pmx を追加し material_water.fx を割り当てています。

material_water.fx material_wetness.fx water+wetness
8_1_Programmable_Water 8_1_Programmable_Wetness 8_1_Programmable_Water_wetness

Skin フォルダ

肌向けのマテリアル。
Shading Model ID の PreIntegrated Skin(=1) を使用したサンプルマテリアル。

サンプル画像のシェーダーボールはアルベドに使われているテクスチャが白いので、肌色に見えませんが影との境目あたりにSSSの効果が出ているのが見て取れると思います。

beigeのサンプルはALBEDO_MAP_APPLY_SCALE1を設定して、const float3 albedoに設定した色で乗算しています。この方法を使うと明るすぎるアルベドを調整する事ができます。(設定値によっては明るくすることも出来ます)

material_body.fx material_body_beige.fx material_body_beige_dark.fx
8_1_Skin_body 8_1_Skin_body_beige 8_1_Skin_body_beige_dark
material_skin.fx material_skin_beige.fx material_skin_beige_dark.fx
8_1_Skin_skin 8_1_Skin_skin_beige 8_1_Skin_skin_beige_dark
material_skin_melanoderm.fx Human
material_body.fx
Human
material_body_melanoderm.fx
8_1_Skin_skin_melanoderm 8_1_Skin_Human_body 8_1_Skin_Human_body_melanoderm
TDAフォルダ

「Tda式初音ミク・アペンド Ver1.00」用に作成された、curvatureマップ、thicknessマップを使ったサンプル。
これらのマップを作成、使用することでSSSの効果をコントロールできます。

material_2.0.fx material_TDA_face.fx
material_TDA_body.fx
肌以外はmaterial_2.0.fx
material_TDA_face_red.fx
material_TDA_body_red.fx
肌以外はmaterial_2.0.fx
8_1_Skin_TDA_WS_def 8_1_Skin_TDA_WS_face_body 8_1_Skin_TDA_WS_faceRed_bodyRed

Subsurface フォルダ

サブサーフェス・スキャッタリング(Subsurface Scattering : SSS)を使用したマテリアル。
Shading Model ID の Subsurface(=7) を使用したサンプルマテリアル。

サブサーフェス・スキャッタリングは半透明な物体の表面を透過し、内部で散乱した後に表面から出て行く現象で、現実世界では数多くみられます。(例えば、肌、氷、牛乳、大理石、など)

material_jade_white.fx material_lampshade.fx material_marble.fx
8_1_Subsurface_jade_white 8_1_Subsurface_lampshade 8_1_Subsurface_marble

Transparent フォルダ

透明な材質のマテリアル。
Shading Model ID の Glass(=4) を使用したサンプルマテリアル。透明度自体は alpha で設定します。

CUSTOM_Aの設定で曲率、CUSTOM_Bの設定でガラスを通過する色(ライトの反対側、影の部分に現れる色)を設定します。

material_glass.fx material_glass_metal.fx material_glass.fx を改変
8_1_Transparent_glass 8_1_Transparent_glass_metal 8_1_Transparent_glass_mod

Video フォルダ

MMDのスクリーンや背景AVIの表示を行うマテリアル。

このマテリアルを使う場合、Extension\DummyScreen\DummyScreen.x をMMDに追加し、MMDの「背景」メーニューで「ON・モード~」を選択する必要があります。

material_screen.fx material_screen_emissive.fx material_screen_led.fx
8_1_Video_screen 8_1_Video_screen_emissive 8_1_Video_screen_led

※ サンプル画像は床にマテリアルを設定しています。

  • TIPS

    モデルをサブセット展開して材質ごとに割り当てた「MaterialMap」タブの設定は保存、読み込みができます。
    設定を保存しておくことで、別のシーンで同じモデルを使う時にマテリアル割り当ての時間を短縮することが出来ます。

  • 設定の保存方法

    1. MMEの「エフェクト割り当て」ダイアログを開きます。
    2. 「エフェクト割り当て」ダイアログで「MaterialMap」タブを選択。
    3. 設定を保存したいモデルを選択。
    4. 「エフェクト割り当て」ダイアログのファイルメニューから、「モデル単位で設定保存」を選択して、ファイル名を設定して保存します。(拡張子は.emdで中身はテキストエディタで見ることが出来ます。)
  • 設定の読み込み方法

    1. MMEの「エフェクト割り当て」ダイアログを開きます。
    2. 「エフェクト割り当て」ダイアログで「MaterialMap」タブを選択。(選択したタブに読み込むので、間違えないように!
    3. 設定を保存したいモデルを選択。
    4. 「エフェクト割り当て」ダイアログのファイルメニューから、「モデル単位で設定読込」を選択して、ファイル名を指定して読み込みます。

Model : ShaderBall_MMD by カユテガ / Tda式初音ミク・アペンド Ver1.00 by Tda
Pose : 女の子の撮影ポーズ集 by KEITEL

⚠️ **GitHub.com Fallback** ⚠️