1 อธิบาย
จุดแสงที่ไม่อยู่ในระยะโฟกัสจะกลายเป็นวงกลม (circle of confusion) ขนาดวงขึ้นกับ focal (f), f-stop (N), ระยะโฟกัส (S) และระยะของจุดนั้น (D) เลนส์ยาว รูรับแสงกว้าง โฟกัสใกล้ = เบลอมาก
ใน comp ต้อง defocus ให้วงเบลอโตเท่าเลนส์จริง ไม่ใช่ใส่ blur เท่ากันทั้งภาพ ด้านล่างมีภาพเรนเดอร์จริงจาก Blender ให้เทียบ และรูป bokeh ที่ trace ผ่านสูตรเลนส์จริง: หลังโฟกัสขอบสว่าง หน้าโฟกัสขอบนุ่ม และที่ขอบภาพกลายเป็นตาแมว
CoC = f² / (N·(S − f)) · |D − S| / D2 ลงมือลอง
โฟกัสที่หุ่น (9 ม.) ใช้เลนส์ยาว และเปิดรูรับแสงกว้าง
3 เจาะลึก
อะไรทำให้วงเบลอโตขึ้น
CoC = f²/(N(S−f))·|D−S|/D ส่วนแรกขึ้นกับเลนส์และโฟกัส ส่วนหลังขึ้นกับว่าจุดนั้นห่างจากระยะโฟกัสแค่ไหน เมื่อ D ไกลมาก ส่วนหลังเข้าใกล้ 1 วงเบลอของฉากหลังไกล ๆ จึงมีเพดานคือ f²/(N(S−f))
ด้านหน้าไม่มีเพดาน เมื่อ D เข้าใกล้กล้อง |D−S|/D โตขึ้นเรื่อย ๆ ของที่อยู่หน้าระยะโฟกัสจึงหลุดโฟกัสเร็วกว่าของด้านหลัง
| เปลี่ยน | วงเบลอของฉากหลังไกล |
|---|---|
| f-stop สองเท่า (f/2.8 → f/5.6) | เล็กลงครึ่ง |
| focal สองเท่า (โฟกัสไกล) | โตขึ้นราว 4 เท่า |
| โฟกัสใกล้ขึ้นครึ่งหนึ่ง (9 → 4.5 ม.) | โตขึ้นราว 2 เท่า |
จากมม. บนเซนเซอร์เป็นพิกเซล
CoC ออกมาเป็นมม. บนเซนเซอร์ แปลงเป็นพิกเซล: px = CoC ÷ ความกว้างเซนเซอร์ × ความกว้างภาพ ตัวอย่าง 50 มม. f/2.8 โฟกัส 9 ม. ฉากหลังไกลได้ราว 0.10 มม. บน full frame 36 มม. ภาพกว้าง 1920 px = วงเบลอราว 5 px
ระยะชัดที่ "ยอมรับได้" ใช้ CoC = เส้นทแยงเซนเซอร์ ÷ 1500 (full frame ≈ 0.029 มม.) เป็นธรรมเนียม ไม่ใช่กฎตายตัว ส่วนระยะ hyperfocal คือ H ≈ f²/(N·c) + f เช่น 35 มม. f/8 บน full frame ได้ราว 5.3 ม. โฟกัสที่ระยะนี้ ตั้งแต่ราวครึ่งหนึ่งของ H ถึงอนันต์จะดูคม
คิดเป็นพิกเซลก่อนแตะ node: รู้ว่าฉากหลังควรเบลอกี่ px
Defocus ใน comp ตาม depth
เรนเดอร์ CG คม ๆ พร้อม depth pass แล้ว defocus ใน comp อย่าเปิด DOF ทั้งในเรนเดอร์และใน comp จะเบลอซ้ำ ก่อนทำให้ sample ค่า depth ที่ใกล้และไกลก่อนเสมอ และห้าม grade depth ให้ "ดูสวย" เพราะตัวเลขระยะคือข้อมูลที่ defocus ต้องใช้
depth ของ ScanlineRender ใน Nuke เป็น 1/Z (ใกล้ = ขาว) ส่วนเรนเดอร์ CG ส่วนใหญ่ให้ระยะจริง ต้องตั้ง math ของ ZDefocus ให้ตรง ถ้าตั้งผิด defocus จะแทบไม่เกิดหรือผิดที่
- 1เรนเดอร์คม + depth
- 2Sample ใกล้/ไกล
- 3ZDefocus (math ถูก)
- 4รูปทรง bokeh
- 5Grain ทีหลัง
รูปทรง bokeh และความพอดี
จำนวนใบม่านรูรับแสงทำให้ bokeh เป็นเหลี่ยม เลนส์บางแบบทำให้วงเป็นรีหรือเอียงที่ขอบภาพ เลนส์ anamorphic ให้วงรีแนวตั้ง ดูจุดไฟใน plate แล้วเลียนแบบทรงนั้น
ระยะชัดตื้นเกินจริงทำให้ฉากดูเหมือนโมเดลจิ๋ว ใช้ตัวเลขจากเลนส์จริง และ CG ที่อยู่ในโฟกัสก็ยังควรนุ่มเล็กน้อยให้เท่าความคมของ plate
หน้ากอง: จดระยะโฟกัสและ f-stop ทุกเทค เลนส์ซีเนมามักเขียนเป็น T-stop ซึ่งใกล้กับ f-stop แต่ตัวเลขจะสูงกว่าเล็กน้อยเสมอ
4 ในงานจริง
ทำใน Nuke
- ZDefocus: เลือกช่อง depth แล้วตั้ง math ให้ตรงกับชนิด depth (ระยะจริง = depth, 1/Z ของ Nuke = far = 0)
- ใช้ตัว pick focal point คลิกบนหุ่น แล้วตั้ง size / maximum จากจำนวนพิกเซลที่คำนวณไว้
- รูปทรง: filter type แบบ bladed หรือ image และ aspect ratio สำหรับ anamorphic
- Defocus = เบลอเท่ากันทั้งภาพ, Convolve = เบลอด้วยภาพ kernel ที่ให้มา
- ขอบ CG: ขยาย colour และ depth ออกนอก alpha ครั้งเดียว แล้ว copy alpha เดิมกลับก่อน defocus
พลาดบ่อย → แก้ยังไง
- ✗ ใช้ Blur ที่มี mask แทน defocus ตามความลึก✓ Blur + mask คือการผสมคมกับเบลอ ไม่ใช่เบลอแปรผัน ใช้ ZDefocus
- ✗ Grade depth pass ให้ดูง่าย✓ ใช้ค่าดิบ ถ้าอยากดูให้ปรับที่ viewer
- ✗ เปิด DOF ในเรนเดอร์ แล้ว ZDefocus ซ้ำ✓ เลือกที่เดียว ส่วนใหญ่คือใน comp
- ✗ ตั้ง math ผิดชนิด depth✓ sample ค่าใกล้/ไกล ก่อนเลือก math
- ✗ ชัดตื้นเกินเพื่อให้ "สวย"✓ คำนวณจากเลนส์จริง ไม่งั้นจะดูเป็นโมเดลจิ๋ว
เช็กก่อนส่งช็อต
- รู้ focal, f-stop, ระยะโฟกัส และ film back ของ plate
- ค่า depth ใกล้/ไกลถูก sample แล้ว และไม่ถูก grade
- ขนาดวงเบลอ (px) ใกล้เคียงกับวงเบลอใน plate
- ไม่มี DOF ซ้อนสองครั้ง
- ขอบ CG ไม่มีเส้นแข็งหรือรอยตัดหลัง defocus
5 เช็กตัวเอง
ปรับ f-stop จาก f/2.8 เป็น f/5.6 วงเบลอจะเป็นยังไง
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ฉากหลังอยู่ไกลมาก เลื่อนโฟกัสจาก 9 ม. มาที่ 4.5 ม. วงเบลอของฉากหลังจะเป็นยังไง
2. depth มาจาก ScanlineRender (1/Z) แต่ ZDefocus ตั้ง math เป็นระยะจริง จะเกิดอะไร
ตัวเลขมาจากไหน: สูตรเลนส์เป็นแบบ thin lens มาตรฐาน (FOV, CoC, hyperfocal) ใช้ CoC = เส้นทแยงเซนเซอร์ ÷ 1500 ซึ่งเป็นธรรมเนียมทั่วไป ไม่ใช่ค่าตายตัว distortion ใช้โมเดล Brown–Conrady (k1, k2) ภาพ DOF จริงเรนเดอร์จาก Blender Cycles แถบ bokeh ของเลนส์จริงด้านล่าง ray-trace ผ่านสูตรเลนส์ Double-Gauss ที่ตีพิมพ์แล้ว (Smith, Modern Lens Design) ด้วย tracer ของเราเอง และเลนส์แบบ Tessar ที่ออกแบบเองเพื่อเทียบ (ไม่ใช่เลนส์ที่ขายจริง): ไฟหลังโฟกัส = ไฟที่ระยะอนันต์ โฟกัส 1.5 ม. ไฟหน้าโฟกัส = ไฟ 0.8 ม. โฟกัส 3 ม. iris กลม ใช้ f-stop ที่ trace ไว้ใกล้ค่าของคุณที่สุด (f/2, f/2.8, f/5.6) แต่ละ f-stop แสดงที่ exposure เท่ากัน