1 điểm bởi GN⁺ 2024-12-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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ư lerp hiệ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 lerp cổ đ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àng rgb(252, 211, 0) với t = 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ợ
  • 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

 
GN⁺ 2024-12-30
Ý 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

    • Bài viết đó thật sự rất hay. Tuy nhiên, dù công trình này ấn tượng, cần nhìn vào hai điểm
      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

    • Cần xét rằng ngay sau các tế bào nón, các tế bào khác cũng tính toán và tổng hợp tín hiệu từ tế bào nón. Không được quên rằng màu sắc là thứ do não bộ cấu thành
      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
    • Hoàn toàn không cần trí tuệ nhân tạo hay học máy. Chỉ cần đo thực nghiệm một vài hằng số mô tả và giới hạn tính phi tuyến của nhiều sắc tố thực, rồi đưa chúng vào một phương trình pha sơn tương đối đơn giản
      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
    • Có một video tại SIGGRAPH Asia 2021 giới thiệu chi tiết cách tiếp cận này trong 17 phút: https://www.youtube.com/watch?v=_qa5iWdfNKg
      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ị
    • Theo tôi biết, hầu hết ứng dụng vẽ không trộn màu trong không gian RGB tuyến tính mà trong không gian sRGB. Vì vậy kết quả có thể còn tệ hơn cả phép nội suy đơn giản
  • 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...

  • 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

    • Đúng vậy. Dù đã đổi chủ vài lần, Painter vẫn còn tồn tại và được cập nhật hằng năm, và làm được tất cả các tính năng thấy trong bài
      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 có bản 2015, và trên PC hiện đại nó vẫn chạy tốt hơn trước
  • 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 đó

    • Tôi chỉ lướt qua rất nhanh, nhưng mô hình khuếch tán video và EbSynth có vẻ thuộc hai phạm trù khác nhau
      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á
    • Video này từ 3 năm trước: https://www.youtube.com/watch?v=6FN7fKlJcPE
      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_lerp
    https://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

    • Nhưng cần cẩn thận với giấy phép
  • 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

    • Rebelle rất tốt. Nhanh và hoạt động tốt cả ở độ phân giải cao
      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

    • Với người chuyển từ chất liệu thật sang kỹ thuật số, hoặc từ kỹ thuật số sang chất liệu thật, tôi nghĩ nó sẽ làm việc chuyển đổi đơn giản hơn
      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