1 อธิบาย
camera projection คือการเอากล้องที่ถ่าย plate มาเป็น “โปรเจกเตอร์” ฉายภาพลงบน geometry ง่าย ๆ ที่วางตรงกับฉาก ที่นี่ใช้พื้นเรียบหนึ่งแผ่น การ์ดหนึ่งใบสำหรับเขา และฉากฟ้าไกล ๆ แล้วถ่ายใหม่ด้วยกล้องอีกตัวที่ขยับได้
ปัญหาคือ plate มีพิกเซลจำกัด ยิ่งกล้องใหม่เข้าไปใกล้ พื้นใกล้ ๆ ยิ่งถูกขยาย (stretch) จนเบลอ และของที่ไม่มี geometry รองรับ เช่นหิน จะถูกแปะแบนลงพื้นแล้ว “ไหล” เมื่อกล้องขยับ
stretch = 1 / σ_min( ∂plate px / ∂screen px )2 ลงมือลอง
ขยับกล้องจน “ยืดมากสุด” อยู่ระหว่าง 1.8× ถึง 2.0× นี่คือขอบของระยะปลอดภัย
ลองเปิด stretch map: เขียว = คมเท่า plate, แดง = ขยายเกิน 2 เท่า
3 เจาะลึก
โปรเจกเตอร์กับกล้องถ่ายใหม่
มีกล้องสองตัวที่ทำงานคนละหน้าที่ กล้องฉาย (projection camera) ต้องเหมือนกล้อง plate ทุกอย่างและหยุดนิ่งที่เฟรมที่ใช้ฉาย ส่วนกล้อง render เป็นตัวที่ขยับได้
ถ้ากล้องฉายขยับตามกล้อง render ภาพจะวิ่งตามกล้องไปด้วยและไม่ติดกับ geometry เลย คิดแบบเดียวกับ reference frame ของการ track
- 1ภาพที่ paint/เลือกเฟรม
- 2กล้องฉาย (หยุดนิ่ง)
- 3ฉายลง geometry
- 4render ด้วยกล้องที่ขยับ
อ่านค่า stretch
stretch คือพิกเซล plate หนึ่งพิกเซลกินพื้นที่บนจอใหม่กี่พิกเซลในทิศที่แย่ที่สุด 1× = คมเท่าเดิม 2× = พิกเซลถูกขยายสองเท่าในทิศนั้น ภาพเริ่มนุ่มให้เห็น
ใน figure พื้นใกล้ที่สุดอยู่ราว 4.4 ม. จากกล้อง ดันเข้าไปแค่ราว 1.4 ม. ก็ยืดเกือบ 1.9× เพราะพื้นที่ใกล้ถูกเห็นแบบเฉียงและขยายทั้งสองแกน การเลื่อนข้าง 2 ม. ก็ยืดราว 1.8× จากการเฉือนของพื้น
| ดันเข้า | ยืดมากสุด |
|---|---|
| 0 m | 1.00× |
| 0.5 m | ≈ 1.28× |
| 1.0 m | ≈ 1.60× |
| 1.4 m | ≈ 1.89× |
| 2.0 m | ≈ 2.36× |
แก้เรื่องความละเอียด
ภาพที่แสดงเล็กลงบนจอยังเก็บรายละเอียดไว้ครบ แต่ภาพที่ถูกแสดงใหญ่ขึ้นสร้างรายละเอียดใหม่ไม่ได้ จึงควรฉายจากเฟรมที่กล้องอยู่ใกล้วัตถุที่สุด หรือ paint ภาพที่ละเอียดกว่า plate (เช่น 2 เท่า) สำหรับบริเวณที่กล้องจะเข้าไปใกล้
ของนุ่ม ๆ อย่างหมอก ฟ้า หรือ grade ทนการขยายได้ดี ใช้ความละเอียดต่ำได้ ส่วนพื้นผิวคม ๆ ใกล้กล้องต้องการพิกเซลมาก
ฉายจากเฟรมที่ใกล้ที่สุด ไม่ใช่เฟรมแรก
geometry ง่ายเกินไปเห็นได้ยังไง
หินใน plate ไม่มี geometry รองรับ จึงถูกฉายแบนลงพื้น ตอนกล้องนิ่งดูปกติ แต่พอขยับ หินจะเอนและไหลไปกับพื้น ใน figure วงส้มคือที่หินควรอยู่ จุดฟ้าคือที่ projection วางมัน
ทางเลือกคือสร้าง geometry คร่าว ๆ ให้หิน หรือ paint หินออกจากภาพที่ฉายลงพื้นแล้วใส่หินเป็นชั้นของตัวเอง
4 ในงานจริง
ทำใน Nuke
- Camera ที่ตรงกับ plate: ทำสำเนาไว้ใช้ฉาย แล้วตรึงไว้ที่เฟรมที่จะฉาย
- ภาพที่จะฉาย + กล้องฉาย → Project3D
- Project3D → Card หรือ geometry จาก ReadGeo ที่วางตรงกับฉาก
- รวมใน Scene แล้ว ScanlineRender ด้วย Camera ตัวที่ขยับ
- เทียบผลกับ plate ที่เฟรมฉาย ต้องตรงกันก่อนเริ่มขยับ
พลาดบ่อย → แก้ยังไง
- ✗ ใช้กล้องตัวเดียวกันทั้งฉายและ render✓ แยกกล้องฉายที่ตรึงไว้ ภาพจึงติดกับ geometry
- ✗ ฉายจากเฟรมแรกทั้งที่กล้องดันเข้าไปทีหลัง✓ ฉายจากเฟรมที่ใกล้ที่สุด หรือ paint ภาพละเอียดกว่า
- ✗ ฉายวัตถุที่นูนลงบนพื้นเรียบ✓ ทำ geometry คร่าว ๆ หรือ paint ออกแล้วแยกเป็นชั้น
- ✗ ขยับกล้องเกินระยะที่ plate ถ่ายไว้✓ ดูบริเวณ “นอก plate” แล้ว paint เผื่อหรือจำกัดการขยับ
เช็กก่อนส่งช็อต
- ที่เฟรมฉาย ภาพ render ตรงกับ plate
- ไม่มีพื้นผิวคมที่ยืดเกินราว 2× ตลอดช็อต
- ไม่มีบริเวณนอก plate โผล่ในเฟรม
- วัตถุนูนไม่ไหลไปกับพื้น
5 เช็กตัวเอง
กล้องใหม่ดันเข้าไปใกล้พื้น แล้วพื้นใกล้ ๆ เบลอ แก้ตรงจุดที่สุดคืออะไร
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ภาพที่ฉายวิ่งตามกล้องไปตลอดและไม่ติดกับพื้น สาเหตุน่าจะเป็นอะไร
2. ช็อตดันกล้องเข้าหารูปปั้นจากเฟรม 1 ถึง 100 ควรฉายจากเฟรมไหน
ตัวเลขมาจากไหน: ฉากสร้างใหม่ในเบราว์เซอร์จาก plate ทะเลทรายและ depth pass จาก Blender (กล้อง 35 มม. เซนเซอร์ 36 มม. สูง 1.6 ม. ก้ม 4°) ตัวเลข parallax คำนวณจากสูตร pinhole: เลื่อนกล้อง T ม. จุดที่ลึก Z ม. เลื่อน ≈ 622·T/Z px ในเฟรมกว้าง 640 การแยกชั้น, ค่า "stretch", ตาข่ายความลึก และ clean plate อัตโนมัติ เป็นแบบสอนหลักการ (ขอบวัตถุและการลบหินทำแบบง่าย) ไม่ใช่ผลจาก Nuke