使用POV-Ray进行光线跟踪:25天内25个场景(2013)

2020-05-02 18:03:51

四年前,我用Java编写了一个简单的光线跟踪器来呈现源代码中硬编码的ascene。在写完这本光线跟踪器后,我开始了解到互联网上免费提供的复杂的光线跟踪引擎。POV-Ray似乎是最受欢迎的引擎之一,我决定学习使用它。然而,在过去的四年里,我从来没有花时间去学习它。最后,在2013年5月,我决定自学使用POV-Ray进行光线跟踪。这项活动包括学习……。

该场景由三个球体和三个长方体组成。场景由三个点光源照亮。

一个光源从场景的右上角照射,该光源在相机后面。这使得绿色方框的阴影投射在蓝色的球上,蓝色的球的阴影投射在黄金海岸上。

另一个是从场景的左侧发出的光芒。这个光源也在相机后面。这会将红色方框的较小阴影投射到蓝球上,将绿色方框的阴影投射到橘子球上,将蓝色方框的阴影投射到浅粉色方框上。

在浴缸的右下角有第三个光源。这个光源出现在摄像机的前面,这使得红色方框的阴影更长地投射在蓝色的球上。

白色方框位于原点的中心。相机被放置在原点后面10个单位。一个光源被放置在原点后面10个单位,即相机所在的相同位置。还有另一个光源从场景的左上角照射。

除右下角象限的三个方框外,所有方框的尺寸都与白色方框相同。

红色方框平移为<;2,2,2>;,即距原点左侧2个单位,原点上方2个单位,在与图像垂直的方向上距原点更远2个单位。

绿色方框被平移为<;5,5,2>;,即它已进一步向右上角移动。因此,我们可以看到更多的它的左面和底面。

蓝色方框被转换为<;5,5,5>;,即它被放置在绿色方框后面3个单位。结果,它看起来比绿色的盒子小。

黄色方框首先绕z轴旋转45°,然后左移5个单位。

青色长方体首先左移5个单位,然后长方体绕z轴旋转45°。在渲染的图像中,可以看到整个长方体由于旋转而绕z轴运行,并且在这个轨道上占据了一个距离黄色长方体45°的新位置。

棕色盒子的长度首先沿x轴翻倍,然后绕y轴旋转45°。结果,拉长的脸向左旋转。然后将其平移到原点下方的新位置,稍微靠右一点。

粉红色的长方体首先绕y轴旋转45°。然后沿x轴按因子2进行缩放。结果,沿x轴移动的盒子的对角线似乎被拉长了。最后,此框被平移并放置在棕色框的正下方。

栗色盒子首先沿y轴旋转45°。然后平移到粉红色盒子正下方的一个新位置。最后,沿x轴按因子2进行缩放。结果,长方体似乎沿着x轴进一步移动。此外,它沿x轴的对角线似乎是拉伸的。

此场景中有两个光源:一个位于摄影机所在的位置,另一个位于场景的左侧。

由于Phong高亮显示,球体和圆环看起来是镜面反射的。结果,在天空中也可以看到两个亮点。一个点更靠近摄影机,而另一个点在球体的左侧。这些斑点是由暮光之源造成的。在舌尖上也可以看到类似但更暗淡的闪光点。圆环上的镜面反射高光看起来很软,因为用于Phong高光的饱和度值较小,而用于圆环的饱和度较低。

除了使球体镜面反射外,它还具有疯狂的轻微反射。因此,在球体的下半球可以看到微弱的环面反射。

在这个场景中有两个光源:一个在雪橇的中心,另一个在与摄像机相对的墙壁的顶部,墙壁是有光泽的,因此稍微反射了场景。

照相机对面的墙上有一面镜子。这面镜子有一个木框。摄像机后面墙上的一扇门的倒影可以在摄像机对面的墙上看到。

有一个水晶球放在木块上。地板上还有另外两个彩色球。

这个场景中的房间与上一个场景中的房间相似,但是在这个场景中,地板是反光的,而不是墙壁。这个场景中没有球,而木块上有两个棱镜。摄像机后面的门的倒影可以从摄像机对面墙上的镜子中看到。

该场景包含漂浮在水面上的橡皮管。有几个地方