gpt4 book ai didi

colors - POV-Ray 2D 渐变(多边形)

转载 作者:行者123 更新时间:2023-12-04 10:41:06 26 4
gpt4 key购买 nike

所以,我想要做的是在自定义 2D 多边形上应用颜色渐变,但我找不到任何有关如何执行此操作的说明/示例(我只能找到 3D 的)。具体来说,我想这样做:

enter image description here

总的来说,我想知道如何从(多边形的)中心向外应用一个简单的径向渐变。

最佳答案

好的,所以我想通了,因为我似乎无法在任何地方找到直接的答案,所以我不妨回答我自己的问题:

1) 要在多边形上做一个渐变,您只需要带有 color_map 的球形颜料。我举一个三角形的例子:

#declare pol1=polygon{3,<-1,0> <1,0> <0,1>} //Declare a triangle
polygon{pol1 pigment{spherical color_map{[0.0 rgb <1,0,0>] [1.0 rgb <0,0,1>] } translate<0,0,0>} }

因此,它的作用是创建一个径向渐变,其中心位于绝对 (0,0,0) 处,您可以根据需要对其进行平移。 彩图定义了两种颜色(rgb <1,0,0> 和 rgb <0,0,1>),它们前面的数字基本上控制了渐变(颜色相对于网格系统开始/结束的位置)。不会详细解释以便您可以阅读更多 here .

2)要进行更多渐变,请为每个角落说一个我找不到在单个形状上应用 3 个不同渐变的方法。赞 color_map 还有一个 渐变图但这无济于事,因为您必须定义一种颜料的结束位置和下一种颜料的开始位置。因此,我找到解决此问题的唯一方法是使用圆柱体(使用 difference 命令)移除多边形的角,然后用相位为所需梯度的圆柱体(使用 intersection 命令)替换它们。即使这是一种凌乱的方式,它实际上并不会影响性能,这是我主要关心的问题,所以我会继续使用它,直到找到更好的东西。所以这是一个例子(我不打算进一步解释它,这个答案越来越大):
#declare pos1=array[2]{-1,0}; //the corners' coordinates
#declare pos2=array[2]{1,0};
#declare pos3=array[2]{0,1};
#declare cyl_rad=0.5;

#declare pol1=polygon{3,<pos1[0],pos1[1],0> <pos2[0],pos2[1],0> <pos3[0],pos3[1],0>} //Declare the polygon
#declare cyl1=cylinder{<pos1[0],pos1[1],-0.01> <pos1[0],pos1[1],0.01>,cyl_rad} //Declare the cylinder that will "replace" the first corner
#declare cyl2=cylinder{<pos2[0],pos2[1],-0.01> <pos2[0],pos2[1],0.01>,cyl_rad} //Declare the cylinder that will "replace" the second corner
#declare cyl3=cylinder{<pos3[0],pos3[1],-0.01> <pos3[0],pos3[1],0.01>,cyl_rad} //Declare the cylinder that will "replace" the third corner
difference{polygon{pol1} cyl1 cyl2 cyl3 pigment {color_part}} //The polygon with its corners "cut"
intersection{polygon{pol1} cyl3 pigment{spherical color_map{[0.0 rgb <1,0,0>] [0.95 rgb <0,0,1>]} scale<cyl_rad,cyl_rad,cyl_rad> translate <pos3[0],pos3[1],0>} } //Replacing the corners with the coloured cylinders
intersection{polygon{pol1} cyl2 pigment{spherical color_map{[0.0 rgb <1,0,0>] [0.95 rgb <0,1,1>]} scale<cyl_rad,cyl_rad,cyl_rad> translate <pos2[0],pos2[1],0>} }
intersection{polygon{pol1} cyl1 pigment{spherical color_map{[0.0 rgb <1,0,0>] [0.95 rgb <0,1,0>]} scale<cyl_rad,cyl_rad,cyl_rad> translate <pos1[0],pos1[1],0>} }

关于colors - POV-Ray 2D 渐变(多边形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59930447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com