เทคนิคการผสมพิกเมนต์สำหรับดิจิทัลเพนติง
(scrtwpns.com)- การอินเตอร์โพเลต 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 สามารถฝากคำขอไว้ในฟอรัมผู้ใช้หรือช่องทางซัพพอร์ตได้
- Adobe Photoshop: community.adobe.com
- Adobe Fresco: adobefresco.uservoice.com
- Procreate: folio.procreate.art/discussions
- Corel Painter: corel.com/en/support
- 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 ความคิดเห็น
ความคิดเห็นจาก 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 มันอาจทำงานได้ดีกว่า ดูใกล้ความจริงมากกว่าการใช้ความยาวคลื่นที่เซลล์รูปกรวยของเราบังเอิญตอบสนองแบบคร่าว ๆ
ด้วยเหตุผลเหล่านี้และเหตุผลอื่น ๆ จึงมักมีช่องว่างอย่างมากระหว่างสิ่งเร้ากับการรับรู้ ดังนั้นสิ่งอย่าง ปริภูมิสีที่สม่ำเสมอเชิงการรับรู้ จึงไม่มีอยู่จริง
สีทามีคุณสมบัติทางคณิตศาสตร์ที่คาดการณ์ได้ว่าเมื่อผสมกันแล้วจะให้สีอะไร เพียงแต่มันผสมกันแบบไม่เป็นเชิงเส้น จึงไม่เป็นธรรมชาติสำหรับคนที่ไม่ได้ฝึกผสมสีทามามาก
Photoshop และโปรแกรมเปรียบเทียบอื่น ๆ ในหน้านั้นแสดง การผสมเชิงเส้น ซึ่งตรงกับสิ่งที่คนส่วนใหญ่คาดหวังตามสัญชาตญาณ
ถ้าสนใจทั้งสีแบบบวกในดิจิทัลและสีแบบลบในสื่อกายภาพ เนื้อหานี้ค่อนข้างน่าสนใจ
สิ่งนี้มีมาหลายปีแล้ว แต่มีข้อจำกัดมากเพราะ ไลเซนส์แบบไม่ใช่เชิงพาณิชย์และจำกัดสิทธิ์
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...
จำได้ว่าในยุค Windows 3.0 เคยมีซอฟต์แวร์ชื่อ Fractal Designer Painter อยู่ มีเอนจินหลายแบบที่เลียนแบบวัสดุอย่างพาสเทล สีน้ำมัน สีน้ำ และกวอชได้อย่างแม่นยำ รวมถึงจำลองการผสมสี การลากพู่กัน แรงกด ฯลฯ
ในยุคที่หน้าจอ 800x600x24 บิตยังเป็นของหรู มันดูสมจริงจนน่าเหลือเชื่อ และบนเครื่อง i486 ก็ช้ามาก เพิ่งลองค้นดู ตอนนี้กลายเป็น Corel Painter ไปแล้ว
เลยสงสัยว่ายังดีอยู่ไหม และอัลกอริทึมทั้งในอดีตและปัจจุบันเทียบกับไลบรารีใหม่นี้อย่างไร น่าเสียดายที่ผู้เขียนไม่ได้เปรียบเทียบกับ Corel Painter
เหตุผลที่ใช้ Painter สำหรับงานศิลปะดิจิทัลมาตั้งแต่ยุค 90 คือมันผสมสีได้ดีและเข้ากับเครื่องมือศิลปะจริงได้ดี ไม่ใช่แค่สีน้ำ แต่ยังมีพาสเทล ดินสอ ปากกา และตัวเลือกอื่น ๆ อีกมาก
แต่ไม่ได้มีให้ในรูปแบบไลบรารีเพื่อใส่ฟีเจอร์แบบนั้นลงในแอปของตัวเอง ซึ่งอันนั้นฟังดูใหม่และดีจริง ๆ อย่างไรก็ตาม นัยที่ว่าเรื่องนี้ไม่เคยทำได้มาก่อนเลยนั้นค่อนข้างผิด
สงสัยว่าทำไม 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 แต่ดูเหมือนว่าพวกเขาจะพลาดโอกาสนั้นไป
EbSynth ดูใกล้เคียงกับปลั๊กอิน Final Cut Pro สำหรับ masking และ tracking มากกว่า กลุ่มลูกค้าที่คาดหวังอาจคล้ายกัน แต่ทักษะและทรัพยากรที่ทีมวิศวกรรมต้องใช้ต่างกันมาก
การบอกว่า Secret Weapons พร้อมจะครองตลาดวิดีโอ AI และเครื่องมือสร้างสรรค์ดูจะพูดเกินไปหน่อย
ไม่รู้มาก่อนว่าเมื่อ 3 ปีก่อนก็มาได้ไกลขนาดนี้แล้ว
ไม่ได้สนใจตัวไลบรารีเท่าไร แค่อยากได้ การใช้งานเชิงคณิตศาสตร์ล้วน ๆ สำหรับใช้ใน shader อะไรทำนองนั้น มีอัลกอริทึม GLSL อยู่ที่นี่ และฟังก์ชันที่ต้องการคือ
vec3 mixbox_lerphttps://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 แอปวาดภาพเชิงพาณิชย์ที่ใช้วิธีนี้ไหม
ฟีเจอร์น้อยกว่า Painter แต่กลับเป็นข้อดี
สิ่งที่ยังขาดคือสัมผัสที่เหมาะสมของวัสดุแห้งอย่างถ่าน และการผสานกับพื้นผิวรองรับอย่างลึกซึ้ง ตอนนี้โดยรวมยังเหมือน depth map แบบตื้น ๆ มากกว่า และยังไม่รู้สึกหยาบเท่าพื้นผิวอย่างไม้หรือกระดาษหยาบ ๆ หรือแม้แต่เมฆ
ณ ตอนนี้เป็นแอปที่ชอบที่สุด และการผสมสีก็ดีมากมาได้สักพักแล้ว
ดูเจ๋งมาก แต่เป็น All Rights Reserved + CC-BY-NC จึงเป็นไปไม่ได้ที่จะนำไปใส่เป็น implementation พื้นฐานใน Krita, GIMP, Blender
ผมระบายสีโมเดลจิ๋วอยู่ และพอผ่านขั้นพื้นฐานแล้วเริ่มใช้ glaze เป็นฟิลเตอร์หรือเพื่อ blending การลอง แผนการลงสี ในซอฟต์แวร์ทำได้ไม่ค่อยดีนัก อันนี้ดูดีมาก
อันนี้เจ๋งจริง ๆ และควรเป็นตัวเลือกในโปรแกรมวาดภาพทุกตัว แต่ในอีกแง่หนึ่งก็คิดว่าอาจทำให้ กระบวนการเรียนวาดภาพ ซับซ้อนขึ้นหรือเปล่า
การผสมสีของสีจริงไม่ใช่เรื่องที่เข้าใจได้เอง จึงเป็นทักษะที่ต้องเรียน
ในแทบทุกด้านอื่นของชีวิต เราคาดว่าการผสม A กับ B จะทำให้เกิดการเปลี่ยนแปลงแบบเชิงเส้น ถ้าใส่เกลือลงในน้ำ ก็จะคาดว่ารสเค็มเพิ่มขึ้น ไม่ใช่คาดว่าอยู่ดี ๆ จะเปรี้ยวแล้วกลับมาเค็มอีก
ตัวอย่างการผสมด้วย อัลกอริทึม Mixbox บนหน้าเว็บดูเหมือนของจริง ส่วนการผสมในโปรแกรมอื่นกลับดูไม่แม่นยำ
แต่ดูเหมือนว่า Mixbox ไม่ได้คำนึงถึงคุณสมบัติทางกายภาพของเม็ดสีจริง และคุณสมบัติเหล่านั้นอาจส่งผลต่อการผสมเม็ดสีอย่างรุนแรงได้