ทำสีผิวโมเดลการ์ตูนให้เหมือนคนมากขึ้นอย่างง่ายๆ ไม่ถึง 10 นาที

ถ้าใส่สีผิวง่ายๆก็คงจะแค่ material สีเนื้อแต่ที่ดูขาดอะไรไปเพราะว่าจริงๆผิวเรามีเลือดแล้วแสงไปขุดขึ้นมาครับ สีแดงมาจาก subsurface…

ทำสีผิวโมเดลการ์ตูนให้เหมือนคนมากขึ้นอย่างง่ายๆ ไม่ถึง 10 นาที

ทำโมเดลมาแล้วถ้าใส่สีผิวง่ายๆ ก็คงจะเป็น material สีเนื้อ ที่ diffuse เต็มกับ specular 0 แต่ที่ดูขาดอะไรไปเพราะว่าจริงๆแล้วผิวเรามีเลือดข้างล่างแล้วแสงไปขุดขึ้นมาครับ สีแดงมาจากหลักที่เรียกว่า subsurface scattering

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

พอดีค้นพบวิธีปลอมเลือดที่ว่าง่ายๆ ก็เลยเอามาแชร์ครับ ไอเดียจะอธิบายให้ใช้กับโปรแกรมอะไรก็ได้ ในที่นี้จะขอใช้ Blender

ถ้าใครใช้ ray tracing renderer คงมี Subsurface Scattering ของแท้ให้ใช้เลย แต่อันนี้จะปลอมๆเอาเนื่องจากเป็นตัวไม่สมจริง

เปลี่ยนเงาเป็นสีแดง

อันนึงที่พบก็คือด้านมีแสงมันดูเป็นคนอยู่แต่ด้านเงาไม่ค่อยเหมือน ก็เลยจะเปลี่ยนแค่ทางเงาให้มีเลือด ถ้าใครดูภาพวาดดีๆอาจจะสังเกตว่าตรงเงามันไม่ใช่สีดำใสบนสีเนื้อ แต่ทางคนวาดอาจจะเลือกไปทางแดงหน่อยๆ ดังนั้นเรามาลองใช้ไอเดียนี้ดู

อันนี้เริ่มต้นจาก material เปล่าๆนะครับ

ไอเดียคือเราจะใช้ RGB Curve ในการดึงสีดำเป็นสีอื่น

ความหมายของเส้นก็คือซ้ายสุดดำ ขวาสุดขาว ถ้าลากขึ้นมาจะทำให้สีดำกลายเป็นขาวได้ เนื่องจากมีแบบ R G B channel แยกมาให้ เราดึงขึ้นแค่สีดำของ channel R ก็จะทำให้ตรงเงาแดงขึ้นได้

ใส่ toon shading เบาๆ

เนื่องจากเป็นตัวการ์ตูนถ้าแสงไม่นุ่มตลอดก็น่าจะดี ดังนั้นมาทำ toon shading ง่ายๆจาก Color Ramp แบบคมๆ แล้วให้สีเดิมเป็น input ก็ได้ครับว่าจะเอาตรงไหนของ ramp

(ถ้า toon แท้ๆต้องเอา light vector มา dot product กับ normal vector เสร็จแล้วเอา scalar product มาเทียบกับ threshold ว่าผ่านมั้ย อันนั้นจะไม่ต้องพึ่งสี input เลย แต่กลัวงงไป เอางี้ไปก่อนนะ 555)

เสร็จแล้ว ไอเดียคือรวมกับอันตะกี้โดยใช้ Multiply ซึ่งชื่อมันแปลว่าคูณ ถ้าเราคูณสีขาว (1) เข้ากับอะไรมันจะได้อันเดิม (1*X = 1) คูณสีดำ (0) กับเลขไหนก็หายหมด

ดังนั้นถ้าใช้สีที่ชอบแทนสีดำกับสีขาวมาคูณก็จะได้แค่ส่วนสีที่ชอบมาครับ

เสร็จแล้วตรงเงาอาจจะทำให้มืดขึ้น ย้อนกลับไปปรับ RGB Curve ตรง channel รวมอีกหน่อย กับเอาสีแดงที่หายไปกลับมาดูก็ได้ครับ

ปรับแต่งเฉพาะจุดอีกนิด

ยังมีอีกอย่างที่ไม่เหมือนคนก็คือ จริงๆแล้วบางจุดก็แดงกว่าปกติเพราะผิวบางกว่า (ลองดูฝ่ามือตัวเองเทียบกับแขนตัวเองครับ) หรือคนเราก็อาจจะแต่งหน้าได้

เราอาจจะใช้ texture มาช่วยก็ได้ แต่ถ้าเอาง่ายกว่านั้นไม่ต้องไปทำภาพเพิ่ม เรามาใช้ vertex paint กัน เพื่อสาธิตตรงนี้จะทำ blush ตรงแก้มง่ายๆให้ดู

ถ้าเอาขีดๆด้วยไปทำ texture มาเอง

ไอเดียคือแต่ละ vertex มันเก็บสีได้ด้วยครับซึ่งเราจะเอามาใช้ยังไงก็ได้ ตรงแก้มเห็นว่ามีอยู่ประมาณ 3 vertex ดังนั้นเราจะมาลองใส่สีเข้าไปดู

เราสามารถใช้มุข Multiply เดิมอีกรอบโดยให้ทุก vertex เป็นสีขาวยกเว้นที่เราอยากได้ จะได้คูณแล้วไม่เกิดอะไรขึ้น (1*X = 1)

เอามาคูณเข้าไปอีกชั้นนึงครับ

ผลลัพธ์

คิดว่าดีขึ้นมาก โดยใช้เวลาปรับแค่ไม่ถึง 10 นาทีเอง!

โมเดลคนไปนั่งทำตาม Daniel Kreuter มา สอนดีมากๆ มี 40 ตอนใช้เวลา 3–4 วันครับถ้าใครสนใจไปลองดูกันเลย!

https://www.youtube.com/embed/videoseries?list=PLvgIVNDU-Dxjb3eukDF5W0l0-6ShO9OiM