1 อธิบาย
เส้นขอบฟ้าในภาพอยู่ที่ระดับสายตาของกล้องเสมอ ถ้ากล้องสูง 1.6 ม. ทุกอย่างที่สูง 1.6 ม. และยืนบนพื้นราบเดียวกันจะมียอดแตะเส้นขอบฟ้าพอดี ไม่ว่าจะอยู่ใกล้หรือไกล
เสาส้มใน plate สูง 1.6 ม. ทุกต้น ใช้เป็นไม้บรรทัด ลองปรับกล้อง CG ให้เส้นขอบฟ้าตรงกัน ให้ตาราง CG ทับลายพื้น และให้หุ่นยืนติดพื้นพอดี focal length เปลี่ยนมุมกว้าง ความสูงเปลี่ยนว่าพื้นดูแบนหรือลึก tilt เลื่อนเส้นขอบฟ้าขึ้นลง
horizon_y (from top of frame) = ½·H·(1 + tan(tilt) / tan(vFOV/2)) (H = frame height, tilt up = +)2 ลองเอง
ดูยอดเสาส้มก่อน มันบอกความสูงกล้องให้
3 เจาะลึก
เส้นขอบฟ้าคือระดับตา ไม่ว่าจะ tilt แค่ไหน
เส้นขอบฟ้าคือภาพของระนาบที่สูงเท่ากล้อง จุดไหนก็ตามที่สูงเท่ากล้อง ไม่ว่าใกล้หรือไกล จะตกบนเส้นนี้ tilt แค่เลื่อนเส้นขึ้นลงในเฟรม ไม่ได้เปลี่ยนว่ามันตัดของที่ระดับไหน
จึงใช้คนหรือของที่รู้ความสูงเป็นไม้บรรทัดได้ ถ้าเส้นตัดคนที่ยืนอยู่ตรงเอว กล้องก็สูงประมาณเอว
| เส้นขอบฟ้าตัดคนที่… | กล้องสูงประมาณ |
|---|---|
| แถวเข่า | ต่ำ ราวครึ่งเมตร |
| เอว | ราว 1 ม. |
| ตา | ราว 1.6 ม. |
| เหนือหัวทุกคน | สูงกว่าคน (เครน โดรน) |
focal length แค่ครอป ตำแหน่งกล้องกำหนด perspective
สรุปจาก L2: ของใกล้ใหญ่กว่าของไกลแค่ไหน ขึ้นกับว่ากล้องตั้งอยู่ตรงไหน focal length แค่เลือกว่าจะเห็นกว้างแค่ไหน ถ้าไม่ขยับกล้อง เปลี่ยน focal ก็เหมือนครอปภาพเดิม
สรุปจาก L1: มุมรับภาพแนวนอน = 2·atan(ความกว้างเซนเซอร์ / (2·focal)) เซนเซอร์ต้องตรงกับกล้องจริง focal เท่ากันบนเซนเซอร์เล็กกว่าจะได้ภาพแคบกว่า
| focal (เซนเซอร์กว้าง 36 มม.) | มุมแนวนอน |
|---|---|
| 24 mm | ≈ 74° |
| 50 mm | ≈ 40° |
| 85 mm | ≈ 24° |
อ่านเบาะแสจาก plate
เส้นขนานบนพื้น เช่นขอบถนนหรือลายพื้น จะวิ่งไปพบกันที่จุดบนเส้นขอบฟ้า ถ้ากล้อง tilt ขึ้นหรือลง เส้นตั้งอย่างเสาจะเอียงเข้าหากัน ถ้าเส้นขอบฟ้าเอียง แปลว่ากล้อง roll
- 1หาเส้นขอบฟ้า
- 2ความสูงกล้องจากไม้บรรทัด
- 3focal และเซนเซอร์
- 4tilt / roll
- 5วาง CG แล้วเช็กจุดสัมผัส
ถ้ารู้เลนส์จากกอง ให้ล็อก focal ไว้ ดีกว่าเดา
เมื่อกล้องขยับ และเรื่องเลนส์
plate กล้องนิ่งแมทช์ด้วยมือได้ แต่ถ้ากล้องเลื่อนตำแหน่งจนเกิด parallax (ของใกล้เลื่อนเร็วกว่าของไกล) ต้อง track กล้อง 3D ถ้ากล้องแค่หมุนอยู่กับที่ (nodal pan) จะไม่มี parallax
เลนส์จริงบิดภาพ เลนส์กว้างมักโป่งออก (barrel) ใช้ภาพที่ undistort แล้วเพื่อ track เท่านั้น แล้ว redistort เฉพาะ CG ให้เข้ากับ plate ไม่ต้องไปแตะ plate หลัก ขั้นตอนเต็มอยู่ใน L4
4 ในงานจริง
ทำใน Nuke
- Camera: ตั้ง focal length และ horiz aperture ให้ตรงเลนส์และเซนเซอร์จริง
- Card เป็นพื้น + ScanlineRender เพื่อเห็นตาราง CG บน plate
- ปรับ translate y (ความสูง) และ rotate x (tilt) จนเส้นขอบฟ้าและตารางตรงกัน
- กล้องขยับ: CameraTracker (อาจต้องใช้ NukeX) · เลนส์บิด: LensDistortion (undistort เพื่อ track, redistort CG)
- Merge CG over plate แล้วใส่เงาสัมผัสพื้นก่อนตัดสิน
พลาดบ่อย → แก้ยังไง
- ✗ CG ลอย เลยเลื่อนมันลงใน 2D✓ perspective จะผิดทั้งตัว แก้ที่ความสูงและ tilt ของกล้อง
- ✗ เปลี่ยน focal length เพื่อแก้ perspective✓ focal แค่ครอป perspective มาจากตำแหน่งกล้อง ขยับกล้องแทน (ดู L2)
- ✗ focal ถูกแต่ขนาดเซนเซอร์ผิด✓ มุมรับภาพจะผิด ตั้ง aperture ให้ตรงกล้องจริง (ดู L1)
- ✗ undistort plate หลักแล้วส่งออกไปแบบนั้น✓ คืนความบิดให้ CG แทน plate หลักไม่ต้องแตะ
- ✗ ตัดสินว่า CG ติดพื้นทั้งที่ยังไม่มีเงาสัมผัส✓ ไม่มีเงาใต้เท้า ของตรงตำแหน่งก็ยังดูลอย ใส่เงาก่อนแล้วค่อยดู
เช็กก่อนส่งช็อต
- เส้นขอบฟ้า CG กับ plate ตรงกัน
- ของที่รู้ความสูงใน plate กับ CG ขนาดเทียบกันถูก
- focal และเซนเซอร์ตรงกับกล้องจริง (ถ้ารู้)
- เส้นตั้งเอียงเท่ากับใน plate
- มีเงาสัมผัส และไม่ไถลเมื่อเล่นทั้งช็อต
5 เช็กตัวเอง
ใน plate หนึ่ง เส้นขอบฟ้าผ่านระดับตาของคนที่ยืนอยู่ทุกคน กล้องน่าจะสูงเท่าไหร่?
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. เปลี่ยนกล้อง CG จาก 35 มม. เป็น 50 มม. โดยไม่ขยับตำแหน่ง อะไรเปลี่ยน
2. ช็อตกล้องเลื่อน (dolly) เส้นขอบฟ้าตรงที่เฟรมแรก แต่หุ่นไถลบนพื้นเมื่อเล่น ต้องทำอะไร
ตัวเลขมาจากไหน: ฉากสร้างด้วย three.js กล้องใช้เซนเซอร์กว้าง 36 มม. plate ในบทนี้เป็นภาพเรนเดอร์จำลอง ไม่ใช่ฟุตเทจจริง