2013-01-05 86 views
1

我想将艺术资产的色调从一种明亮的颜色调整到另一种颜色,保持单色功能的完整。我将以RGBYTP(红色,绿色,蓝色,黄色,蓝绿色或紫色)颜色开始;然后通过色调调整,我将能够使它看起来像其他RGBYTP彩色图像中的每一个。你如何像真正的色轮那样调整AS3中的色调?

例如,采取这些有色眼球中的任何一个,并通过AS3色调调整,可以使任何这些其他有色眼球。网页/游戏设计中的常用技巧。

eyeballs http://quadradius.com/stuff/RandomImagesForLinking/hue-adjusted-eyeballs.jpg

我经常用使用GreenSock动画平台(TweenLite的/ TweenMax),但两者的核心AS代码和TweenLite的发动机似乎并不如我所料处理色调。我想以60度的增量调整色调色轮,这应该很好地调整所有6种二次色,并从中获得完整的色彩效果。但我实际上得到的是可怕的。实际上,调整RGBYTP颜色的色调会返回非常奇怪的结果;土色调,粉彩,甚至灰色阴影。

bad-hues http://quadradius.com/stuff/RandomImagesForLinking/6-colors-all-hue-adjusted.jpg

下面是我用它来生成所有这些圈子的代码。

for (var j:int = 0; j < 6; j++) { 
     for (var i:int = 0; i < 7; i++) { 
      var sprite:Sprite = new Sprite(); 
      var baseColor:uint; 
      if (j == 0) baseColor = 0xFF0000; 
      if (j == 1) baseColor = 0x00FF00; 
      if (j == 2) baseColor = 0x0000FF; 
      if (j == 3) baseColor = 0xFFFF00; 
      if (j == 4) baseColor = 0xFF00FF; 
      if (j == 5) baseColor = 0x00FFFF; 
      sprite.graphics.beginFill(baseColor); 
      sprite.graphics.drawEllipse(40 * i + 10, 300 + (60 * j) + 10, 40, 40);// positioning 
      addChild(sprite); 
      TweenMax.to(sprite, .5, {colorMatrixFilter:{hue:i * 60 }}); 
     } 
    } 

为什么AS3或TweenLite的/最高不能处理,如Photoshop或艺术家色轮的色彩?我究竟做错了什么?

+0

Flash仅支持RGB和ARGB色彩格式。你需要循环通过色调,并将其转换为RGB格式,然后再应用它 - 谷歌搜索应该提供一些算法来转换 – 2013-01-06 00:07:04

+0

我已经使用了许多人认为是一个很好的算法包; GreenSock平台。它用于补间,转换,定时器和颜色操作;并包含“色调”功能。但即使是他们可以说是受人尊重的色调功能似乎也没有结果。该算法的结果在包含圆圈的图像中。例如,如果你从紫色开始,你永远不会产生黄色。 –

回答

1

我怀疑使用GreenSock平台使用Flash自身的fl.motion.AdjustColor,不执行RGB和HSV之间的特别重大转变,因为你已经发现。你必须考虑到不同颜色的感性亮度,以便它看起来很正确,所以它有点主观。

This page有一个很好的解释和一些示例代码与缩放值更自然的色调转移。您可以使用它来生成flash.filters.ColorMatrixFilter的矩阵,那么您可能需要编写一个函数,该函数将当前补间时间运行,并运行它以使用TweenMax。

+0

谢谢,我阅读了不同强度下颜色的感知。事实证明,使用内置的Flash和Greensock色调代码,根本无法生成某些颜色(取决于您以什么颜色开始)。即紫色永远不会变黄。我在他们的论坛上进行了一次关于它的讨论,并在当时进行了更详细的讨论,因为他们对此有更好的把握。 http://forums.greensock.com/topic/7052-hue-values-around-the-color-wheel-not-saturated-as-expected/ 我结束了类似的结果,使用矩阵,并绕过Adobe的色调码。 –

+0

该页面的第2步似乎正是我所能使用的。而且它比我的绿色论坛上的解决方案更加灵活。如果我有机会,我会重新访问我的旧代码,并使用它们的U = cos(H *π/ 180) W = sin(H *π/ 180)示例。好东西! –

0

两种颜色不会直接在真彩轮上变黑。黄色首先变成棕色,青色首先变成蓝色。黑色之前,棕色是红色最黑的颜色。青色在黑色之前变为蓝色最深的颜色。我不知道任何Java,但我肯定会喜欢这个Java轮。 http://acko.net/blog/farbtastic-jquery-color-picker-plug-in/

黄色的眼睛正在使用RGB渐变变暗,这就是为什么它看起来绿色,对于青色眼睛也是如此。我在本网站上制作的表格中有编码分级。 http://www.realcolorwheel.com/colorwheel.htm 您可以在源页面上获取颜色代码。

唐,RCW

+0

漂亮的色轮,它看起来像你知道你的颜色规则!但不知道这是否回答。在Photoshop中制作的顶级图像只是我想要的一个例子。在Tweenlite软件包中使用内置的_Hue_函数时,我根本没有得到这些结果(_circles_ image)。例如,如果我从红色开始,色调函数会产生一个棕色?紫色永远不会让你接近黄色!蓝色的一个接近黑色?这就像色调算法更适合“挑选另一种漂亮的颜色”,而不是_hue_调整后的输出。寻找更多的AS3算法答案,但是谢谢 –