与阴影的Povray透明背景

时间:2014-11-25 18:52:40

标签: transparency povray

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

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

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

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

2 个答案:

答案 0 :(得分:3)

您可以单独渲染阴影和对象,并合并生成的图像,如图所示here

答案 1 :(得分:0)

m13r的technique suggested产生了非常漂亮的效果图,但是它需要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
    }
}

现在两张图像并使用the two background technique documented here提取差异。

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

此方法的缺点是您对场景照明的灵活性较小,并且无法假装将任何东西反射出地面。如果您的对象足够粗糙,不会受到场景背景颜色的严重影响,则此方法可能适合您。就我而言,它节省了一个耗时的渲染过程和大量的场景对象操作。