问:请介绍一下自己,谈谈你的经历、现在的工作和每天的任务。
我叫 Dniel Rind,来自奥地利的维也纳,现在在本地的科技大学学习计算机。作为一个学生,我现在的主要任务就是上课专心听讲,下课自己做练习,当然还要保证充足的睡眠。

问:你是从什么时候开始对视觉艺术和3D产生兴趣的?
我对视觉艺术的兴趣来自我的祖父,他是一个非常有能力的画家,也是我绘画的启蒙老师。
后来,当我第一次看到计算机绘图程序时 - Windows 3.0的画图,以及不久之后的 Corel Draw 4.0,就深深地被吸引。我自已研究了半天,但那时只有鼠标和256色的显示器。
我看到的第一个3D软件是 AutoDesk 的3D Studio R3,我彻底被它迷住了,不仅是它的创作作品,还有它的创作方式。
问:请介绍一下你制作的 Dirtmap shader。
这个 Shader 最初是为了实现一种快速为物体添加污渍的方法,比如你有一个东西想要擦干净,但总会在边角和缝隙处留下一些痕迹,这就是 Dirtmap 要实现的效果。
起初我也没有咨询过什么人,就自己做了一个粗糙的 Max shader。后来我又喜欢上 XSI,于是又重写了一个用于 Mental Ray 的 shader - 这比为 Max 编写要简单多了。后来我注意到污渍的环境光散射(ambient occlusion)问题,于是又加上了这些效果。

问:你曾将 Maya 的 Sub-Surface Shader 成功地引入 XSI,并受到广大 XSI 用户的喜爱。对于制作出这么重要的 Shade,你有什么感想?
转译 Shader 并不意味着要全部重新编写。dll shader 本身就可以在任何 Wintel Mental Ray 中执行。唯一要做的就是定义不同软件内部的界面。因此我只是提取了 .mi 文件并创建了一个 .spdl 外部文件。
当然,能够受到大家的欢迎,我也非常有成就感。我喜欢受到各地的 e-mail 来信,并一一解答。
问:你有编程基础吗?编写 Shader 时主要使用什么语言?
在学校的学习使我有一些编程基础,毕竟我所在的是一所科技大学,有很多编程课程。而且在上学前,我还做过程序员的工作。
Mental Ray 不像 PRMan 有自己专门的 Shader 语言,主要使用的就是 C。因此有基础的人都可以轻松制作自己的 Shader。

问:为 XSI 编写 Shader 有什么限制和困难吗?你希望能有哪些改进。
是的,对于多数人来说主要是语言的障碍,不过 SL 和 C 之间的差别非常小。
另外一个障碍就是 SPDL 文件结构。编写 SPDL 文件很麻烦,而且容易出错。不过 SPDL 结构是 XSI 的核心,因此我也不指望这能有什么改变。
问:你编写了一个衍射 shader,能够模拟出非常棒的玻璃效果,请给我们简单的介绍一下。
起初我只是想编写一个用于折射渲染的 shader,但完成基本的折射工作后,我希望它能够进一步代替 refraction_diffuse shader,因此我添加了一些光泽参数。另外我还注意到光线通过高折射率物体时,会产生颜色的衍射现象,于是我又采用了 Brazil 玻璃 shader 中类似的参数加了进去。经过就是这样。

问:你认为 GI、软阴影及散焦效果能够用 shader 模拟吗?
计算机图像就是要寻找隐藏在复杂物理规律背后的简单规律,从而能有效地缩短计算时间。因此大部CG技术就是模拟效果的技术。
不过GI 和散焦光子追踪例外,因为你需要将有限的光子投放到场景,让它们反弹几次,聚集这些照明点,从而得到光滑漂亮的效果。在保证质量的情况下,我想没有什么快速取巧的方法。如果你想快速得到散焦效果,可以使用“负”阴影,为特定区域增加亮度。
模拟软阴影非常简单,不过不可能用 MentalRay 的 shader 实现,至少我不知道怎么做。模拟的方法就是使用大量不同角度的 shadow map,当然会损失一些质量,这就要看你自己衡量了。

问:Dirtmap shader 的渲染速度为什么这么快,你是如何做到的?
这都是 Mental Ray 的功劳,它是一个非常快的光线追踪引擎。当我为 3ds Max 编写 Dirtmap shader 时,起初完全使用 MAX SDK 提供的未加速的光线追踪功能,但渲染复杂物体时速度实在不敢恭维。因此我又自己写了一个 BSP 光线追踪,本质上和 Mental Ray 的 BSP 加速相同。这就是它速度快的关键,尽管比 Max 默认的要好很多,但还是不如 Mental Ray。
所有的光线追踪都是将大量光线投射入场景来照亮物体,而 Mental ray 不会发射大量多余的光线,它在这方面是做得最好的。