Công nghệ pha trộn sắc tố cho hội họa kỹ thuật số
(scrtwpns.com)- Nội suy RGB trong hội họa kỹ thuật số có thể trông khác với cách màu vẽ thật hòa trộn; Mixbox là thư viện nhằm cải thiện điều này bằng pha trộn dựa trên sắc tố
- Lập trình viên chỉ cần truyền vào hai màu và tỷ lệ pha trộn như
lerphiện có; Mixbox trả về màu kết quả theo dạng đầu vào RGB · đầu ra RGB - Mixbox 2.0 hoạt động với C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust và hỗ trợ các môi trường Unity, Android Studio, P5js, WebGL, Godot
- Mục tiêu là giảm pha trộn bị đục trong smudge, layering cọ texture, gradient dựa trên màu tối, đồng thời tạo ra các màu trung gian và biến thiên màu phong phú hơn
- Đây không phải plugin để người dùng tự cài đặt mà là mã cho blending mode, nên để dùng trong công cụ vẽ thực tế cần được nhà phát triển phần mềm đó tích hợp
Vấn đề màu kỹ thuật số không pha trộn như màu vẽ thật
- Cách pha trộn màu trong phần mềm vẽ thông thường không hoạt động giống sắc tố thật
- Mixbox là thư viện nhằm triển khai pha trộn màu gần với màu vẽ thật trong hội họa kỹ thuật số
- Bên trong, nó xử lý màu như sắc tố dựa trên Kubelka & Munk, nhưng API được cung cấp ở dạng đơn giản: đầu vào RGB và đầu ra RGB
- Tài liệu liên quan:
Hiệu ứng màu gần với màu vẽ
-
Gradient phong phú có biến thiên màu
- Có thể tạo các màu pha trộn tự nhiên và sống động
- Có thể kỳ vọng độ chuyển phong phú hơn trong nét cọ
- Cọ smudge được dùng để tạo gradient tự nhiên thay vì pha trộn bị đục
- Ngay cả khi layering các nét cọ texture, màu không bị giảm bão hòa mà vẫn tạo được độ chuyển phong phú và sống động
- Chỉ bằng lực nhấn bút, có thể tạo gradient sâu bắt đầu từ màu tối
Trường hợp ứng dụng và demo
- Mixbox được dùng như một thành phần cốt lõi của Rebelle, một công cụ vẽ cung cấp tính năng dầu kỹ thuật số và màu nước
- Trong add-on Flip Fluids cho Blender, Mixbox được dùng để biểu đạt màu sắc chất lỏng chân thực
- Có cung cấp demo painter để trải nghiệm trực tiếp
- Có thể trực tiếp thao tác với đồ họa hoặc mã qua các ví dụ lập trình chạy trong trình duyệt
Cách lập trình viên sử dụng
- Mixbox cung cấp giao diện
lerpcổ điển - Lập trình viên truyền vào hai màu RGB và tỷ lệ pha trộn
t, rồi nhận kết quả RGB đã pha trộn - Mã ví dụ được cung cấp ở các dạng C/C++, GLSL, Javascript, Python, Java/Android, Rust, Unity/C#
- Ví dụ trong tài liệu lặp lại cấu trúc pha màu xanh lam
rgb(0, 33, 133)và màu vàngrgb(252, 211, 0)vớit = 0.5 - Ngôn ngữ và môi trường hỗ trợ:
- Ngôn ngữ: C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust
- Engine · framework: Unity, Android Studio, P5js, WebGL, Godot
Cách tích hợp và giấy phép
- Mixbox không phải plugin để người dùng tự cài đặt
- Để đưa vào phần mềm vẽ, nhà phát triển phần mềm đó cần tích hợp dưới dạng mã cho blending mode mới
- Nếu muốn công cụ vẽ ưa thích của mình có Mixbox, người dùng có thể gửi yêu cầu trên diễn đàn người dùng hoặc kênh hỗ trợ
- Adobe Photoshop: community.adobe.com
- Adobe Fresco: adobefresco.uservoice.com
- Procreate: folio.procreate.art/discussions
- Corel Painter: corel.com/en/support
- Mixbox được phân phối theo giấy phép CC BY-NC 4.0, cho phép đánh giá miễn phí
- Ở giai đoạn chuẩn bị phát hành sản phẩm thương mại, cần thiết lập giấy phép thương mại
Nguyên lý pha trộn sắc tố
- Pha trộn sắc tố thật không thể được giải thích chỉ bằng pha trộn cộng hoặc pha trộn trừ đơn giản; cả hai tác động kết hợp với nhau
- Khi trộn màu vẽ từ tuýp, ánh sáng đi vào vật liệu, liên tục bị tán xạ và hấp thụ, từ đó tạo ra màu cuối cùng
- Quá trình này được giải thích bằng tán xạ dưới bề mặt (subsurface scattering)
- Tài liệu giải thích thêm:
Tên các sắc tố có trong Mixbox
- Tên các sắc tố mà Mixbox xử lý như sau
- Cadmium Yellow Light, Hansa Yellow, Cadmium Yellow Deep
- Cadmium Orange Light, Cadmium Orange
- Cadmium Red Light, Cadmium Red Medium, Pyrrole Red
- Alizarin Crimson, Quinacridone Magenta
- Cobalt Violet, Ultramarine Violet
- Ultramarine Blue, Cobalt Blue, Phthalo Blue, Cerulean Blue, Prussian Blue
- Phthalo Green, Permanent Green, Permanent Green Light, Sap Green
- Burnt Sienna, Indian Red, Bone Black
1 bình luận
Ý kiến trên Hacker News
Năm 2012, nhóm phát triển ứng dụng vẽ Paper cho iPad từng công bố một nội dung thú vị về pha trộn màu: https://www.fastcompany.com/3002676/magical-tech-behind-pape...
Tóm lại, ban đầu họ đã triển khai hành vi pha trộn sắc tố thực tế, nhưng trong thử nghiệm người dùng, những người chưa từng vẽ tranh không tạo được màu mong muốn bằng cách pha trộn và thường kết thúc với màu nâu. Vì vậy họ phải tạo ra một thuật toán pha trộn phi thực tế nhưng mang lại cảm giác trực quan hơn
Pha trộn sơn dầu là một kỹ năng phải học và không hoạt động theo cách trực quan, nên có lẽ nó chỉ hữu ích với những người đã vẽ bằng chất liệu thật hoặc muốn học điều đó
Ngoài ra ArtRage có thể được xem là phần mềm vẽ thực tế nhất trong hơn 10 năm qua, có chế độ pha trộn màu thực, và có vẻ đó không phải là mặc định. Nó cho kết quả gần hơn nhiều so với kết quả trên trang mẫu: https://i.ibb.co/T0GwbDV/artrage-mixing.jpg bên phải là khi bật pha trộn màu thực
Khi xem trang web, ban đầu tôi không biết rằng phần mềm vẽ không thực sự cố gắng pha trộn màu vượt quá phép nội suy đơn giản, và tôi nghĩ vật lý liên quan đến ánh sáng khá phức tạp, hơn nữa có nhiều thông tin đã mất trong RGB nên chắc sẽ khó khôi phục
Kéo xuống một chút thì thấy có đoạn mã dùng như thư viện, nhưng tôi ngạc nhiên khi thấy nó tính toán trong RGB. Bấm vào liên kết bài báo thì thấy điểm cốt lõi là tạo ra một không gian màu tiềm ẩn biểu diễn màu RGB như hỗn hợp các sắc tố cơ bản cộng với phần dư cộng tính, rồi thao tác các giá trị tiềm ẩn đó bằng phép toán tuyến tính để tạo ra kết quả hợp lý có thể kỳ vọng
Rất thông minh, và có vẻ là một ví dụ tốt về việc tận dụng các kỹ thuật học máy hiện đại bên ngoài lĩnh vực mô hình ngôn ngữ đang thịnh hành. Bên trong còn dùng cả không gian màu tri giác và tri thức tiên nghiệm dựa trên vật lý, nên đây là một công trình ấn tượng và đẹp về mặt kỹ thuật
Nó cũng liên quan đến một ý tưởng tôi đã nghĩ từ lâu. Tôi tự hỏi liệu các mô hình tạo ảnh hoặc mô hình mã hóa ảnh có hoạt động tốt hơn không nếu đưa vào dữ liệu bước sóng, hoặc ít nhất là một không gian màu đồng đều về tri giác, thay vì RGB. Điều đó có vẻ gần với sự thật hơn là dùng đại khái những bước sóng mà các tế bào nón của chúng ta tình cờ phản ứng
Vì những lý do này và các lý do khác, thường có một khoảng cách lớn giữa kích thích và tri giác, do đó không tồn tại thứ gọi là không gian màu đồng đều về tri giác
Sơn có các tính chất toán học có thể dự đoán được về màu mà nó tạo ra khi được pha trộn. Chỉ là vì chúng pha trộn theo cách phi tuyến nên điều đó không trực quan với những người chưa luyện pha sơn nhiều
Photoshop và các chương trình so sánh khác trên trang chủ yếu cho thấy kiểu pha trộn tuyến tính mà đa số mọi người trực giác kỳ vọng
Nếu bạn quan tâm đến cả màu cộng tính của kỹ thuật số lẫn màu trừ tính của vật liệu vật lý thì nội dung này khá thú vị
Cái này đã tồn tại từ vài năm trước, nhưng bị hạn chế lớn vì giấy phép phi thương mại và hạn chế
https://krita-artists.org/t/implementing-mixbox-mixing-for-k...
https://invent.kde.org/graphics/krita/-/merge_requests/1783
https://krita-artists.org/t/can-we-get-mixbox-on-krita/64201...
Tôi nhớ hồi Windows 3.0 có một phần mềm tên là Fractal Designer Painter. Nó có nhiều engine mô phỏng khá chính xác các chất liệu như pastel, sơn dầu, màu nước, gouache, cũng như mô phỏng việc pha màu, nét cọ, lực nhấn, v.v.
Vào thời màn hình 800x600x24-bit còn là xa xỉ, trông nó chân thực đến khó tin, và chạy rất chậm trên máy i486. Vừa tìm thử thì thấy giờ nó đã thành Corel Painter
Không biết hiện giờ nó còn tốt không, và các thuật toán ngày xưa lẫn hiện tại so với thư viện mới này thế nào. Tiếc là các tác giả không so sánh với Corel Painter
Lý do tôi dùng Painter cho nghệ thuật số từ thập niên 90 là vì nó pha màu tốt và rất khớp với các công cụ mỹ thuật thật. Không chỉ sơn, mà còn có rất nhiều lựa chọn như pastel, bút chì, bút mực, v.v.
Tuy nhiên nó không cung cấp các tính năng đó dưới dạng thư viện để đưa vào ứng dụng của riêng bạn, nên điều đó đúng là nghe mới mẻ và hay. Nhưng hàm ý rằng trước đây chưa từng làm được thì khá sai
Tôi tự hỏi vì sao Secret Weapons lại không nhận được khoản đầu tư mạo hiểm cỡ 100 triệu USD vào 2–3 năm trước khi cơn sốt video AI bắt đầu
Họ xuất hiện trước với EbSynth, hệ thống chuyển phong cách video-sang-video và nội suy keyframe dựa trên AI đầu tiên được dùng rộng rãi: https://ebsynth.com/
EbSynth đã tạo ra nhiều người sáng tạo tương tự các diễn viên hài như Joel Haver: https://www.youtube.com/watch?v=SY3y6zNTiLs&list=PLKtIcOP0Wv...
Nhiều công ty như Kaiber.ai cũng xây dựng công nghệ dựa trên EbSynth và nhận được seed funding lớn: https://kaiber.ai/
Các nghệ sĩ lớn cũng dùng EbSynth trực tiếp hoặc thông qua các công ty kiểu này trong MV. Linkin Park: https://www.youtube.com/watch?v=7NK_JOkuSVY, Magdalena Bay: https://www.youtube.com/watch?v=dXLCHvRsgRQ
Secret Weapons từng ở vị thế rất tốt để thống trị video AI và công cụ sáng tạo AI, nhưng nhìn bề ngoài thì có vẻ họ đã bỏ lỡ cơ hội đó
EbSynth trông giống một plugin Final Cut Pro để masking và tracking hơn. Nhóm khách hàng dự kiến có thể tương tự, nhưng năng lực và tài nguyên cần có cho đội ngũ kỹ thuật thì khá khác nhau
Nói Secret Weapons đã sẵn sàng thống trị video AI và công cụ sáng tạo thì có vẻ hơi quá
Tôi không biết là từ 3 năm trước họ đã đi xa đến mức này
Tôi không mấy quan tâm đến bản thân thư viện, chỉ muốn phần triển khai toán học thuần túy để dùng trong shader, v.v. Thuật toán GLSL ở đây và hàm cần tìm là
vec3 mixbox_lerphttps://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...
Tôi không có thời gian làm demo, nhưng trông nó được tối ưu khá tốt và trong ví dụ cũng đẹp. Công việc của những người làm ra nó thật xuất sắc
Có các thảo luận trước đây từ 3 năm trước
https://news.ycombinator.com/item?id=30116316 71 điểm, 15 bình luận
https://news.ycombinator.com/item?id=30033611 60 điểm, 13 bình luận
Không biết có ai đã dùng Rebelle, ứng dụng vẽ thương mại sử dụng cách này, chưa
Tính năng ít hơn Painter, nhưng điều đó lại là ưu điểm
Thứ còn thiếu là cảm giác đúng của các chất liệu khô như than, và khả năng tích hợp sâu với bề mặt nền. Hiện tại phần lớn nó giống một depth map nông hơn, chưa tạo cảm giác thô ráp như gỗ, giấy nhám, hay thậm chí bề mặt kiểu mây
Hiện giờ đây là ứng dụng tôi thích nhất, và việc pha màu đã rất tốt từ lâu
Trông rất hay, nhưng vì là All Rights Reserved + CC-BY-NC nên không thể đưa vào Krita, GIMP, Blender như một triển khai mặc định
Tôi sơn mô hình thu nhỏ, và khi đã qua các bước cơ bản rồi bắt đầu dùng filter hoặc blending bằng glaze, phần mềm không còn phù hợp lắm để thử kế hoạch sơn. Cái này trông rất tốt
Cái này thật sự rất tuyệt và nên được đưa vào tùy chọn của mọi chương trình vẽ, nhưng mặt khác tôi tự hỏi liệu nó có làm quá trình học vẽ phức tạp hơn không
Pha màu sơn là một kỹ năng phải học vì nó không trực quan
Trong hầu hết mọi lĩnh vực khác của đời sống, ta kỳ vọng trộn A và B sẽ tạo ra một thay đổi tuyến tính. Khi cho muối vào nước thì vị mặn tăng lên, chứ không ai kỳ vọng đến một lúc nào đó nó có vị chua rồi lại mặn trở lại
Các ví dụ pha màu bằng thuật toán Mixbox trên trang web trông như thật, còn cách pha màu của các chương trình khác lại có vẻ không chính xác
Tuy vậy Mixbox dường như không tính đến các đặc tính vật lý thực tế của pigment, mà những đặc tính đó có thể tác động mạnh đến việc pha pigment