Mixbox色彩混合库的Rust实现详解

Mixbox色彩混合库的Rust实现详解

mixbox Mixbox is a library for natural color mixing based on real pigments. mixbox 项目地址: https://gitcode.com/gh_mirrors/mi/mixbox

项目概述

Mixbox是一个专业的色彩混合算法库,其Rust实现提供了基于物理的颜料混合功能。与传统的RGB线性插值不同,Mixbox通过先进的色彩科学算法,能够模拟真实世界中颜料混合的效果,特别适合需要高质量色彩表现的应用场景。

快速入门

安装方法

在项目的Cargo.toml文件中添加以下依赖项:

mixbox = "2.0.0"

基础使用示例

Mixbox最简单的使用场景是在两种颜色之间进行插值混合:

fn main() {
    let rgb1 = [0, 33, 133];   // 蓝色
    let rgb2 = [252, 211, 0];  // 黄色
    let t = 0.5;               // 混合比例(0-1之间)

    let [r, g, b] = mixbox::lerp(&rgb1, &rgb2, t);

    println!("混合结果: {} {} {}", r, g, b);
}

这个例子将蓝色和黄色按50%的比例混合,产生的结果会比简单的RGB插值更接近真实颜料混合的效果。

高级功能

多颜色混合

Mixbox支持同时混合多种颜色,并可以指定不同的混合比例:

let z1 = mixbox::rgb_to_latent(&rgb1);  // 将RGB转换为潜在空间表示
let z2 = mixbox::rgb_to_latent(&rgb2);
let z3 = mixbox::rgb_to_latent(&rgb3);

let mut z_mix = [0.0; mixbox::LATENT_SIZE];

// 按指定比例混合颜色(30% rgb1, 60% rgb2, 10% rgb3)
for i in 0..z_mix.len() {
    z_mix[i] = 0.3*z1[i] + 0.6*z2[i] + 0.1*z3[i];
}

let rgb_mix = mixbox::latent_to_rgb(&z_mix);  // 转换回RGB空间

这种方法利用了Mixbox的潜在空间(latent space)表示,能够实现更自然、更符合物理规律的颜色混合效果。

预定义颜料色彩

Mixbox提供了一系列常见颜料的预定义色彩值,这些值经过精心校准,能够准确模拟真实颜料的特性:

| 颜料名称 | RGB值 | 浮点RGB | 线性RGB | |---------|-------|---------|---------| | 镉黄 | 254, 236, 0 | 0.996, 0.925, 0.0 | 0.991, 0.839, 0.0 | | 汉莎黄 | 252, 211, 0 | 0.988, 0.827, 0.0 | 0.973, 0.651, 0.0 | | 镉橙 | 255, 105, 0 | 1.0, 0.412, 0.0 | 1.0, 0.141, 0.0 | | 镉红 | 255, 39, 2 | 1.0, 0.153, 0.008 | 1.0, 0.02, 0.001 | | 喹吖啶酮洋红 | 128, 2, 46 | 0.502, 0.008, 0.18 | 0.216, 0.001, 0.027 | | 钴紫 | 78, 0, 66 | 0.306, 0.0, 0.259 | 0.076, 0.0, 0.054 | | 群青蓝 | 25, 0, 89 | 0.098, 0.0, 0.349 | 0.01, 0.0, 0.1 | | 钴蓝 | 0, 33, 133 | 0.0, 0.129, 0.522 | 0.0, 0.015, 0.235 | | 酞菁蓝 | 13, 27, 68 | 0.051, 0.106, 0.267 | 0.004, 0.011, 0.058 | | 酞菁绿 | 0, 60, 50 | 0.0, 0.235, 0.196 | 0.0, 0.045, 0.032 | | 永久绿 | 7, 109, 22 | 0.027, 0.427, 0.086 | 0.002, 0.153, 0.008 | | 树汁绿 | 107, 148, 4 | 0.42, 0.58, 0.016 | 0.147, 0.296, 0.001 | | 熟赭 | 123, 72, 0 | 0.482, 0.282, 0.0 | 0.198, 0.065, 0.0 |

这些预定义颜料可以直接用于混合计算,确保结果符合艺术家的预期。

技术原理

Mixbox的核心技术基于色彩科学和机器学习算法:

  1. 潜在空间转换:将RGB颜色转换到一个专门设计的潜在空间,在这个空间中,线性混合更接近真实颜料的物理混合效果。

  2. 非线性映射:通过精心设计的非线性函数,模拟颜料的光学特性,包括吸收和散射效应。

  3. 光谱模拟:虽然最终输出是RGB值,但内部计算考虑了光谱特性,使得混合结果更加真实。

应用场景

Mixbox特别适合以下应用:

  • 数字艺术工具中的调色板功能
  • 游戏引擎中的材质混合
  • 工业设计软件的配色系统
  • 教育软件中的色彩理论演示

注意事项

Mixbox库目前仅限非商业用途使用,采用CC BY-NC 4.0许可协议。如需商业用途,需要获取专门的授权。

通过Mixbox,开发者可以轻松实现专业级的色彩混合效果,无需深入研究复杂的色彩科学理论,即可获得令人满意的视觉效果。

mixbox Mixbox is a library for natural color mixing based on real pigments. mixbox 项目地址: https://gitcode.com/gh_mirrors/mi/mixbox

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀姣惠Effie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值