หน้าแรก · Lab · ห้องทดลองกล้อง 3D

CL4 มุมมองพระเจ้า: ดูกล้องจากข้างนอก

frustum, เซนเซอร์, focal และ FOV ขยับไปพร้อมกัน

ห้องทดลองกล้อง 3D · ~6 นาที · ฟรี

1 อธิบาย

กล้องคือกล่องมืดที่มีรูเล็ก ๆ แสงจากฉากวิ่งผ่านรูไปตกบนเซนเซอร์ด้านหลัง ระยะจากรูถึงเซนเซอร์คือ focal length ภาพบนเซนเซอร์กลับหัว และกรอบสี่เหลี่ยมของเซนเซอร์กำหนดว่าเห็นได้กว้างแค่ไหน (FOV)

มีสามเหลี่ยมคล้ายกันสองอัน: เซนเซอร์ ÷ focal = เฟรมที่ระยะหุ่น ÷ ระยะ เพิ่ม focal เซนเซอร์ถอยลึกลง กรวยแคบลง เปลี่ยนเป็นเซนเซอร์เล็ก กรวยก็แคบลงเหมือนกัน (crop factor) ถ้ามือถือมีเซนเซอร์เอียง ลองกดปุ่มแล้วเล็งกล้องด้วยการเอียงเครื่อง

FOV = 2 · atan(sensor ÷ (2 · focal)) · sensor ÷ focal = frame ÷ distance

2 ลงมือลอง

บทนี้ไม่มีโจทย์ ลองเปลี่ยนเซนเซอร์แล้วปรับ focal ให้ภาพในกรอบเล็กเหมือนเดิม

SkyVFX Lab · CL4interactive · 1001

3 เจาะลึก

กล้องคือรูเข็มกับแผ่นรับแสง

ในโปรแกรม 3D กล้องเป็น pinhole ในอุดมคติ: ทุกเส้นแสงผ่านจุดเดียว แล้วตกบนเซนเซอร์ที่อยู่หลังจุดนั้นเป็นระยะเท่ากับ focal ไม่มีชัดตื้น ไม่มี distortion จนกว่าจะเพิ่มเอง

กรวยที่ออกจากรูไปจนถึงขอบเซนเซอร์ (ด้านกลับ) คือ frustum ทุกอย่างในกรวยนี้จะอยู่ในภาพ ของนอกกรวยไม่ถูกเรนเดอร์

สามเหลี่ยมคล้ายสองอัน

ด้านหลังรู: ครึ่งเซนเซอร์กับ focal ด้านหน้ารู: ครึ่งเฟรมกับระยะ มุมเดียวกัน จึงได้ เซนเซอร์ ÷ focal = เฟรม ÷ ระยะ และ FOV = 2·atan(เซนเซอร์ ÷ 2·focal)

focalhFOV บน 36 มม.เฟรมกว้างที่ 6 ม.
18 mm90.0°12.0 m
35 mm54.4°6.17 m
50 mm39.6°4.32 m
135 mm15.2°1.60 m

crop factor

crop factor = ความกว้าง full frame ÷ ความกว้างเซนเซอร์ Super 35 กว้าง 24.89 มม. → crop ≈ 1.45 Micro 4/3 กว้าง 17.3 มม. → crop ≈ 2.08 เลนส์ 35 มม. บน Super 35 ให้มุมเท่ากับราว 50 มม. บน full frame แต่เลนส์ยังเป็น 35 มม. เหมือนเดิม

สำหรับ VFX ตัวเลขที่ต้องการคือขนาดพื้นที่เซนเซอร์ที่บันทึกจริงในโหมดที่ถ่าย (กล้องหลายตัวครอปเมื่อถ่ายบางความละเอียด) ไม่ใช่ชื่อรุ่นของเซนเซอร์

focal ไม่มีความหมายถ้าไม่บอกขนาดเซนเซอร์

pan และ tilt ในมุมมองพระเจ้า

pan หมุนกรวยรอบแกนตั้ง tilt หมุนรอบแกนนอน ตัวกล้องไม่ได้ย้าย ภาพในกรอบเล็กจึงแค่เลื่อน ไม่มีของใกล้–ไกลแยกจากกัน (บท CL6) การเอียงมือถือในห้องนี้ขยับแค่สองแกนนี้

4 ในงานจริง

ทำใน Nuke

  1. Camera: focal length, horizontal aperture และ vertical aperture คือสามเหลี่ยมในบทนี้ aperture คือขนาดเซนเซอร์เป็นมม.
  2. Viewer 3D (Tab): เห็น frustum ของกล้องเป็นเส้น ใช้ดูว่ากล้องเล็งไปทางไหนและกว้างแค่ไหน
  3. Camera: near และ far clipping กำหนดหัวและท้ายของ frustum ของที่อยู่นอกช่วงจะหายจากภาพ
  4. format ของ ScanlineRender ควรมี aspect เท่ากับ horizontal ÷ vertical aperture ไม่อย่างนั้นภาพจะยืดหรือถูกครอป

พลาดบ่อย → แก้ยังไง

  • ✗ ใช้ focal จากกองแต่ปล่อย aperture เป็นค่าเริ่มต้น✓ ใส่ขนาดเซนเซอร์ของกล้องและโหมดที่ถ่ายจริง
  • ✗ คิดว่า crop factor เปลี่ยน focal ของเลนส์✓ เลนส์เท่าเดิม แค่เซนเซอร์เก็บภาพได้น้อยลง
  • ✗ format ของ render ไม่ตรงกับสัดส่วน aperture✓ ให้ aspect ของ format = horizontal ÷ vertical aperture

เช็กก่อนส่งช็อต

  • focal และขนาดเซนเซอร์มาจากแหล่งเดียวกัน
  • สัดส่วน aperture ตรงกับ format ของ plate
  • near/far ไม่ตัดของที่ต้องเห็น
  • มองจาก 3D ว่ากล้องอยู่และเล็งถูกที่

5 เช็กตัวเอง

เช็กตัวเอง 1 ข้อ

เปลี่ยนจาก full frame เป็น Super 35 (crop ราว ×1.45) โดยใช้ 35 มม. เหมือนเดิม จะเกิดอะไรขึ้น

สิ่งที่ได้เรียน

🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด

คำถามเพิ่ม

1. เซนเซอร์กว้าง 36 มม. ใช้ 36 มม. hFOV เท่าไร

2. อยากได้มุมเท่ากับ 50 มม. บน full frame แต่ใช้ Micro 4/3 (crop ≈ 2.08) ต้องใช้ focal เท่าไร

ตัวเลขมาจากไหน: ความกว้างเซนเซอร์: full frame 36 มม., Super 35 24.89 มม., Micro 4/3 17.3 มม. ครอปเป็น 16:9 ทั้งหมด เซนเซอร์วาดใหญ่ขึ้น 25 เท่าให้มองเห็น การเอียงมือถือเป็นทางเลือก ขยับได้แค่ pan/tilt กล้องเป็นแบบ pinhole ในอุดมคติ (ไม่มี lens distortion) เซนเซอร์กว้าง 36 มม. ครอปเป็น 16:9 (36 × 20.25 มม.) ฉากและหุ่นสร้างด้วยโค้ดใน three.js