[备忘]MMD 导入 Maya 后的渲染设置
本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com
作者:心飞自然乐
目的 MMD 导入 Maya 并使用 Arnold 渲染出更好的光影效果过程与遇到的问题 1. 导入 Maya 找一个 MMD 直接导入 Maya 的插件:https://github.com/gameboy12615/MMD4Maya2. 灯光设置添加一个 Arnold SkyDome 灯光,默认参数即可。
MMD 导入 Maya 并使用 Arnold 渲染出更好的光影效果
1. 导入 Maya
找一个 MMD 直接导入 Maya 的插件:https://github.com/gameboy12615/MMD4Maya
2. 灯光设置
添加一个 Arnold SkyDome 灯光,默认参数即可。如果不添加 Arnold 灯光,在 Viewport 中可以看到模型,但是在 Arnold 渲染器中会全黑。
3.Arnold 渲染结果异常与修正
MMD 导入 Maya 后在 Arnold 渲染器中渲染异常
先检查是否渲染设置中忽略了贴图和材质:
也没问题
打开材质编辑器,看起来正常:
切换渲染平台为 Arnold,发现材质都渲染不出来结果了:
看到这里是 Phone shader,因此我尝试自建了一个 Arnold Phone 材质,对比了之后发现只需要把 Reflectivity 设置为 0 即可正常渲染显示:
看起来正常了:
-
任何模型资源导入到 Maya 等类似的建模工具,在渲染时都要考虑:原模型自带材质在新的建模工具中能否正常显示的问题,通常每种建模工具都有自己独有的渲染引擎和对应的材质,因此如果在显示上遇到问题,通常都要从 “渲染引擎和对应的材质” 方面来解决
-
要解决第一点的问题,需要熟悉各个渲染引擎 (如 Arnold、Vray、Redshift)、理解基本的 shader 原理以及常见的 Shader 模型的原理
-
上面的问题虽然解决了,但是依然存在疑问,Phong Shader 的原理如下:
Ambient = La * Ka;
Diffuse = Ld * Kd * max( dot(s, n), 0.0 );
Specular = Ls * Ks * pow( max( dot(r, v), 0.0 ), f );
参数说明:
-
La 环境光强度 (Ambient light intensity)
-
Ka 材质环境光反射率 / 材质环境光反射系数 (Ambient reflectivity)
-
Ld 漫射光强度 / 散射光强度 (Diffuse light intensity)
-
Kd 材质漫反射率 / 材质漫反射系数 (Diffuse reflectivity)
-
s 顶点 / 曲面点 到光源方向的单位向量 (Direction from the surface point to the light source)
-
n 顶点 / 曲面点 的法线单位向量 (Normal vector at the surface point)
-
Ls 镜面光强度 / 全反射光强度 (Specular light intensity)
-
Ks 材质镜面反射率 / 材质镜面反射系数 (Specular reflectivity)
-
r 完全反射向量 (the vector of perfect reflection)
-
v 顶点 / 曲面点 到摄像机方向的向量 (the vector towards the viewer)
-
f 镜面高光 (specular highlights),值范围在 1 到 200 之间,值越小,镜面亮点越大
从公式来看,单独的设置 Reflectivity 位置为 1,并不会使得整个颜色结算结果异常,但是由于无法找到 Maya 的 Phong 的实现公式以及具体的对应的参数,因此此处依然未能完全理解原理(此处留坑)