# Material(材质) # Material ## **Material** VRM 支持的 材质(着色器) 有三种,`unlit`, `standard`, `MToon`。 UniGLTF 支持 `unlit` 和 `standard` 两种版本。 ### **export / import 对应表**[​](https://vrm.dev/univrm/shaders/#export--import-%E3%81%AE%E5%AF%BE%E5%BF%9C%E8%A1%A8 "export / import の対応表 への直接リンク")
supportexportgltfimport
Standard(Unity标准)PBRStandard
❌v0.xx.0UniGLTF/StandardVColor UniUnlit 支持顶点色
Unlit/Color(Unity标准)KHR\_materials\_unlitUniGLTF/UniUnlit
Unlit/Texture(Unity标准)KHR\_materials\_unlitUniGLTF/UniUnlit
Unlit/Transparent(Unity标准)KHR\_materials\_unlitUniGLTF/UniUnlit
Unlit/Transparent Cutout(Unity标准)KHR\_materials\_unlitUniGLTF/UniUnlit
UniGLTF/UniUnlit(VRMShaders)KHR\_materials\_unlitUniGLTF/UniUnlit
❌v0.76.0VRM/UnlitTexture(UniVRM)KHR\_materials\_unlitUniGLTF/UniUnlit请使用 UniUnlit
❌v0.76.0VRM/UnlitTransparent(UniVRM)KHR\_materials\_unlitUniGLTF/UniUnlit请使用 UniUnlit
❌v0.76.0VRM/UnlitCutout(UniVRM)KHR\_materials\_unlitUniGLTF/UniUnlit请使用 UniUnlit
❌v0.76.0VRM/UnlitTransparentZWrite(UniVRM)无法在 gltf 中表现 在MToon 中 有TransparentZWrite 功能
VRM/MToonextensions.VRM.materialPropertiesVRM/MToon
🚧VRM10/MToon10VRMC\_materials\_mtoonVRM10/MToon10
# UniUnlit ### **UniUnlit** 大概是 `UnLighting` 的缩写,即 `Unlit`。 #### **U​nlit** 将以 glTF 的 [KHR\_materials\_unlit](https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_unlit) 扩展形式保存。 #### **可以在 Unity 中导出为 Unlit 着色器**
功能colortexturevertex\_coloralpha/cutoutno culling
glTF
UniGLTF/UniUnlit
Unlit/Color
Unlit/Texture
Unlit/Transparent blend
Unlit/Transparent Cutout cutout
> **顶点颜色** > 只有 `UniGLTF/UniUnlit` 支持顶点颜色。 > > - 如果 Mesh 包含顶点颜色 > - 并且 Material 被判定为 `Unlit`, > > 在导入时将应用顶点颜色。如果在不需要顶点颜色的模型上应用 Unity 的 `Unlit `系列材质并导出,那么在下次导入时,颜色可能会意外改变。在这种情况下,通过在导出时启用 `RemoveVertexColor`,可以导出不包含顶点颜色的 `Mesh`。 # Standard ### **Standard** `Physically Based Rendering`(基于物理的渲染/PBR ) ### **Standard Shader** `UniVRM` 不会专门创建针对物理基础渲染(PBR)的着色器,而是使用 Unity 的标准 Standard 着色器。

⚠反射太强 闪闪发光 Shader 类型为 `Standard`(Unity 标准),且 `metallic` 和 `smooth` 值较高。将材质的着色器更改为 `Unlit/UniUnlit`,可以直接显示纹理。

### **Metallic, Roughness, Occlusion 对应表**
用途glTF material Unity Standard Shader
OcclusionocclusionTextureRG\_MetallicGlossMap
RoughnesspbrMetallicRoughness.metallicRoughnessTextureGA\_MetallicGlossMap (smoothness = 1 - roughness)
MetallicpbrMetallicRoughness.metallicRoughnessTextureBR\_OcclusionMap
> **将 Metallic Smoothness Occlusion 合并为一张纹理 V0.69.0** > 从 `v0.69.0` 版本开始,将纹理合并为一张。 > > - import:将 glTF 的 metallicRoughnessTexture 和 occlusionTexture 合并为一张(参见上表) > - export:将 Standard 的 \_MetallicGlossMap 和 \_OcclusionMap 合并为一张(参见上表) > > `v0.68.0` 及之前 > > - import:将用于 \_MetallicGlossMap 和 \_OcclusionMap 的两张纹理转换并导入 > - export:将 Standard 的 \_MetallicGlossMap 和 \_OcclusionMap 转换为两张纹理并导出 # MToon
[Mtoon 的使用方法](https://www.bilibili.com/read/cv35352597/?from=readlist&jump_opus=1)
### **MToon 简介** MToon 旨在实现日本动漫风格的表现。它通过根据 光照参数 和 光源环境 混合 Lit Color(主色) 和 Shade Color(阴影色) 这两种颜色来实现这一目标。 [![mtoon_about.png](https://docs.vrcd.org.cn/uploads/images/gallery/2024-08/scaled-1680-/FRj6LjXzQNtN6t1A-mtoon-about.png)](https://docs.vrcd.org.cn/uploads/images/gallery/2024-08/FRj6LjXzQNtN6t1A-mtoon-about.png) 来自ニコニ立体的使用了MToon的3D角色模型。 ### **快速设置** #### **基本步骤** - 选择目标材质并将着色器更改为 `VRM/MToon` - 点击着色器面板 - `Color -> Lit Color, Alpha` 和 `Color->Shade Color` 设置相同的纹理 - `Color -> Lit Color, Alpha` 设置为白色,`Color->Shade Color` 设置为想要的阴影颜色 - `Shading -> Toony` 选择所需的值。如果需要使主色和影色区分更加明显,可以调整为`1` - `Rim -> Additive` 设置纹理(相当于 Spheremap 和 Matcap ) - `Outline -> Width -> Mode` 如果需要轮廓线,则选择`WorldCoordinates`,否则选择`None` - `Outline -> Width -> Width` 根据外观选择适当的值 #### **普通的材质** - `Shading Shift` 设置为 `0` - `Shading Toony -> Shadow Receive Multiplier` 设置为 `1` #### **如果不希望角色面部或之类的材质有太多阴影** - `Shading Shift `设为负值 - 将 `Shading Toony -> Shadow Receive Multiplier` 设为 0 ### **设置项目** #### **准备** 选择要进行修改的材质(Material) 并将着色器(Shader) 更改为 `VRM/MToon` [![set_mtoon.png](https://docs.vrcd.org.cn/uploads/images/gallery/2024-08/scaled-1680-/RxLu1kwLoFbZRyel-set-mtoon.png)](https://docs.vrcd.org.cn/uploads/images/gallery/2024-08/RxLu1kwLoFbZRyel-set-mtoon.png) 将材质的着色器更改为 VRM/MToon #### **Rendering** [![download.png](https://docs.vrcd.org.cn/uploads/images/gallery/2024-08/scaled-1680-/XfxaDYiBxVDrgHRa-download.png)](https://docs.vrcd.org.cn/uploads/images/gallery/2024-08/XfxaDYiBxVDrgHRa-download.png) Rendering Inspector(检查器) 中包含的项目。 在 Rendering 中,设置主颜色和阴影颜色以及 Cull Mode(剔除模式)。 ##### **渲染类型 (RENDERING TYPE)** 这里可以设置材质是不透明还是半透明。 - 不透明 (Opaque) - 为了渲染性能。通常建议将其设置为 Opaque。 - 裁切 (Cutout) - 虽然是不透明的,但会根据 `Color -> Lit Color, Alpha` 中的 Alpha 数值来决定是否绘制小于 `Color -> Alpha -> Cutoff` 的部分。(根据 alpha 值进行绘制,透明度小于设定的值的部分会被裁切) - 透明 (Transparent) - 这是半透明的。将会根据 `Color -> Lit Color ,  Alpha` 中的 Alpha 数值来确定不透明度。 - 缺点是描边绘制可能不正确。 ##### **剔除模式 (CULL MODE)** 这里可以设置是否渲染多边形的法线反面。 - Back (背面) - 剔除背面,绘制正面。通常选择此项。 - Front (正面) - 剔除正面,绘制反面。 - None (无) - 绘制两面,因此会增加计算量。 ##### **Alpha (阿尔法)** 只有当 `Rendering Type(渲染类型)` 是 `Cutout` 时才需要设置。 - Cutoff (`Color->Alpha`) - 设置渲染阈值。 #### **Color(颜色)** 设置渲染颜色。纹理和颜色将进行乘法计算。将主色`Lit Color, Alpha`为受光照影响的颜色,影色`Shade Color`为未受光照的颜色。此外,设置不透明度信息`Lit Color, Alpha`的alpha值。另外,在`Lit Color, Alpha`的 Alpha 值中设置不透明度信息。 #### **Lighting(照明)** ##### **Shading Shift(阴影偏移)** 调整主色和影色的阈值,以适应光线照射物体的方式。当数值为`0`时,为正常的光照效果。当数值为负时,会呈现类似动漫般、范围广泛的主色光照效果。需要根据显示的警告信息将`Shadow Receive Multiplier`设置为`0`,以禁用自身阴影。 ##### **Shading Toony(阴影风格)** 这个设置决定上面介绍的 `Shading Toony(阴影偏移)` 的明暗交界线过渡的平滑程度,当数值为0时,它(阴影过渡)会变得像一般的Lambert(兰伯特) 模型一样写实且平滑。当数值为`1`时,受光面和阴影面会在交界处产生明显的分割,呈现出动画风格的照明效果。(类似二分阴影) ##### **Shadow Receive Multiplier(阴影强度)** 设定自我投影和阴影的影响程度。`0`的时候不受影响。`1`的时候会受到影响。 ##### **LightColor Attenuation(灯光颜色衰减)** 设置光源颜色的影响程度。设置为`0`时,受光源颜色的影响。设置为`1`时,不受光源颜色的影响,只反映光源的亮度。 ##### **Rim Additive(边缘光追加)** 根据相机和法线之间的关系显示额外的光源。通常被称为 sphere map(球形贴图) 或 MatCap。 ##### **Emission(自发光)** 设置与光源环境无关的恒定颜色。 ##### **Normal Map(法线贴图)** 设置法线贴图。右侧值设置法线贴图的强度。 #### **Outline(轮廓线)** 轮廓线的设置 ##### **Width Mode(宽度模式)** - None(无) - 不渲染轮廓 - WorldCoordinates(世界空间坐标系) - 以世界坐标为基准,渲染出相对于世界空间固定宽度的轮廓线。 - ScreenCoordinates(屏幕空间坐标系) - 以屏幕空间为基准,渲染出相对于屏幕空间固定宽度的轮廓线。 ##### **Width(宽度)** 设置轮廓的宽度。当宽度模式是世界坐标系时,宽度单位为米。 ##### **Color Mode(颜色模式)** - FixedColor(固定颜色) - 使用固定的颜色进行渲染。 - MixedLighting(混合光照) - 增加光照颜色进行相乘运算。(简单来说就是轮廓线颜色会受光照颜色影响)。 ##### **Color(颜色)** 设置轮廓线颜色。 ##### **Color Lighting Mix(色彩灯光混合)** 当轮廓线的 `Color Mode(颜色模式)` 设置为 `MixedLinghting(混合光照)` 时生效,该设置可以调整轮廓颜色与光照颜色混合的乘法系数。