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

TR8 Object track กับ camera solve

เอาโดรนออกจาก camera solve แล้วให้มันมี solve ของตัวเอง

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

1 อธิบาย

camera solve ถือว่าโลกนิ่งทั้งหมด track ที่อยู่บนของที่ขยับเอง เช่นโดรน จะขัดกับ track อื่นทุกตัวและดึงกล้องให้เพี้ยน ของที่ขยับเองจึงต้อง mask ออก แล้ว solve การเคลื่อนที่ของมันแยกเป็น object track

สลับ “การ solve” จาก “camera solve ด้วยทุก track” ไปเป็น “camera solve, mask โดรนออก” แล้วเป็น “camera + object solve” ดูค่า error เฉลี่ยของกล้อง กับค่าลื่นมากสุดของกรวยบนพื้นและของไฟ beacon บนโดรนไปพร้อมกัน

2 ลงมือลอง

โจทย์: ทำให้ทั้งกรวยบนพื้นและไฟ beacon บนโดรนลื่นไม่เกิน 1 px

กรวยอยู่ใน world มองผ่านกล้องที่ solve แล้ว ส่วนไฟผูกกับโดรน ลองถามว่าแต่ละอันได้การเคลื่อนที่มาจาก track ชุดไหน

SkyVFX Lab · TR8interactive · 1001

3 เจาะลึก

ทำไม camera solve ต้องการโลกที่นิ่ง

solver หากล้องตัวเดียวที่อธิบาย track ทุกตัวได้พร้อมกัน โดยถือว่าทุกจุดเป็นจุดนิ่งในโลก ถ้ามีจุดที่ขยับเอง มันจะไม่มีกล้องตัวไหนอธิบายได้ solver ก็จะประนีประนอม บิดกล้องไปทางจุดพวกนั้นนิดหนึ่ง

ผลคือ CG บนพื้นไหล ทั้งที่ track บนพื้นเองดีอยู่แล้ว ค่า error เฉลี่ยอย่างเดียวบอกเรื่องนี้ไม่ได้ ต้องดู CG บนพื้นขณะเล่นภาพ

ก่อนกด solve ถามตัวเองว่าในเฟรมมีอะไรขยับเองบ้าง เช่น คน รถ ฝุ่น เงา และโดรน

Mask ของที่ขยับออกจาก camera solve

วาด Roto รอบทุกอย่างที่ขยับเองตลอดความยาวช็อต แล้วต่อเข้า mask ของ CameraTracker ขยาย matte ออกเล็กน้อยให้ feature ไม่ไปเกาะตรงขอบของวัตถุ

ของเล็ก ๆ ที่ขยับในฉากหลังก็สำคัญ track บนพื้นหลังที่ไปเกาะคนเดินผ่านจะอ่านออกมาเป็นอาการสั่น

  1. 1หาของที่ขยับเอง
  2. 2Roto ตลอดช็อต
  3. 3ขยาย matte
  4. 4เข้า mask ของ CameraTracker
  5. 5Solve แล้วเช็ก CG บนพื้น

Object track: solve ตัววัตถุแยกจากกล้อง

เมื่อได้กล้องจากจุดนิ่งแล้ว object track ใช้เฉพาะ track บนวัตถุ หาว่าวัตถุเคลื่อนที่และหมุนอย่างไรเทียบกับกล้องนั้น โปรแกรม matchmove เฉพาะทางทำ camera กับ moving object ไปพร้อมกันได้

track บนวัตถุต้องอยู่บนส่วนที่แข็งและขยับไปด้วยกันทั้งก้อน เช่นตัวถังโดรน ไม่ใช่ใบพัดที่หมุนแยก และต้องมีจำนวนพอกระจายทั่วตัว ถ้าน้อยเกินไป solve จะไม่นิ่ง

CGผูกกับtrack ที่ใช้
กรวยบนพื้นworld + Camera ที่ solveพื้นและหิน (นิ่ง)
ไฟบนหลังโดรนtransform ของโดรนตัวถังโดรนเท่านั้น

เช็ก object solve แบบ stabilise

การ invert world matrix ของวัตถุจะทำให้วัตถุนั้นนิ่งอยู่ที่ origin เป็นแบบ 3D ของเรื่อง stabilise กับ match-move ในบท TR2 ถ้า solve ดี วัตถุจะแทบไม่ขยับในมุมมองนั้น

แล้วดู CG ทั้งสองชุดขณะเล่นภาพ ตลอดทั้งช็อต CG บนพื้นต้องติดพื้น CG บนวัตถุต้องติดวัตถุ

ค่า error ต่ำไม่ได้แปลว่าไม่ไหล ตาที่ดูภาพขณะเล่นคือคนตัดสินสุดท้าย

4 ในงานจริง

ทำใน Nuke

  1. Roto รอบโดรนและของที่ขยับเองทั้งหมด ตลอดช็อต ขยาย matte เล็กน้อย
  2. ต่อ Roto เข้า mask ของ CameraTracker (NukeX) ตั้ง Mask เป็น Mask Alpha แล้ว track และ solve
  3. export Camera แล้ววาง CG บนพื้น เช่นกรวย ไว้ใน world มองผ่าน Camera ตัวนั้น
  4. นำ solve ของโดรนเข้ามาเป็น Axis ที่มี animation (เช่นจากโปรแกรม matchmove ที่ solve object ได้)
  5. parent ไฟบนหลังโดรนเข้ากับ Axis นั้น ไม่ใช่กับ Camera หรือ world

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

  • ✗ ปล่อยคน รถ หรือโดรนไว้ใน camera solve✓ Roto ของที่ขยับเองออกทั้งหมดก่อน solve ตลอดความยาวช็อต
  • ✗ parent CG ของวัตถุที่ขยับเข้ากับกล้องหรือ world✓ parent เข้ากับ transform ที่ solve ของวัตถุนั้น
  • ✗ solve วัตถุด้วยจุดน้อยเกินไป หรือมีจุดบนใบพัด✓ ใช้จุดบนส่วนที่แข็งเท่านั้น ให้มีพอและกระจายทั่วตัว
  • ✗ เชื่อค่า error เฉลี่ยของกล้องโดยไม่ดู CG✓ ดู CG บนพื้นและบนวัตถุขณะเล่นภาพทั้งช็อต

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

  • ของที่ขยับเองทุกชิ้นถูก mask ออกจาก camera solve ทั้งช็อต
  • CG บนพื้นไม่ไหล ทั้งใกล้ ไกล กลางเฟรม และขอบ
  • CG บนวัตถุ parent เข้ากับ transform ของวัตถุ
  • object solve ใช้เฉพาะจุดบนส่วนที่แข็ง ไม่มีใบพัดหรือชิ้นที่ขยับแยก
  • ไล่ดูทุกเฟรม ไม่ใช่แค่ค่าเฉลี่ย

5 เช็กตัวเอง

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

ใน setup ที่ใช้ทุก track รวมใน camera solve เดียว ทำไมกรวยบนพื้นถึงไหล

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

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

คำถามเพิ่ม

1. ไฟบนหลังโดรนควร parent เข้ากับอะไร

2. ควรใช้ track ชุดไหนใน object solve ของโดรน

ตัวเลขมาจากไหน: shot มือถือ 48 เฟรม (640×360) เรนเดอร์ใน Blender (Cycles) จากฉากทะเลทรายของเรา เพิ่มจอเขียวบนเสาและโดรนบินผ่าน เฟรม 1 คือกล้องเดียวกับ plate นิ่ง ตำแหน่งจริงของทุกจุดมาจาก 3D ของฉากเอง (truth.json, dist.f32) เป็น solve แบบสอนหลักการเหมือนบท TR6: กล้องหาจาก track ที่นิ่ง ท่าทางของโดรน (6 ค่าต่อเฟรม) หาจาก track บนโดรนร่วมกับกล้องที่ solve แล้ว ทั้งหมดคำนวณแบบ least squares ในเบราว์เซอร์ จากตำแหน่ง 2D จริงของฉากเราเองบวก noise ที่กำหนด seed ไว้ ไม่ใช่ solver ของ Nuke หรือโปรแกรม matchmove