[备忘]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 即可正常渲染显示:

看起来正常了:

  1. 任何模型资源导入到 Maya 等类似的建模工具,在渲染时都要考虑:原模型自带材质在新的建模工具中能否正常显示的问题,通常每种建模工具都有自己独有的渲染引擎和对应的材质,因此如果在显示上遇到问题,通常都要从 “渲染引擎和对应的材质” 方面来解决

  2. 要解决第一点的问题,需要熟悉各个渲染引擎 (如 Arnold、Vray、Redshift)、理解基本的 shader 原理以及常见的 Shader 模型的原理

  3. 上面的问题虽然解决了,但是依然存在疑问,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 的实现公式以及具体的对应的参数,因此此处依然未能完全理解原理(此处留坑)

评论