求助大佬,这个皮革装备的颜色叠加是怎么算的啊,能解释一下吗(见第四张图),原版1.15.2比如第一张图里只加一个绿色染料是5E7C16(94,124,22),第二张图里只加一个淡蓝色染料是3AB3DA(58,179,218),第三张图里两个同时加就变成了56AB87(86,171,135)
另外我在wiki上找到了这张图,但是我看不懂QAQ,能拿上图的具体数字举个例子代入公式吗
另外我在wiki上找到了这张图,但是我看不懂QAQ,能拿上图的具体数字举个例子代入公式吗
最终颜色是元数据表达,十六进制数值会在物品说明中显示,然而,使用命令的NBT数值设定颜色要使用十进制数值。颜色是很复杂的,具体很难讲,简单一点就是不止有红场黄绿青蓝紫这基本颜色,还有很多很多衍生颜色,比如黄绿色染料。(打字不易,如果有用记得佳评。)
本帖最后由 EmptyLava 于 2021-7-18 17:25 编辑
写得太烂了,楼上楼下解释得更好
写得太烂了,楼上楼下解释得更好
绿色是(94,124,22),浅蓝色是(58,179,218),单独染色的时候就可以看出来。
原理就是把格子里的所有染料都拿出来,把颜色一加,颜色总数(染料总数)一加,最后一通计算,得出结果。
# 假设遇到的第一个染料是绿色,redValue,greenValue,blueValue 分别是 94, 124, 22.
# totalRed,totalGreen,totalBlue 原本是 0(因为皮革帽子原本没染色),现在变成了 94, 124, 22.
# totalMaximum 原本是0,但是现在变成了124(取绿色里 RGB 里最大的 124 然后相加)。
# 总颜色数(染料数) numberOfColors 原本是 0,变成 1。
# 遇到的第二个染料是浅蓝色,redValue, greenValue, blueValue 分别是 58, 179, 218,上述过程再来一遍。
# totalRed, totalGreen, totalBlue 原本是 94, 124, 22,再把浅蓝色的颜色一加,就变成了 152, 303, 240.
# totalMaximum 原本是124,现在变成了 342(取浅蓝色里 RGB 里最大的 218 然后相加)。
# 总颜色数(染料数) numberOfColors 原本是 1,变成 2。
# 然后没染料了,退出循环。
# 平均 RGB = 之前计算出的总的 RGB 值 / 颜色数。
# maximumOfAverage 得到平均 RGB 里最大的。
# 计算最终结果。
# 四舍五入之后就是 (86,171,135)。
# 我不会编程,以上内容都是我猜的(
原理就是把格子里的所有染料都拿出来,把颜色一加,颜色总数(染料总数)一加,最后一通计算,得出结果。
# 假设遇到的第一个染料是绿色,redValue,greenValue,blueValue 分别是 94, 124, 22.
代码:
- totalRed = totalRed + redValue
- totalGreen = totalGreen + greenValue
- totalBlue = totalBlue + blueValue
代码:
- totalMaximum = totalMaximum + max(red, green, blue)
- numberOfColors = numberOfColors + 1
# 总颜色数(染料数) numberOfColors 原本是 0,变成 1。
# 遇到的第二个染料是浅蓝色,redValue, greenValue, blueValue 分别是 58, 179, 218,上述过程再来一遍。
代码:
- totalRed = totalRed + redValue
- totalGreen = totalGreen + greenValue
- totalBlue = totalBlue + blueValue
代码:
- totalMaximum = totalMaximum + max(red, green, blue)
- numberOfColors = numberOfColors + 1
# 总颜色数(染料数) numberOfColors 原本是 1,变成 2。
# 然后没染料了,退出循环。
# 平均 RGB = 之前计算出的总的 RGB 值 / 颜色数。
代码:
- averageRed = totalRed / numberOfColors = 152/2 =76
- averageGreen = totalGreen / numberOfColors = 303/2=151.5
- averageBlue = totalBlue / numberOfColors = 240/2 = 120
- averageMaximum = totalMaximum / numberOfColors = 342/2 = 171
代码:
- maximumOfAverage = max(averageRed, averageGreen, averageBlue) = 151.5
- gainFactor = averageMaximum / maximumOfAverage = 171/151.5 = 1.1287128712871286
代码:
- resultRed = averageRed * gainFactor = 76 * 1.1287128712871286 = 85.78217821782178
- resultGreen = averageGreen * gainFactor = 151.5 * 1.1287128712871286 = 170.99999999999997
- resultBlue = averageBlue * gainFactor = 120 * 1.1287128712871286 = 135.44554455445544
# 我不会编程,以上内容都是我猜的(