两种颜色之间的平滑过渡

时间:2014-02-17 16:50:55

标签: colors

我想弄清楚如何在两种颜色之间实现平滑过渡。

即。此图片来自Wikipedia

enter image description here

当我尝试使用我的代码(C ++)做同样的事情时,想到的第一个想法就是使用HSV色彩空间,但是显示出令人烦恼的中间颜色。

enter image description here

实现这一目标的好方法是什么?

4 个答案:

答案 0 :(得分:1)

这听起来很奇怪,也许......但是顶点着色器会很好地完成这个。如果那是一个四边形(两个tris),那么在左边2个顶点放置一种颜色,在右边放置另一种颜色,它应该很好地融合。

警告:假设你正在使用某种OpenGL。

答案 1 :(得分:0)

我觉得我能回答的问题的唯一部分是你必须以某种方式在HSV的H部分过渡太多的值。

  • H代表色调(不同颜色,如渐变中的彩虹效果)。在这种情况下,我认为你只是合并了两种不同的色调。
  • S用于饱和(颜色强度从高度饱和到 灰色)
  • L代表轻盈(或多或少的光度(来自你的) 最白的颜色)

答案 2 :(得分:0)

这是由于两者之间缺乏颜色造成的,因为黑色(或你的灰色)=去饱和。这就像将两个透明的淡入淡出图像放在一起,中间有一个透视区域,因为2 50%的透明度不等于100%的纯色。

为了避免这种情况,我建议将一种颜色放在另一种颜色之上并将其淡化为透明。这样就有一个纯色底座,上面有过渡。

答案 3 :(得分:0)

我不知道你使用什么显示(DirectX,Windows显示器或其他什么),但尝试只有两个图像,一个纯色和一个颜色,从固体到透明前面淡入淡出。这可能有用。