我必须以自然的方式混合一些颜色.这意味着
blue + yellow = green
blue + red = purple
Run Code Online (Sandbox Code Playgroud)
等等.我得到了RGB-Values的颜色.当我尝试混合它们时,我得到了正确的"RGB"结果
green + red = yellow
yellow + blue = white
Run Code Online (Sandbox Code Playgroud)
但不是正确的"天然湿涂料" - 结果.如何以自然的方式混合RGB有什么好主意?
如果有人知道Microsoft.Xna.Framework.Graphics命名空间内的解决方案会很好,但通用解决方案也会有帮助:)
@Jay Bazuzi:
请发布一个代码示例,显示您要执行的操作.
当然 - 这是我混合两种RGB颜色的功能.
public Color colorMixer(Color c1, Color c2)
{
int _r = Math.Min((c1.R + c2.R),255);
int _g = Math.Min((c1.G + c2.G),255);
int _b = Math.Min((c1.B + c2.B),255);
return new Color(Convert.ToByte(_r),
Convert.ToByte(_g),
Convert.ToByte(_b));
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我在这个帖子中读到的内容非常有前途 - 我将C1和C2转换为L a b*,混合它们 - 将其转换回RGB并返回该颜色.
我试图混合两个源RGB矢量来创建第三个"合成矢量",这是前两个的直观组合.
理想情况下,我可以模仿"真正的油漆混合特性",但为了简单起见,我试图找到一种方法,其结果看起来直观地像你从组合两个源rgb得到的结果.
最低限度,这些特征:
RED + BLACK =深红色
+白色=浅红色
最佳,也具有真正的油漆特性:
RED + BLUE =紫色
红色+黄色=橙色
(等)
-
我目前通过添加两个源RGB矢量/ 255,然后归一化(并乘以255)来做"懒惰的方式".所以,使用这个:[Red = <1,0,0>*255] + [Blue = <0,0,1>*255]给出Magenta = <1,0,1>/sqrt(2)*255,虽然其他颜色不太直观甚至不可见......我需要一个更好的方法!请帮忙 :-)
我目前正在尝试在RGB(红色,绿色,蓝色)色彩空间和RYB(红色,黄色,蓝色)色彩空间之间转换颜色并再次返回.
基于下面的文章中的细节,我能够使用三线性插值从RYB转换为RGB - 其中参数权重(s,t,u)是RYB颜色,并且立方体的顶点是RGB空间中的3d点.
为可视化绘制灵感的颜色混合和合成 - Gossett和Chen - 第2.1节 - 实现细节
我的困难在于扭转转换过程.
第二篇论文引用了该技术的使用,并且还表明使用牛顿法实现了逆转换.但没有提供进一步的细节.这可能表明在求解三线性插值方程时找到了根.
从注重色彩对比看绘画风格向摄影形象的转换 - 张晓燕,Zhang Xiaoyan 康斯特布尔,M.; 莹鹤;
在我用方程扩展这个问题之前,是否有人用Java/C/C++/C#等语言看到或解决了这个问题?
我目前的方法是采用三线性插值的正演方程(RYB到RGB),展开和重新排列,为3个未知数(参数权重:s,t和u)提供3个联立方程,然后找出如何使用Newton-Raphson方法.我是否以正确的方式解决这个问题?
我将很快编辑这个问题以提供方程式.
非常感谢你的时间,
本
我正在使用cocos2d库制作iOS游戏.
假设您有两个具有两种不同颜色的对象 - 以RGB格式定义
Blue: 0,0,255
Yellow: 255,255,0
Run Code Online (Sandbox Code Playgroud)
我想添加蓝色和黄色来制作绿色.
为了使事情复杂化,让我们说Blue对象比Yellow对象更大(为了说明,我们说比例为2:1),我加入的蓝色是黄色的两倍 - 我如何计算这个新的(浅绿色)颜色正确.
我理解LAB*Color Space对于这种"自然色"的东西很有用,但我不知道如何使用它 - 特别是在cocos2d对象的上下文中,(AFAIK)仅限于在其中使用RGB配色方案.
我真的很感激如何实现这一点的实际帮助.谢谢堆!
21/4更新:所以在LAB*中蓝色+黄色≠绿色(当你看到它们位于同一个通道的两端时才有意义).它实际上是一个相当棘手的问题,一个小 一点的讨论SO.似乎最终的答案是使用Kubelka-Munk方法,即一种名为Krita的开源软件.我找不到任何地方(公式或代码本身).
这个问题有一个链接,它使用HSL以类似的方法绘制.我将尝试查看它是否有效,我将在此处反馈结果.
与此同时,如果有人知道如何实现Kubelka-Munk或者我可以找到代码来执行此操作,或者其他解决方案,我会非常非常激动!
我试图在每次孵化时在两个不同的盒子中为我的海龟分配一个颜色酿酒师,并找到每个孵化中海龟的平均颜色.
我可以用托盘扩展轻松完成它,但它没有为Netlogo 5.1更新,因此,我使用渐变扩展,使用RGB颜色([ n n n])作为输入和输出,因此,我找不到颜色的平均值.
这是我的代码的相关部分:
hatch 1
[ set generation generation + 0.1
ifelse ( tlake = "A" )
[ set color gradient:scale [ [255 0 0 ] [255 255 0] [0 0 255] ] (generation) 0 500 ]
[ set color gradient:scale [ [255 0 0 ] [255 255 0] [0 0 255] ] (generation) 500 0 ]
set AVEA mean [color] of (turtles with [tlake = "A"])
set AVEB mean [color] of (turtles with …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用彩色按钮混合任何颜色组合,这些按钮输出特定的十六进制数字与引导程序中的滑动条组合,允许用户指示他们想要使用的颜色百分比.
我无法让滑块正常运行,我不知道为什么.
我确实需要一些帮助将这些代码组合成一个可以用于我的艺术课程的工作算法.完整的代码可以在这里找到:
https://jsfiddle.net/mw7optL5/289/
//Hex blending algorithm
var mix = function(color_1, color_2, weight) {
function d2h(d) { return d.toString(16); } // convert a decimal value to hex
function h2d(h) { return parseInt(h, 16); } // convert a hex value to decimal
weight = (typeof(weight) !== 'undefined') ? weight : 50; // set the weight to 50%, if that argument is omitted
var color = "#";
for(var i = 0; i <= 5; i += 2) { // loop through each …Run Code Online (Sandbox Code Playgroud)