【发布时间】:2012-04-25 18:12:36
【问题描述】:
我正在使用 cocos2d 库制作 iOS 游戏。
假设您有两个具有两种不同颜色的对象 - 在 RGB 中定义为
Blue: 0,0,255
Yellow: 255,255,0
我想加蓝色和黄色变成绿色。
为了让事情变得过于复杂,假设蓝色对象比黄色对象大(为了论证,假设比例是 2:1),我添加的蓝色是黄色的两倍 - 如何我正确计算了这个新的(浅绿色)颜色。
我了解 LAB * 颜色空间对于这种“自然颜色”类型的东西很有用,但我不确定如何使用它——尤其是在 cocos2d 对象的上下文中(AFAIK)仅限使用RGB 的配色方案。
非常感谢有关如何实现此功能的实际帮助。多谢!
21/4 更新:所以在 LAB* 中,蓝色+黄色 ≠ 绿色(当您看到 they're at opposite ends of the same channel 时这是有道理的)。对于 SO 的讨论,littlebit 实际上是一个相当棘手的问题。似乎最终的答案是使用一个名为 Krita 的开源软件使用的 Kubelka-Munk 方法。我在任何地方都找不到(公式或代码本身)。
This question 有 a link,它使用 HSL 以类似的方法进行绘画。我会尝试看看它是否有效,我会在这里反馈结果。
与此同时,if anyone knows how to implement Kubelka-Munk 或者我可以在哪里找到执行此操作的代码或其他解决方案,我会非常非常激动!
【问题讨论】:
-
Blue + Yellow永远不会是Green,尽管你在学前班就知道了。这实际上指的是一个简单的减色模型,例如 CMYK,其中1 - Cyan - Yellow ≈ Green(与Cyan ≈ Blue)。
标签: c++ objective-c math colors cocos2d-iphone