1 อธิบาย
track เดียวกันใช้ได้สองทาง stabilise ใช้ค่า track แบบกลับทิศ จุดที่ track ไว้จะนิ่งและ plate ขยับแทน ส่วน match-move ใช้ค่าแบบตรงทิศ ให้ element วิ่งตามจุดนั้น ทั้งสองแบบ track ยึดได้เฉพาะสิ่งที่อยู่ระยะลึกเดียวกับจุดที่ track
decal สติกเกอร์เตือนสีส้มขาวถูกวางให้ตรงกับหินขวาที่เฟรม 1 ลองเปลี่ยน track ที่ขับ decal, ใช้แบบ (Stabilise หรือ Match-move) และ Reference frame แล้วดูค่าลื่นตอนนี้กับค่าลื่นมากสุดทั้ง shot เปิด มุมมอง stabilise เพื่อดูว่าแต่ละ track ล็อกอะไรไว้
match-move: +(track(f) − track(ref)) · stabilise: −(track(f) − track(ref))2 ลงมือลอง
โจทย์: ทำให้ decal ติดหิน โดยลื่นมากสุดตลอด 48 เฟรมไม่เกิน 1 px
เปิด มุมมอง stabilise ก่อน: track ที่ใช่จะทำให้หินขวานิ่ง จากนั้นเช็กว่าใช้แบบไหน และเฟรมที่ decal ถูกวางให้ตรง
3 เจาะลึก
track เดียว สองทิศ
Tracker เก็บแค่ว่าจุดหนึ่งขยับไปเท่าไรในแต่ละเฟรม เมื่อเอาไปใช้ เลือกได้ว่าจะหักล้างการเคลื่อนที่นั้น (stabilise) หรือเอาไปใส่ให้ของอื่น (match-move)
ถ้าจะให้ element ติดไปกับ plate ต้องเป็น match-move เสมอ stabilise ที่ใส่ให้ element จะพาไปทางตรงข้าม
| Stabilise | Match-move | |
|---|---|---|
| ทิศของ track | กลับทิศ | ตรงทิศ |
| อะไรนิ่ง | จุดที่ track | element เทียบกับจุดนั้น |
| อะไรขยับ | plate ทั้งภาพ | element |
| ใช้ทำอะไร | QC track, ทำงานบนภาพที่นิ่ง | ให้ element ติดกับ plate |
track ยึดได้แค่ระยะลึกของมัน
เมื่อกล้องเคลื่อนที่ ของใกล้ขยับในภาพมากกว่าของไกล (parallax) จุดบนภูเขาอยู่ไกลราว 150 m ส่วนหินที่ decal ติดอยู่ห่างราว 11 m ในเฟรม 1 ทั้งสองจึงขยับในภาพไม่เท่ากัน
ใช้ track ภูเขาขับ decal บนหิน decal จึงลื่นออกจากหินได้ถึงราว 45 px ในเฟรมที่แย่สุด ไม่มี reference frame ไหนแก้ได้ เพราะเป็นความต่างของระยะลึก ส่วนพื้นหลังที่ไกลมากเกือบเป็นชั้นแบนชั้นเดียว track 2D ของมันจึงยึดของที่อยู่ไกลพอ ๆ กันได้ แม้กล้องเคลื่อนที่
ก่อนใช้ track ให้เปิด stabilise ดู ถ้าผิวที่ element จะติดไม่นิ่ง track นั้นผิดระยะลึก
reference frame คือเฟรมที่ไม่มีการแก้
บนเฟรม reference ค่า transform เป็นศูนย์ เฟรมอื่นถูกขยับเทียบกับเฟรมนี้ ดังนั้นต้องเป็นเฟรมเดียวกับที่วาง element ให้ตรง ถ้าวางที่เฟรม 1 แต่ reference อยู่ที่ 24 element จะเลื่อนออกจากที่วางไว้
เลือก reference frame ให้เรียบร้อยก่อนแล้วค่อย export จากนั้นจัด element ให้ตรงบนเฟรมเดียวกันนั้นด้วย Transform ของมันเอง วางไว้ก่อนถึง match-move
- 1track จุดที่ระยะลึกเดียวกัน
- 2ตั้ง reference frame
- 3Transform จัดตำแหน่ง
- 4Match-move
- 5ดูทั้งช็อตแบบเล่น
linked, baked และจำนวนจุด
match-move แบบ linked ผูกด้วย expression กับ Tracker แก้ track ทีหลังแล้วตามไปเอง แบบ baked คัดลอก key มาเลย จึงไม่ตามการแก้ track track จุดเดียวให้แค่การเลื่อน ถ้าต้องการ rotation และ scale ต้องใช้ตั้งแต่สองจุดขึ้นไป
ของที่ต้องนิ่งสนิท noise ของ track ทีละเฟรมจะออกมาเป็นอาการสั่น ให้ mask ของที่ขยับเองในบริเวณที่ track ออก หรือใช้ค่า offset คงที่ในจุดที่ไม่ควรขยับเลย
| แบบ | ผล |
|---|---|
| Linked | ตามการแก้ track ทีหลัง |
| Baked | คัดลอก key ไม่ตามการแก้ |
| จุดเดียว | เลื่อนอย่างเดียว |
| สองจุดขึ้นไป | เพิ่ม rotation และ scale |
stabilised view คือการทดสอบ ไม่ใช่คำตัดสิน
stabilise บน track แล้ว scrub เร็ว ๆ เป็นการเช็กที่เข้มงวด แต่ในมุมมองนี้ element ถูก resample สองครั้ง ครั้งแรกจาก match-move อีกครั้งจาก stabilise ขอบที่สั่นเล็กน้อยจึงอาจมาจากการ resample ไม่ใช่ track ผิด ตัดสินผลสุดท้ายบนภาพปกติที่ไม่ stabilise ขณะเล่น
4 ในงานจริง
ทำใน Nuke
- Tracker: track จุดบนผิวที่ element จะติด ที่ระยะลึกเดียวกัน
- แท็บ Transform ของ Tracker: ไปที่เฟรมที่จะวาง element แล้วกด set to current frame เป็น reference frame
- Transform บน element: จัดตำแหน่งบนเฟรมนั้น ก่อนเข้า match-move
- Export ของ Tracker: เลือก Transform (match-move) ซึ่งผูกด้วย expression ถ้า track ยังอาจแก้ (แบบ baked คัดลอก key) แล้ว Merge (over) ลงบน plate
- QC: คัดลอก transform ตั้งเป็น stabilise แล้ว scrub เร็ว ๆ เสร็จแล้วเอาออก ตัดสินผลบนภาพที่ไม่ stabilise
พลาดบ่อย → แก้ยังไง
- ✗ ใส่ stabilise ให้ element✓ element ใช้ match-move เสมอ stabilise จะพาไปทางตรงข้าม
- ✗ วาง element ที่เฟรมหนึ่ง แต่ reference frame อยู่อีกเฟรม✓ ตั้ง reference frame เป็นเฟรมที่วาง element ก่อน export
- ✗ ใช้ track ของไกลยึด element ที่อยู่ใกล้✓ track จุดที่ระยะลึกเดียวกับ element
- ✗ ใส่ match-move ซ้ำหลัง roto ที่วิ่งตาม match-move ตัวแรกอยู่แล้ว✓ mask ก่อน แล้วใช้ match-move ตัวเดียวร่วมกัน ไม่งั้นการเคลื่อนที่ซ้อนสองเท่า
- ✗ ตัดสินผลจาก stabilised view✓ ขอบสั่นจาก filter สองรอบ ดูผลสุดท้ายแบบไม่ stabilise ขณะเล่น
เช็กก่อนส่งช็อต
- stabilise บน track แล้วผิวที่ element ติดนิ่ง
- element ใช้ match-move ไม่ใช่ stabilise
- reference frame ตรงกับเฟรมที่วาง element
- แต่ละสาย node มี match-move แค่ตัวเดียว
- ดูครบทั้งช็อตแบบไม่ stabilise ขณะเล่น ไม่มี slide หรือสั่น
5 เช็กตัวเอง
decal วิ่งสวนทางกับหิน ทั้งที่ใช้ track ของหินก้อนนั้นเอง เกิดจากอะไร
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. track ไหนควรขับ decal บนหินที่อยู่ใกล้กล้อง
2. วาง element ที่เฟรม 1 แต่ reference frame ของ Tracker อยู่ที่ 24 จะเห็นอะไร
ตัวเลขมาจากไหน: shot มือถือ 48 เฟรม (640×360) เรนเดอร์ใน Blender (Cycles) จากฉากทะเลทรายของเรา เพิ่มจอเขียวบนเสาและโดรนบินผ่าน เฟรม 1 คือกล้องเดียวกับ plate นิ่ง ตำแหน่งจริงของทุกจุดมาจาก 3D ของฉากเอง (truth.json, dist.f32) ตำแหน่ง track ในบทนี้คือตำแหน่ง 2D จริงของฉาก (project จากกล้องใน Blender) ดังนั้นการลื่นที่เห็นมาจากการเลือก track ทิศ และ reference frame เท่านั้น ไม่ได้มาจาก noise ของการ track