How to| 不使用光照对三维曲面进行着色
Wolfram 语言允许您使用模拟光照、反射以及发光决定一个三维曲面的最终颜色. 使用 Glow 选项,用户可以使用与模拟光和反射无关的方式,通过有效地令曲面发射指定颜色的光,对一个三维曲面进行着色.
首先,创建一个三维圆柱体. 默认情况下,Wolfram 语言中三维对象的内在表面颜色是白色的. 您看到的颜色来自 Wolfram 语言默认使用的默认光:
Graphics3D[Cylinder[]]把 Lighting 设置为 None,以防止任何光线被投射到圆柱体上. 现在圆柱体显示为黑色:
Graphics3D[Cylinder[], Lighting -> None]仍然把 Lighting 设置为 None,使用 Glow 把圆柱体着色为紫色:
Graphics3D[{Glow[Purple], Cylinder[]}, Lighting -> None]现在回过来使用 Wolfram 语言默认的 Lighting,其中紫色 Glow 仍然是起作用的:
Graphics3D[{Glow[Purple], Cylinder[]}]正如您可以从前面二个图中看到的,Lighting 与 Glow 具有很强的交互作用,这实际上引起一个三维曲面以您指定的颜色发射自己的光.
这里,在 Manipulate 中,滑块用以设置 Glow 颜色. 换句话说,滑块控制圆柱体放射的光的颜色. Lighting 可以被设置为 None 或者 Automatic. 在 Wolfram 语言中,Automatic 是默认 Lighting 方案的明确设置. 顶部Inset 二维矩形表明当没有使用 Lighting 设置时,用于 Glow 设置的原始颜色;它不随 Manipulate 中 Lighting 的设置变化.
若要查看 Lighting 如何与 Glow 交互以决定三维曲面的最终绘制颜色,点击滑块的任何颜色,并且切换 Lighting 的颜色:
Manipulate[Graphics3D[{Glow[RGBColor[r, g, b]], Cylinder[]}, Boxed -> False, Prolog -> Inset[Dynamic[Graphics[{RGBColor[r, g, b], Rectangle[]}]], {Right, Top}, Automatic, Scaled[0.5]], Lighting -> l], Style["Glow", 10, Bold], {r, 0, 1}, {g, 0, 1}, {b, 0, 1}, Delimiter, {{l, None, Style["Lighting", 10, Bold]}, {None, Automatic}}]通过明确给出内在表面颜色影响表面反射的光颜色,您可以对三维曲面最后的颜色获得进一步控制. 为得到更多信息,参见 How to: 控制三维曲面对光照的响应.