4

我想使用 Pov-Ray 生成可以在任何背景颜色的网站中使用的图片。图片需要有透明背景,但要在透明平面上投射反射和阴影。

Output_Alpha=True在 Pov-Ray (3.7) 中,您可以通过在povray.ini文件中设置并作为文件输出来设置背景透明png

您甚至可以通过使用Clear平面(或任何其他对象)上的颜色来获得透明的反射表面。但是,如果将对象的颜色设置为Clear,则不会在其上投射阴影。

是否可以在透明物体上投射阴影?

4

2 回答 2

3

您可以分别渲染阴影和对象并合并生成的图像,如下所示

于 2015-08-27T08:47:57.790 回答
0

m13r建议技术 产生了非常好的渲染效果,但它需要 3 次渲染通道,并且每次都需要对场景进行大量更改。这需要时间并且需要相当多的设置。

在某些情况下,更简单、更诚实地只需两次通过即可获得更好的结果。将背景和地平面都设置为白色,渲染,将它们设置为黑色,再次渲染。假设您在此处切换设置并生成两个文件,white.pngblack.png使用这些灯光定义中的一个或另一个。

//#declare SceneLight = rgb<1,1,1>
#declare SceneLight = rgb<0,0,0>
background { color SceneLight }
plane {
    y, 0
    pigment {
        color SceneLight
    }
}

现在使用此处记录的两种背景技术提取两个图像并提取差异。

magick black.png white.png -alpha off \
    \( -clone 0,1 -compose difference -composite -negate \) \
    \( -clone 0,2 +swap -compose divide -composite \) \
    -delete 0,1 +swap -compose CopyOpacity -composite \
    transparent.png

这种方法的缺点是您在场景照明方面的灵活性较低,并且不能假装从地平面反射任何东西。如果您的对象足够无光泽,不会受到场景背景颜色的严重影响,那么此方法可能适合您。在我的情况下,它节省了一次耗时的渲染过程和大量的场景对象操作。

于 2019-01-15T12:09:25.667 回答