1 คะแนน โดย GN⁺ 2024-12-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • การอินเตอร์โพเลต RGB ในดิจิทัลเพนติงอาจดูแตกต่างจากการผสมสีจริง โดย Mixbox เป็นไลบรารีที่พยายามปรับปรุงเรื่องนี้ด้วย การผสมแบบอิงพิกเมนต์
  • นักพัฒนาสามารถส่งสีสองสีและอัตราส่วนการผสมเข้าไปเหมือน lerp แบบเดิมได้เลย และ Mixbox จะคืนค่าสีผลลัพธ์ในรูปแบบ รับเข้า RGB · ส่งออก RGB
  • Mixbox 2.0 ทำงานได้กับ C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust และรองรับสภาพแวดล้อม Unity, Android Studio, P5js, WebGL, Godot
  • เป้าหมายคือ ลดการผสมที่หม่นขุ่น ในงาน smudge, การซ้อนเลเยอร์ด้วยแปรงเท็กซ์เจอร์ และกราเดียนต์ที่เริ่มจากสีเข้ม พร้อมสร้างสีกลางและการเปลี่ยนแปลงของสีที่สมบูรณ์ขึ้น
  • นี่ไม่ใช่ปลั๊กอินที่ผู้ใช้ติดตั้งเอง แต่เป็น โค้ดสำหรับ blending mode ดังนั้นหากต้องการใช้ในเครื่องมือวาดภาพจริง จำเป็นต้องให้ผู้พัฒนาซอฟต์แวร์นั้นผสานรวมเข้าไป

ปัญหาสีดิจิทัลที่ไม่ผสมเหมือนสีจริง

  • การผสมสีในซอฟต์แวร์วาดภาพทั่วไปไม่ได้ทำงานเหมือน พิกเมนต์จริง
  • Mixbox เป็นไลบรารีสำหรับนำการผสมสีที่ใกล้เคียงสีจริงมาใช้ในดิจิทัลเพนติง
  • ภายในจัดการสีเหมือนพิกเมนต์ที่อิง Kubelka & Munk แต่ API ถูกนำเสนออย่างเรียบง่ายในรูปแบบรับ RGB และส่งออก RGB
  • เอกสารที่เกี่ยวข้อง:

เอฟเฟกต์สีที่ใกล้เคียงสีจริง

  • กราเดียนต์ที่สมบูรณ์และมีการเปลี่ยนแปลงของสี

    • สามารถสร้างสีผสมที่เป็นธรรมชาติและสดมีชีวิตชีวาได้
    • คาดหวังการไล่น้ำหนักในรอยแปรงที่สมบูรณ์ยิ่งขึ้นได้
    • แปรง smudge ถูกใช้เพื่อสร้างกราเดียนต์ที่เป็นธรรมชาติ แทนการผสมที่หม่นขุ่น
    • แม้จะซ้อนเลเยอร์รอยแปรงเท็กซ์เจอร์ สีจะไม่ถูกลดความอิ่มตัว และสามารถสร้างการไล่น้ำหนักที่สมบูรณ์และสดมีชีวิตชีวาได้
    • สามารถสร้าง กราเดียนต์ลึก ที่เริ่มจากสีเข้มได้ด้วยแรงกดปากกาเพียงอย่างเดียว

กรณีใช้งานและเดโม

  • Mixbox ถูกใช้เป็นองค์ประกอบหลักของ Rebelle ซึ่งเป็นเครื่องมือวาดภาพที่มีฟีเจอร์สีน้ำมันและสีน้ำดิจิทัล
  • ในแอดออน Flip Fluids สำหรับ Blender มีการใช้ Mixbox เพื่อแสดงสีของของเหลวให้สมจริง
  • มีเดโม Painter ให้ทดลองใช้งานโดยตรง
  • มีตัวอย่างโค้ดที่รันในเบราว์เซอร์ ให้ลองจัดการกราฟิกหรือโค้ดได้โดยตรง

วิธีที่นักพัฒนาใช้งาน

  • Mixbox มีอินเทอร์เฟซ lerp แบบคลาสสิก
  • นักพัฒนาส่งสี RGB สองสีและอัตราส่วนการผสม t เข้าไป แล้วรับผลลัพธ์ RGB ที่ผสมแล้วกลับมา
  • มีโค้ดตัวอย่างในรูปแบบ C/C++, GLSL, Javascript, Python, Java/Android, Rust, Unity/C#
  • ตัวอย่างในเอกสารแสดงโครงสร้างซ้ำ ๆ ของการผสมสีน้ำเงิน rgb(0, 33, 133) กับสีเหลือง rgb(252, 211, 0) ที่ t = 0.5
  • ภาษาและสภาพแวดล้อมที่รองรับ:
    • ภาษา: C++, Python, Javascript, GLSL, HLSL, C#, Java, Rust
    • เอนจิน·เฟรมเวิร์ก: Unity, Android Studio, P5js, WebGL, Godot

วิธีผสานรวมและไลเซนส์

  • Mixbox ไม่ใช่ปลั๊กอินที่ผู้ใช้ติดตั้งเอง
  • หากต้องการใส่ในซอฟต์แวร์วาดภาพ ผู้พัฒนาซอฟต์แวร์นั้นต้องผสานรวมเป็น โค้ดสำหรับ blending mode ใหม่
  • หากต้องการให้เครื่องมือวาดภาพที่คุณชอบรองรับ Mixbox สามารถฝากคำขอไว้ในฟอรัมผู้ใช้หรือช่องทางซัพพอร์ตได้
  • Mixbox แจกจ่ายภายใต้ไลเซนส์ CC BY-NC 4.0 จึงสามารถประเมินใช้งานได้ฟรี
  • ในขั้นเตรียมออกผลิตภัณฑ์เชิงพาณิชย์ จำเป็นต้องตั้งค่า ไลเซนส์เชิงพาณิชย์

หลักการของการผสมพิกเมนต์

  • การผสมพิกเมนต์จริงไม่ได้อธิบายได้ด้วยการผสมแบบบวกหรือแบบลบเพียงอย่างเดียว แต่ทั้งสองแบบทำงานร่วมกันอย่างซับซ้อน
  • เมื่อนำสีจากหลอดมาผสมกัน แสงจะเข้าไปในตัววัสดุแล้วเกิดการ กระเจิง และถูกดูดกลืนซ้ำ ๆ จนเกิดเป็นสีสุดท้าย
  • กระบวนการนี้อธิบายได้ด้วย การกระเจิงใต้ผิว (subsurface scattering)
  • เอกสารอธิบายเพิ่มเติม:

ชื่อพิกเมนต์ที่ Mixbox รวมไว้

  • ชื่อพิกเมนต์ที่ Mixbox จัดการมีดังต่อไปนี้
    • 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 ความคิดเห็น

 
GN⁺ 2024-12-30
ความคิดเห็นจาก Hacker News
  • เมื่อปี 2012 ทีมแอปวาดรูป Paper สำหรับ iPad เคยเผยแพร่เรื่องที่น่าสนใจเกี่ยวกับ การผสมสี: https://www.fastcompany.com/3002676/magical-tech-behind-pape...
    สรุปคือ ตอนแรกพวกเขาใช้พฤติกรรมการผสมเม็ดสีที่สมจริง แต่ในการทดสอบกับผู้ใช้ คนที่ไม่เคยวาดรูปมักผสมสีที่ต้องการไม่ค่อยได้ และมักลงเอยเป็นสีน้ำตาล ดังนั้นจึงต้องสร้าง อัลกอริทึมการผสมที่ไม่สมจริง แต่ให้ความรู้สึกเป็นธรรมชาติกว่า

    • บทความนั้นยอดเยี่ยมจริง ๆ อย่างไรก็ตาม แม้งานนี้จะน่าประทับใจ แต่ต้องดูสองเรื่อง
      การผสมสีน้ำมันเป็นทักษะที่ต้องเรียนรู้และไม่ได้ทำงานอย่างเป็นสัญชาตญาณ ดังนั้นจึงน่าจะมีประโยชน์เฉพาะกับคนที่วาดด้วยสื่อจริงอยู่แล้วหรือคนที่ต้องการเรียนรู้สิ่งนั้น
      อีกอย่าง ArtRage น่าจะถือได้ว่าเป็นซอฟต์แวร์เพนต์ที่สมจริงที่สุดมานานกว่า 10 ปีแล้ว มีโหมดผสมสีจริง และดูเหมือนจะไม่ใช่ค่าเริ่มต้น มันให้ผลลัพธ์ใกล้เคียงกว่าผลลัพธ์ในหน้าตัวอย่างมาก: https://i.ibb.co/T0GwbDV/artrage-mixing.jpg ด้านขวาคือเปิดการผสมสีจริง
  • ตอนดูหน้าเว็บ ตอนแรกไม่รู้เลยว่าซอฟต์แวร์เพนต์ไม่ได้พยายามทำ การผสมสี มากไปกว่าการอินเตอร์โพเลตแบบง่าย ๆ และคิดว่าฟิสิกส์เกี่ยวกับแสงค่อนข้างซับซ้อน อีกทั้งข้อมูลจำนวนมากก็หายไปใน RGB จึงคงกู้กลับมายาก
    เลื่อนลงมาหน่อยก็มีชิ้นโค้ดสำหรับใช้เป็นไลบรารี แต่พอเห็นว่าคำนวณใน RGB ก็รู้สึกแปลกใจ พอกดลิงก์ไปยัง论文แล้วพบว่าแก่นของมันคือการสร้าง ปริภูมิสีแฝง ที่แทนค่าสี RGB เป็นส่วนผสมของเม็ดสีพื้นฐานกับส่วนเหลือแบบบวก แล้วจัดการค่าที่แฝงนั้นด้วยการดำเนินการเชิงเส้นเพื่อให้ได้ผลลัพธ์ที่น่าจะเป็นไปได้และดูสมเหตุสมผล
    ฉลาดมาก และดูเป็นตัวอย่างที่ใช้เทคนิค machine learning สมัยใหม่ได้ดีนอกขอบเขตโมเดลภาษาอันเป็นกระแส ภายในยังใช้ปริภูมิสีเชิงการรับรู้และความรู้ล่วงหน้าแบบอิงฟิสิกส์ด้วย จึงเป็นงานที่น่าประทับใจและสวยงามในเชิงเทคนิค
    ยังเชื่อมโยงกับแนวคิดที่เคยนึกมาตั้งนานด้วย ผมคิดว่าถ้าใส่ข้อมูลความยาวคลื่น หรืออย่างน้อยก็ปริภูมิสีที่สม่ำเสมอเชิงการรับรู้ ให้กับโมเดลสร้างภาพหรือโมเดลเข้ารหัสภาพแทน RGB มันอาจทำงานได้ดีกว่า ดูใกล้ความจริงมากกว่าการใช้ความยาวคลื่นที่เซลล์รูปกรวยของเราบังเอิญตอบสนองแบบคร่าว ๆ

    • ต้องคำนึงด้วยว่าแม้ถัดจากเซลล์รูปกรวยโดยตรง ก็ยังมีเซลล์อื่น ๆ ที่คำนวณและรวบรวมสัญญาณจากเซลล์รูปกรวย อย่าลืมข้อเท็จจริงที่ว่า สีเป็นสิ่งที่สมองประกอบสร้างขึ้น
      ด้วยเหตุผลเหล่านี้และเหตุผลอื่น ๆ จึงมักมีช่องว่างอย่างมากระหว่างสิ่งเร้ากับการรับรู้ ดังนั้นสิ่งอย่าง ปริภูมิสีที่สม่ำเสมอเชิงการรับรู้ จึงไม่มีอยู่จริง
    • ไม่จำเป็นต้องใช้ปัญญาประดิษฐ์หรือ machine learning เลย แค่วัดค่าคงที่บางตัวในเชิงประสบการณ์เพื่ออธิบายและจำกัดความไม่เป็นเชิงเส้นของเม็ดสีจริงหลายชนิด แล้วใส่ลงใน สมการผสมสี ที่ค่อนข้างเรียบง่ายก็พอ
      สีทามีคุณสมบัติทางคณิตศาสตร์ที่คาดการณ์ได้ว่าเมื่อผสมกันแล้วจะให้สีอะไร เพียงแต่มันผสมกันแบบไม่เป็นเชิงเส้น จึงไม่เป็นธรรมชาติสำหรับคนที่ไม่ได้ฝึกผสมสีทามามาก
      Photoshop และโปรแกรมเปรียบเทียบอื่น ๆ ในหน้านั้นแสดง การผสมเชิงเส้น ซึ่งตรงกับสิ่งที่คนส่วนใหญ่คาดหวังตามสัญชาตญาณ
    • มีวิดีโอจาก SIGGRAPH Asia 2021 ที่แนะนำแนวทางนี้อย่างละเอียดเป็นเวลา 17 นาที: https://www.youtube.com/watch?v=_qa5iWdfNKg
      ถ้าสนใจทั้งสีแบบบวกในดิจิทัลและสีแบบลบในสื่อกายภาพ เนื้อหานี้ค่อนข้างน่าสนใจ
    • เท่าที่รู้ แอปเพนต์ส่วนใหญ่ผสมสีใน ปริภูมิ sRGB ไม่ใช่ปริภูมิ RGB เชิงเส้น ดังนั้นอาจแย่กว่าการอินเตอร์โพเลตแบบง่ายเสียอีก
  • สิ่งนี้มีมาหลายปีแล้ว แต่มีข้อจำกัดมากเพราะ ไลเซนส์แบบไม่ใช่เชิงพาณิชย์และจำกัดสิทธิ์
    https://krita-artists.org/t/implementing-mixbox-mixing-for-k...

    • มี merge request ที่นำแนวทางคล้ายกันไปใช้ ดูเหมือนยังต้องการความช่วยเหลือในการปรับแก้ปัญหาบางอย่างของการผสมสี
      https://invent.kde.org/graphics/krita/-/merge_requests/1783
      https://krita-artists.org/t/can-we-get-mixbox-on-krita/64201...
    • คิดแล้วว่าต้องมีอะไรแอบแฝงอยู่ เธรดนั้นลิงก์ไปยัง การนำไปทำใหม่ภายใต้ GPLv3: https://github.com/joeedh/pigment-painter
    • อาจเป็นทางตันสำหรับโครงการโอเพนซอร์ส แต่ไลเซนส์เชิงพาณิชย์ยังเปิดอยู่ Rebelle ใช้สิ่งนี้
    • ได้ทิ้งคอมเมนต์ไว้ใน issue นี้: https://github.com/scrtwpns/mixbox/issues/15
    • ปรากฏการณ์ธรรมชาติไม่สามารถถูกครอบด้วยสิทธิ์ในทรัพย์สินทางปัญญาได้ ดังนั้นไลเซนส์นั้นจึงเป็นโมฆะ
  • จำได้ว่าในยุค Windows 3.0 เคยมีซอฟต์แวร์ชื่อ Fractal Designer Painter อยู่ มีเอนจินหลายแบบที่เลียนแบบวัสดุอย่างพาสเทล สีน้ำมัน สีน้ำ และกวอชได้อย่างแม่นยำ รวมถึงจำลองการผสมสี การลากพู่กัน แรงกด ฯลฯ
    ในยุคที่หน้าจอ 800x600x24 บิตยังเป็นของหรู มันดูสมจริงจนน่าเหลือเชื่อ และบนเครื่อง i486 ก็ช้ามาก เพิ่งลองค้นดู ตอนนี้กลายเป็น Corel Painter ไปแล้ว
    เลยสงสัยว่ายังดีอยู่ไหม และอัลกอริทึมทั้งในอดีตและปัจจุบันเทียบกับไลบรารีใหม่นี้อย่างไร น่าเสียดายที่ผู้เขียนไม่ได้เปรียบเทียบกับ Corel Painter

    • ใช่แล้ว แม้จะเปลี่ยนเจ้าของมาหลายครั้ง แต่ Painter ยังมีอยู่และอัปเดตทุกปี และทำฟีเจอร์ที่เห็นในบทความได้ทั้งหมด
      เหตุผลที่ใช้ Painter สำหรับงานศิลปะดิจิทัลมาตั้งแต่ยุค 90 คือมันผสมสีได้ดีและเข้ากับเครื่องมือศิลปะจริงได้ดี ไม่ใช่แค่สีน้ำ แต่ยังมีพาสเทล ดินสอ ปากกา และตัวเลือกอื่น ๆ อีกมาก
      แต่ไม่ได้มีให้ในรูปแบบไลบรารีเพื่อใส่ฟีเจอร์แบบนั้นลงในแอปของตัวเอง ซึ่งอันนั้นฟังดูใหม่และดีจริง ๆ อย่างไรก็ตาม นัยที่ว่าเรื่องนี้ไม่เคยทำได้มาก่อนเลยนั้นค่อนข้างผิด
    • ผมมีเวอร์ชัน 2015 อยู่ และบนพีซีสมัยใหม่มันยังทำงานได้ดีกว่าเดิมด้วย
  • สงสัยว่าทำไม Secret Weapons ถึงไม่ได้รับเงินลงทุน VC ระดับ 100 ล้านดอลลาร์ในช่วง 2–3 ปีก่อนที่ กระแสวิดีโอ AI จะเริ่ม
    พวกเขาเปิดตัวมาก่อนด้วย EbSynth ซึ่งเป็นหนึ่งในระบบ AI แรก ๆ ที่ใช้กันแพร่หลายสำหรับการถ่ายโอนสไตล์แบบ video-to-video และการอินเตอร์โพเลตคีย์เฟรม: https://ebsynth.com/
    EbSynth ทำให้เกิดครีเอเตอร์จำนวนมากที่คล้ายกับนักแสดงตลกอย่าง Joel Haver: https://www.youtube.com/watch?v=SY3y6zNTiLs&list=PLKtIcOP0Wv...
    บริษัทหลายแห่งอย่าง Kaiber.ai ก็สร้างเทคโนโลยีบนพื้นฐานของ EbSynth และได้รับเงินลงทุน seed ก้อนใหญ่: https://kaiber.ai/
    นักดนตรีชื่อดังหลายรายก็ใช้ EbSynth ในมิวสิกวิดีโอโดยตรงหรือผ่านบริษัทเหล่านี้ เช่น Linkin Park: https://www.youtube.com/watch?v=7NK_JOkuSVY, Magdalena Bay: https://www.youtube.com/watch?v=dXLCHvRsgRQ
    Secret Weapons อยู่ในตำแหน่งที่ดีมากที่จะครองตลาดวิดีโอ AI และเครื่องมือสร้างสรรค์ด้วย AI แต่ดูเหมือนว่าพวกเขาจะพลาดโอกาสนั้นไป

    • ผมแค่กวาดดูเร็ว ๆ แต่โมเดล diffusion สำหรับวิดีโอกับ EbSynth ดูเหมือนเป็นคนละหมวดกัน
      EbSynth ดูใกล้เคียงกับปลั๊กอิน Final Cut Pro สำหรับ masking และ tracking มากกว่า กลุ่มลูกค้าที่คาดหวังอาจคล้ายกัน แต่ทักษะและทรัพยากรที่ทีมวิศวกรรมต้องใช้ต่างกันมาก
      การบอกว่า Secret Weapons พร้อมจะครองตลาดวิดีโอ AI และเครื่องมือสร้างสรรค์ดูจะพูดเกินไปหน่อย
    • วิดีโอนี้มาจาก 3 ปีก่อน: https://www.youtube.com/watch?v=6FN7fKlJcPE
      ไม่รู้มาก่อนว่าเมื่อ 3 ปีก่อนก็มาได้ไกลขนาดนี้แล้ว
  • ไม่ได้สนใจตัวไลบรารีเท่าไร แค่อยากได้ การใช้งานเชิงคณิตศาสตร์ล้วน ๆ สำหรับใช้ใน shader อะไรทำนองนั้น มีอัลกอริทึม GLSL อยู่ที่นี่ และฟังก์ชันที่ต้องการคือ vec3 mixbox_lerp
    https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...
    ไม่มีเวลาทำเดโม แต่ดูเหมือนจะปรับแต่งประสิทธิภาพมาค่อนข้างดี และในตัวอย่างก็ดูดี งานของคนทำยอดเยี่ยมมาก

    • แต่ต้องระวังเรื่องไลเซนส์
  • มีการคุยกันก่อนหน้านี้เมื่อ 3 ปีก่อน
    https://news.ycombinator.com/item?id=30116316 71 คะแนน, 15 ความเห็น
    https://news.ycombinator.com/item?id=30033611 60 คะแนน, 13 ความเห็น
    สงสัยว่ามีใครเคยลองใช้ Rebelle แอปวาดภาพเชิงพาณิชย์ที่ใช้วิธีนี้ไหม

    • Rebelle ดีมาก เร็วและทำงานได้ดีแม้ที่ความละเอียดสูง
      ฟีเจอร์น้อยกว่า Painter แต่กลับเป็นข้อดี
      สิ่งที่ยังขาดคือสัมผัสที่เหมาะสมของวัสดุแห้งอย่างถ่าน และการผสานกับพื้นผิวรองรับอย่างลึกซึ้ง ตอนนี้โดยรวมยังเหมือน depth map แบบตื้น ๆ มากกว่า และยังไม่รู้สึกหยาบเท่าพื้นผิวอย่างไม้หรือกระดาษหยาบ ๆ หรือแม้แต่เมฆ
      ณ ตอนนี้เป็นแอปที่ชอบที่สุด และการผสมสีก็ดีมากมาได้สักพักแล้ว
  • ดูเจ๋งมาก แต่เป็น All Rights Reserved + CC-BY-NC จึงเป็นไปไม่ได้ที่จะนำไปใส่เป็น implementation พื้นฐานใน Krita, GIMP, Blender

  • ผมระบายสีโมเดลจิ๋วอยู่ และพอผ่านขั้นพื้นฐานแล้วเริ่มใช้ glaze เป็นฟิลเตอร์หรือเพื่อ blending การลอง แผนการลงสี ในซอฟต์แวร์ทำได้ไม่ค่อยดีนัก อันนี้ดูดีมาก

  • อันนี้เจ๋งจริง ๆ และควรเป็นตัวเลือกในโปรแกรมวาดภาพทุกตัว แต่ในอีกแง่หนึ่งก็คิดว่าอาจทำให้ กระบวนการเรียนวาดภาพ ซับซ้อนขึ้นหรือเปล่า
    การผสมสีของสีจริงไม่ใช่เรื่องที่เข้าใจได้เอง จึงเป็นทักษะที่ต้องเรียน
    ในแทบทุกด้านอื่นของชีวิต เราคาดว่าการผสม A กับ B จะทำให้เกิดการเปลี่ยนแปลงแบบเชิงเส้น ถ้าใส่เกลือลงในน้ำ ก็จะคาดว่ารสเค็มเพิ่มขึ้น ไม่ใช่คาดว่าอยู่ดี ๆ จะเปรี้ยวแล้วกลับมาเค็มอีก

    • สำหรับคนที่ย้ายจากสื่อจริงไปดิจิทัล หรือจากดิจิทัลไปสื่อจริง น่าจะทำให้การเปลี่ยนผ่านง่ายขึ้น
      ตัวอย่างการผสมด้วย อัลกอริทึม Mixbox บนหน้าเว็บดูเหมือนของจริง ส่วนการผสมในโปรแกรมอื่นกลับดูไม่แม่นยำ
      แต่ดูเหมือนว่า Mixbox ไม่ได้คำนึงถึงคุณสมบัติทางกายภาพของเม็ดสีจริง และคุณสมบัติเหล่านั้นอาจส่งผลต่อการผสมเม็ดสีอย่างรุนแรงได้