mlybj
求助大佬,这个皮革装备的颜色叠加是怎么算的啊,能解释一下吗(见第四张图),原版1.15.2比如第一张图里只加一个绿色染料是5E7C16(94,124,22),第二张图里只加一个淡蓝色染料是3AB3DA(58,179,218),第三张图里两个同时加就变成了56AB87(86,171,135)

另外我在wiki上找到了这张图,但是我看不懂QAQ,能拿上图的具体数字举个例子代入公式吗



执光
最终颜色是元数据表达,十六进制数值会在物品说明中显示,然而,使用命令的NBT数值设定颜色要使用十进制数值。颜色是很复杂的,具体很难讲,简单一点就是不止有红场黄绿青蓝紫这基本颜色,还有很多很多衍生颜色,比如黄绿色染料。(打字不易,如果有用记得佳评。)

戴兜
有点粗糙,不要在意我的丑字

EmptyLava
本帖最后由 EmptyLava 于 2021-7-18 17:25 编辑

写得太烂了,楼上楼下解释得更好

(=°ω°)丿
绿色是(94,124,22),浅蓝色是(58,179,218),单独染色的时候就可以看出来。
原理就是把格子里的所有染料都拿出来,把颜色一加,颜色总数(染料总数)一加,最后一通计算,得出结果。
# 假设遇到的第一个染料是绿色,redValue,greenValue,blueValue 分别是 94, 124, 22.

代码:

  1. totalRed = totalRed + redValue
  2. totalGreen = totalGreen + greenValue
  3. totalBlue = totalBlue + blueValue
# totalRed,totalGreen,totalBlue 原本是 0(因为皮革帽子原本没染色),现在变成了 94, 124, 22.

代码:

  1. totalMaximum = totalMaximum + max(red, green, blue)
  2. numberOfColors = numberOfColors + 1
# totalMaximum 原本是0,但是现在变成了124(取绿色里 RGB 里最大的 124 然后相加)。
# 总颜色数(染料数) numberOfColors 原本是 0,变成 1。
# 遇到的第二个染料是浅蓝色,redValue, greenValue, blueValue 分别是 58, 179, 218,上述过程再来一遍。

代码:

  1. totalRed = totalRed + redValue
  2. totalGreen = totalGreen + greenValue
  3. totalBlue = totalBlue + blueValue
# totalRed, totalGreen, totalBlue 原本是 94, 124, 22,再把浅蓝色的颜色一加,就变成了 152, 303, 240.

代码:

  1. totalMaximum = totalMaximum + max(red, green, blue)
  2. numberOfColors = numberOfColors + 1
# totalMaximum 原本是124,现在变成了 342(取浅蓝色里 RGB 里最大的 218 然后相加)。
# 总颜色数(染料数) numberOfColors 原本是 1,变成 2。
# 然后没染料了,退出循环。
# 平均 RGB = 之前计算出的总的 RGB 值 / 颜色数。

代码:

  1. averageRed = totalRed / numberOfColors = 152/2 =76
  2. averageGreen = totalGreen / numberOfColors = 303/2=151.5
  3. averageBlue = totalBlue / numberOfColors = 240/2 = 120
  4. averageMaximum = totalMaximum / numberOfColors = 342/2 = 171
# maximumOfAverage 得到平均 RGB 里最大的。

代码:

  1. maximumOfAverage = max(averageRed, averageGreen, averageBlue) = 151.5
  2. gainFactor = averageMaximum / maximumOfAverage = 171/151.5 = 1.1287128712871286
# 计算最终结果。

代码:

  1. resultRed = averageRed * gainFactor = 76 * 1.1287128712871286 = 85.78217821782178
  2. resultGreen = averageGreen * gainFactor = 151.5 * 1.1287128712871286 = 170.99999999999997
  3. resultBlue = averageBlue * gainFactor = 120 * 1.1287128712871286 = 135.44554455445544
# 四舍五入之后就是 (86,171,135)。
# 我不会编程,以上内容都是我猜的(

下一页 最后一页