【问题标题】:Smooth transition between two colors两种颜色之间的平滑过渡
【发布时间】:2014-03-17 05:30:45
【问题描述】:

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

I.E.此图取自Wikipedia

当我尝试使用我的代码 (C++) 做同样的事情时,首先想到的是使用 HSV 颜色空间,但会出现令人讨厌的中间颜色。

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

【问题讨论】:

标签: colors


【解决方案1】:

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

警告:假设您使用的是某种 OpenGL。

【讨论】:

    【解决方案2】:

    我觉得我可以回答的唯一部分问题是,您必须以某种方式在 HSV 的 H 部分中转换过多的值。

    • H 代表色调(不同的颜色,如渐变中的彩虹效果)。在这种情况下,在我看来,您只是合并了 2 种不同的色调。
    • S 代表饱和度(颜色强度从高度饱和到 灰色)
    • L 表示亮度(或多或少的亮度(来自您的 颜色最白)

    【讨论】:

      【解决方案3】:

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

      为避免这种情况,我建议将一种颜色置于另一种之上,然后将其淡化为透明。这样,上面的过渡就有一个纯色基础。

      【讨论】:

        【解决方案4】:

        我不知道您使用什么来显示(DirectX、Windows 显示器或其他),但尝试只使用两个图像,一个纯色和一个从纯色渐变到透明的单色。这可能行得通。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-19
          • 2014-02-11
          • 2022-12-25
          • 1970-01-01
          • 2011-09-21
          • 2014-03-17
          相关资源
          最近更新 更多