หน้าแรก · Lab · Tracking และ matchmove

TR7 เช็ก matchmove ว่าลื่นไหม

วาง CG บนพื้น ใกล้และไกล แล้วเล่นทั้งช็อต

Tracking และ matchmove · ~8 นาที · ฟรี

1 อธิบาย

ตัวเลข solve error บอกได้ไม่หมดว่ากล้องใช้ได้ไหม การเช็กที่ตรงที่สุดคือวาง CG ง่าย ๆ บนพื้น เช่นกรวย แล้วเล่น shot ถ้า CG ลื่นเทียบกับ plate แปลว่ากล้องผิด ไม่ว่าตัวเลขจะดีแค่ไหน

คลิกวางกรวยบนพื้นได้สูงสุด 4 อัน ทั้งใกล้และไกล แล้วสลับกล้อง A, B, C, D ดู slide now และ worst ของแต่ละกรวย เทียบกับ average error และ worst-frame error ของกล้อง สังเกตว่ากล้องไหนหลอกกรวยอันเดียวที่อยู่ไกลหรือกลางเฟรมได้

2 ลงมือลอง

โจทย์: วางกรวยหนึ่งอันใกล้กว่า 12 ม. และอีกอันไกลกว่า 25 ม. แล้วหากล้องที่ไม่มีกรวยไหนลื่นเกิน 1.5 px

ดูค่า worst ของทุกกรวย ไม่ใช่แค่ slide now และเล่นให้ครบทั้งช็อต กล้องที่ทำให้กรวยหนึ่งนิ่ง อาจทำให้อีกกรวยลื่นก็ได้

SkyVFX Lab · TR7interactive · 1001

3 เจาะลึก

ตัวเลข error ไม่ใช่คำตอบสุดท้าย

solve error บอกค่าเฉลี่ยว่า track อยู่ห่างจากจุดที่กล้องคำนวณไว้กี่ pixel แต่ไม่ได้บอกว่าภาพจะดูนิ่งหรือไม่ solve ที่ค่าเฉลี่ยต่ำก็ยังลื่นหรือสั่นได้

การเช็กจริงคือวาง CG ง่าย ๆ บนพื้น เช่นกรวย แล้วเล่น shot ตาคนจับการลื่นได้ในภาพเคลื่อนไหว ภาพนิ่งเฟรมเดียวจึงไม่พอ

ถ้าตัวเลขกับภาพไม่ตรงกัน เชื่อภาพ

วางให้ครบ: ใกล้ ไกล กลาง ขอบ

กรวยอันเดียวกลางเฟรมหลอกได้ง่าย กล้องหลายแบบที่ผิดยังทำให้จุดเดียวนิ่งได้ ตำแหน่งที่ลื่นบอกได้ว่าผิดตรงไหน

อาการสาเหตุที่น่าจะเป็น
ไกลนิ่ง ใกล้ลื่นfit แบบหมุนอย่างเดียว (nodal) บนช็อตที่กล้องเคลื่อนที่จริง
กลางนิ่ง ขอบลื่นfocal ผิด หรือขาด lens distortion
นิ่งเกือบทั้งช็อต แต่กระตุกบางเฟรมมีเฟรมเสียใน solve
นิ่งทุกจุดตลอดช็อตกล้องใช้ได้

อย่าแก้ focal ในกล้องที่ solve แล้ว

focal, lens distortion และการหมุนของกล้องถูกคำนวณมาด้วยกันเป็นคำตอบเดียว ถ้าเปลี่ยนแค่ focal ส่วนที่เหลือก็ไม่เข้ากันแล้ว ภาพจะลื่นมากขึ้นเมื่อห่างจากกลางเฟรม ถ้าต้องใช้เลนส์อื่น ให้ solve ใหม่ด้วยค่านั้น

fit แบบหมุนอย่างเดียวก็มีเงื่อนไขเช่นกัน ใช้ได้เฉพาะเมื่อกล้องหมุนรอบจุดเดิมจริง ๆ ถ้ากล้องเคลื่อนที่ พื้นใกล้จะลื่น

ค่าเลนส์จาก camera report ใช้เป็น input ตอน solve ไม่ใช่ค่าที่เอามาพิมพ์แก้ทีหลัง

ดูให้ครบทั้งช็อต

ค่าเฉลี่ยที่ดีซ่อนเฟรมเสียไม่กี่เฟรมไว้ได้ ดู worst-frame error คู่กับค่าเฉลี่ยเสมอ แล้วเล่นทั้งช็อต และ step ทีละเฟรมในช่วงที่สงสัย

ถ้าอยากวัดให้ชัด ใช้ Reconcile3D เปลี่ยนจุด 3D บนพื้นกับกล้องให้เป็น 2D track แล้ว stabilise บนจุดนั้น plate ตรงจุดนั้นควรนิ่ง

  1. 1วางกรวยใกล้และไกล
  2. 2เล่นทั้งช็อต
  3. 3ดู worst ไม่ใช่แค่ค่าเฉลี่ย
  4. 4step ทีละเฟรม
  5. 5stabilise ด้วย Reconcile3D

เช็ก layout ไปพร้อมกัน

กล้องที่ไม่ลื่นยังอาจวางฉากผิดได้ ลองวาง Card ขนาดใหญ่ลาย checkerboard เป็นพื้น เส้นขอบฟ้าของมันควรตรงกับเส้นขอบฟ้าของ plate วาง Cube ที่ pivot อยู่ที่ฐาน มันควรตั้งเรียบบนพื้น และวางวัตถุที่รู้ขนาด มันควรดูขนาดถูกต้อง

4 ในงานจริง

ทำใน Nuke

  1. ต่อ Camera ที่ solve แล้ว กับ Card ขนาดใหญ่ที่ใส่ CheckerBoard เป็นพื้น
  2. วาง geo เล็ก ๆ เช่น Cube ที่ pivot อยู่ที่ฐาน ทั้งใกล้ ไกล และใกล้ขอบเฟรม
  3. ScanlineRender ผ่าน Camera แล้ว Merge (over) ลงบน plate (ถ้ามี lens distortion ให้ redistort CG ก่อน ตามบท TR5)
  4. เล่นทั้งช็อต แล้ว step ทีละเฟรมในช่วงที่ worst-frame error สูง
  5. Reconcile3D: Camera + plate + Axis ที่จุดบนพื้น → create keyframes ได้ 2D track → stabilise แล้วดูว่าจุดนั้นนิ่ง

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

  • ✗ เช็กด้วยกรวยอันเดียวกลางเฟรม✓ วางทั้งใกล้ ไกล และใกล้ขอบเฟรม
  • ✗ ดูภาพนิ่งเฟรมเดียวแทนการเล่นช็อต✓ เล่นทั้งช็อต แล้ว step ทีละเฟรมในช่วงที่สงสัย
  • ✗ พิมพ์ focal ที่คิดว่าถูกลงในกล้องที่ solve แล้ว✓ solve ใหม่โดยใช้เลนส์นั้นเป็น input
  • ✗ รับ solve เพราะ average error ต่ำ✓ ดู worst-frame error และดูว่า CG บนพื้นลื่นไหมขณะเล่น

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

  • CG บนพื้นไม่ลื่นทั้งระยะใกล้และไกล
  • กลางเฟรมกับขอบเฟรมนิ่งเท่ากัน
  • เล่นครบทั้งช็อต และ step ผ่านเฟรมที่ error สูงแล้ว
  • stabilise ด้วย Reconcile3D บนจุดพื้นแล้ว plate นิ่ง
  • พื้น checkerboard ตรงเส้นขอบฟ้า และวัตถุที่รู้ขนาดดูขนาดถูก

5 เช็กตัวเอง

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

กรวยที่อยู่ไกลนิ่งดี แต่กรวยที่อยู่ใกล้กล้องลื่น สาเหตุที่น่าจะเป็นที่สุดคืออะไร

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

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

คำถามเพิ่ม

1. average error ของกล้องต่ำ แต่ worst-frame error สูงกว่ามาก ควรทำอย่างไร

2. focal ที่ solve ได้ไม่ตรงกับเลนส์ใน camera report ควรทำอย่างไร

ตัวเลขมาจากไหน: shot มือถือ 48 เฟรม (640×360) เรนเดอร์ใน Blender (Cycles) จากฉากทะเลทรายของเรา เพิ่มจอเขียวบนเสาและโดรนบินผ่าน เฟรม 1 คือกล้องเดียวกับ plate นิ่ง ตำแหน่งจริงของทุกจุดมาจาก 3D ของฉากเอง (truth.json, dist.f32) กล้อง A ถึง D สร้างในเบราว์เซอร์จากค่าจริงของฉาก (A คือ solve แบบสอนหลักการจากบท TR6 ที่ใช้ track ดี, B คือ A ที่เปลี่ยน focal เป็น 30 มม. โดยไม่ solve ใหม่, C คือ fit แบบหมุนอย่างเดียวจากตำแหน่งของเฟรมแรก, D คือ A ที่มีสามเฟรมเบี้ยว) เป็นกล้องแบบสอนหลักการที่ตั้งใจให้แต่ละตัวมีปัญหาเดียว ค่า slide วัดเทียบกับจุดบนพื้นจริงในฉาก 3D