Pixar's Brave cloth/hair simulation.

Discussion in 'CG News' started by panupat, 17 August 2012.

  1. panupat Administrator

    ในบทสัมภาษณ์นี้ Barbara Robertson จะพูดคุยกับเราเกี่ยวกับ FizT ซึ่งเป็นเทคโนโลยีการ simulation เสื้อผ้าในภาพยนตร์แอนิเมชัน Brave

    อ่านบทความต้นฉบับได้ใน Innovation Magazine เล่ม 159

    TDW159.f_brave.141small.jpg

    Brave ภาพยนตร์แอนิเมชันเรื่องล่าสุดของ Pixar ดำเนินเรื่องในโลกที่เขียวชอุ่ม มีชีวิตชีวา การสร้างสรรค์โลกดังกล่าว รวมถึงการ simulate เส้นผมที่ดุร้าย และเสื้อผ้าที่ซ้อนกันหลายต่อหลายชั้นอย่างที่ไม่เคยมีมาก่อนในการ์ตูนเรื่องไหนๆ ล้วนแล้วแต่เป็นบทพิสูจน์ฝีมือของทีมวิทยาศาสตร์และทีมฝ่ายศิลป์ของ Pixar

    brave-merida-sword-cu.jpg

    Claudia Chung เริ่มงานกับ Pixar เป็นครั้งแรกในฐานะ intern เมื่อปี 2001 เธอเข้าร่วมทีมเต็มตัวระหว่างการถ่ายทำ Finding Nemo ในฐานะ Rendering Artist และ Technical Director จากนั้นจึงร่วมทีม Simulation ระหว่างการถ่ายทำ Ratatouille และ The Incredibles และได้รับตำแหน่ง Cloth Lead ในภาพยนตร์แอนิเมชันเรื่อง Up

    brave_fergus_costume.jpg

    “ความท้าทายในภาพยนตร์เรื่องนี้ก็คือความสลับซับซ้อนและความมีศิลปะนี่แหละค่ะ”
    “ชุดของ Fergus มีผ้าซ้อนทับกันถึง 8 ชั้น ส่วน Merida ... ตั้งแต่ได้เห็น story reel แรกเมื่อ 3 ปีก่อน เธอก็เปลี่ยนชุดครั้งแล้วครั้งเล่า เราเองพยายามนับจำนวนครั้งไว้นะคะ แต่สุดท้ายก็ได้แต่ถอนใจบ่น เอาอีกแล้วหรือ เปลี่ยนอีกแล้วหรือ?

    ทีม Cloth ต้องระดมความคิดเป็นอย่างมากที่จะช่วยเล่าเรื่องการทำตัวดื้อดึงของ Merida เช่น ฉากที่เธอถูกแม่จับรัดไว้ในชุดคอร์เซ็ต ก่อนจะฉีกชุดนั้นทิ้งเพื่อให้ข้อศอกมีอิสระในการยิงธนู

    TDW159.f_brave.swatch3.jpg

    groom/asset lead Emron Grover กล่าวว่า
    “เราเตรียมชุดเอาไว้ 2 ชุดสำหรับฉากแข่งขันยิงธนู”
    “ชุดแรกเราแยกส่วนชุดรอเอาไว้แล้วสำหรับส่วนที่จะถูกฉีกขาด โดยมี parameter สำหรับ animate ให้ขาดออกได้ตามที่เราต้องการ รอยขาดที่เห็นเกิดจาก shading”
    “หลังจากที่เธอกระชากชุดชั้นนอกออกจนหมดแล้ว ชุดข้างในเป็นอีก set หนึ่งอย่างสิ้นเชิงซึ่งมีดีไซน์ตรงกับชุดแรก”

    Cloth Solver ตัวแรกของ Pixar เป็นผลงานของ Michael Kass สร้างขึ้นเพราะจำเป็นต้องใช้ในการ simulate เสื้อผ้าในภาพยนตร์สั้น ‘Genri Game’ (ได้รับรางวัลออสการ์ในปี 1998) หลังจากนั้น Kass ได้ร่วมมือกับนักวิทยาศาสตร์ senior อีก 2 คนของ Pixar Research Group เพื่อพัฒนาต่อจนกลายเป็น simulation engine ชื่อ FizT (senior ทั้ง 2 ได้แก่ Andrew Witkin และ David Baraff ) Pixar ใช้ engine ตัวดังกล่าวในภาพยนตร์เกือบทุกเรื่อง เรื่องที่โดดเด่นที่สุดคือ Monster Inc. โดยใช้ทำ Dynamic ให้กับขน ผม และเสื้อยืดของ Boo

    TDW159.f_brave.monsters_inc-580x523.jpg

    Pixar สร้าง engine ใหม่ขึ้นมารับมือเส้นผมที่พันกันยุ่งเหยิงของ Merida โดยเฉพาะ ชื่อ Taz แต่มันเป็น engine เฉพาะกิจ FizT จะยังคงเป็นตัวหลักในการทำเส้นผมและเสื้อผ้าของ Monster University

    ก่อนจะมี FizT ระบบ simulation เสื้อผ้าโดยส่วนใหญ่มักมีปัญหาผ้าพันกันเวลาพื้นผิวเข้าใกล้กันเสมอ นักวิทยาศาสตร์ของ Pixar คิดค้นระบบใหม่ขึ้นมาแก้ปัญหาดังกล่าวและนำออกแสดงเป็นครั้งแรกในงาน Siggraph 2003

    Baraff กล่าวว่า “ระบบของเราจะสำรวจหาพื้นผิวทั้งหมดของผ้า และมองหาร่องรอยการ intersect (ทับกัน) ทั้งหมด จากนั้นมันจะคำนวณว่ามีอะไรทะลุกันหรือไม่ ปกติเราจะพยายามให้เสื้อผ้าเว้นระยะจากกัน โดยมีอะไรคล้ายๆ สปริงคั่นกลาง แต่ระบบของเราฉลาดพอจะเข้าใจเช่นกันว่าในบางครั้งเราจำเป็นต้องกดเสื้อผ้าเข้าหากันด้วย ระบบของเราสามารถวิเคราะห์รูปทรงเรขาคณิตเพื่อทำความเข้าใจได้ด้วยตัวมันเองว่าเสื้อผ้าส่วนไหนอยากผลักออกจากกัน หรืออยากดึงเข้าหากัน”

    “ลองนึกภาพว่ามีผ้าพับไว้กองหนึ่ง แล้วเราโยนลูกบอลลงไปใส่มัน ผ้าที่อยู่ข้างบนจะโดนกดลงไปจนทะลุผ้าที่อยู่ข้างล่าง รอยต่อของมัน แน่นอน เป็นรูปวงกลม ระบบของเราจะแบ่งผ้าออกเป็น 2 ส่วน ส่วนข้างในวงกลม ผ้าชั้นบนจะอยากดึงผ้าชั้นล่างติดไปด้วย ในขณะที่นอกวงกลม ผ้าทั้งสองจะพยายามเว้นระยะออกจากกัน”

    TDW159.f_brave.16_105-580x242.jpg

    “โดยปกติผมชอบเขียนโปรแกรมให้เข้าใจง่ายๆ ไม่สลับซับซ้อน แต่ algorithm ที่เราใช้ในการตัดสินใจว่าเสื้อผ้าส่วนไหนจะดึงหรือจะดันกัน มันเป็นอะไรที่ซับซ้อนมาก ซับซ้อนที่สุดเท่าที่เราเคยเขียนมาเลยทีเดียว เราพยายามหลีกเลี่ยงที่จะใช้มันถ้าเป็นไปได้ แต่ในบางกรณีเราก็ไม่มีทางเลือก”

    “เวลาเอา simulation ไปใช้งานจริงๆ เรามักจะเจอปัญหาที่แก้สมการได้ยากมาก อันนี้เป็นวิธีขี้โกงอีกอย่างหนึ่งของเรา เวลามีเสื้อผ้าชิ้นเล็กๆ ที่เกิดสับสนใจตัวเองขึ้นมา ตัดสินใจไม่ถูกว่าจะดึงหรือจะดัน หรืออะไรก็ตามแต่ เราจะโค้ดให้ผ้าชิ้นนั้นอยู่นิ่งๆ ไม่ต้องทำอะไรเลย อย่างน้อยที่สุดมันก็จะไม่ก่อปัญหาอะไรเพิ่มเติมให้เรา”

    แม้จะฟังดูซับซ้อน แต่ FizT Engine ถือว่าเป็นโปรแกรมที่มีขนาดเล็กมากเมื่อเทียบกับ software ตัวอื่นๆ “มันเป็นโปรแกรมขนาดเล็กๆ ที่ต้องรับข้อมูลจำนวนมหาศาล เหมือนมีท่อจำนวน 200 ล้านเส้นพ่นข้อมูลเข้าใส่มันตลอดเวลา”

    “เราเพียงต้องการอะไรที่ใช้งานได้สำหรับ Monster Inc แต่เราต้องใช้เวลาถึง 6 เดือนในการทำเสื้อยืดของ Boo เพียงตัวเดียว ผมแทบบ้าเลยทีเดียวเพราะใน Incredibles เรามีตัวละครเยอะแยะ แถมมีเสื้อผ้าเยอะกว่ากันเป็นร้อยเท่า เราผ่านพ้นมันมาได้ แต่ก็เจอปัญหามากมายใน simulator ของเรา”

    ปัญหาใหญ่ปัญหาหนึ่งคืออาการ ‘หน่วง’ ซึ่งเกิดขึ้นจากระบบสร้างแรงเสียดทาน เวลา Mr. Incredible เคลื่อนไหวเร็วมากๆ แรงเสียดทานที่เกิดขึ้นทำให้ dynamic เสื้อผ้าดูหน่วงๆ ช้าๆ กว่าที่ควรจะเป็น แต่พอ Mr. Incredible หยุดการเคลื่อนไหวกะทันหัน แรงเฉื่อยที่เหลืออยู่จะทำให้เสื้อผ้าขยับต่อไปไม่ยอมหยุด “เราต้องแก้มันด้วยมือ ดังนั้นใน Ratatouille เราจึงพุ่งสมาธิไปแก้ไขการหน่วงดังกล่าว และได้ผลที่น่าพอใจทีเดียว เสื้อผ้าจะแนบติดกับตัวละครในแบบที่เราสามารถควบคุมได้มากขึ้นกว่าเดิม” การแก้ไขสามารถทำได้ทั้งแบบอัตโนมัติ หรือให้ animator keyframe เอาก็ได้เช่นกัน

    TDW159.f_brave.incredibles_shot.jpg

    การสร้างเสื้อผ้า

    นับตั้งแต่เรื่อง Monsters Inc เป็นต้นมา ทีม modeller จะตัดเย็นเสื้่อผ้าออกมาเป็นรูปแบบ 2D ก่อน คล้ายกับการตัดเย็บผ้าในโลกความเป็นจริง อันที่จริงแล้วตอนที่ Emron Grover เริ่มฝึกงานในเรื่อง Up Pixar ถึงกับส่งเขาไปโรงเรียนเย็บผ้าเลยทีเดียว

    Baraff อธิบายความสำคัญของการเย็บผ้า 2D ว่า “การที่ผ้าแบนสนิทเป็น 2D ทำให้เราได้ UV ที่สมบูรณ์มาก นอกจากนั้น เสื้อผ้าของจริงเองก็ถูกเย็บขึ้นมาจากผ้าแบนๆ แบบ 2D เช่นกัน หากเราปั้นมันขึ้นมาเป็น 3D มันมีโอกาสมากที่เราจะทำรูปทรงอะไรขึ้นมาที่ไม่สามารถกางให้เรียบได้”

    TDW159.f_brave.16_54-580x241.jpg

    รูปทรงที่ไม่อาจทำให้แบนราบ จะก่อให้เกิดปัญหา ทั้งในแง่ texture ยืด และการทำ shading

    Baraff อธิบายเพิ่มเติม “เราทุกคนรู้ว่ามันยาก ไม่ว่าจะเป็นโปรแกรมกาง UV อะไรก็ตาม สุดท้ายเราต้องอาศัยความสามารถและตัดสินใจของมนุษย์ในการจะกางมันให้เรียบ หลายๆ ครั้งเราต้องทำการแยกชิ้นส่วน ในกรณีของผ้า มันจะทำให้เกิดการบิดเบี้ยวซึ่งดูผิดความเป็นจริงมาก การทำผ้าเป็นชิ้นส่วนแบบ 2D ทำให้เราได้ UV ที่เพอร์เฟค และระบบของเราจะทำการเพิ่มรายละเอียดให้ mesh เอง”

    อย่างไรก็ตาม การค้นหาหรือการฝึกศิลปินให้เข้าใจรูปแบบการตัดเย็บเสื้อผ้าก็เริ่มยากขึ้นและกลายเป็นปัญหาในการถ่ายทำ Brave “ในภายหลัง เราตัดสินใจว่า UV เอาแค่ใกล้เคียงก็พอ ไม่จำเป็นต้อง perfect ซึ่งช่วยให้ปัญหาเราน้อยลงมาก เราสร้างระบบใหม่ขึ้นมา เรียกว่า 3D Cloth กหรือ C3D ถือเป็นระบบ simulation เสื้อผ้าที่ล้ำหน้ามากในช่วง 2-3 ปีมานี้ เรามีโอกาสทดลองใช้มันใน Toy Story 3 และเรารู้เลยว่าอยากใช้มันใน Brave”

    TDW159.f_brave.boxout-580x241.jpg

    ทีมปั้นโมเดลต้องปั้นชุดให้ Merida ถึง 22 ชุด ต้องเอาผ้าห่อตัว Fergus ทีเดียวถึง 9-10 ชิ้นซึ่งต้อง simulate ต้องทำชุด 3 ชุดให้ Elinor ทำเสื้อผ้าให้แฝดทั้ง 3 รวมถึงลอร์ดและลูกๆ นอกจากนั้นยังมีผ้าอีกกว่า 30 รูปแบบสำหรับนำไปแต่งตัวให้กับตัวละครรองๆ ถึง 94 ตัว มันเป็นไปไม่ได้เลยถ้าไม่มีระบบ C3D

    Pixar เปิดแผนกทำเสื้อผ้า 3D โดยเฉพาะสำหรับการนี้ ระบบ C3D จะช่วยสร้าง Mesh จากแบบเสื้ออัตโนมัติ ดังนั้น ทุกๆ ครั้งที่มีการเปลี่ยน shape มันจะสร้าง mesh ให้ใหม่ทันทีโดยไม่ต้องปั้นใหม่

    แต่เมื่อรูปทรงเปลี่ยน shading เองก็ต้องเปลี่ยนเช่นกัน “คนส่วนใหญ่จะรอ shading ไว้ตอนท้ายๆ เพราะกลัวว่าเสื้อผ้าจะมีการเปลี่ยนแปลงอะไรเกิดขึ้นอีก แต่ C3D ช่วยแก้ปัญหานั้นให้เรา เพราะเราเพียงต้องทำ shading บน low res เท่านั้น เวลาเราส่งมันไป simulation ระบบ C3D จะสร้าง hi res ให้เราเองอัตโนมัติ ข้อมูลของ shading ถูกส่งต่ออย่างไม่มีปัญหา ไม่ว่าผ้าจะพับ จะม้วน จะยืดหดอย่างไร”

    TDW159.f_brave.16_75-580x249.jpg

    ขนาดของตัวละครไม่มีผลอะไรกับความซับซ้อนของ Geometry เลย “เราประหลาดใจทีเดียว เพราะ Fergus แม้จะตัวใหญ่มาก แต่ resolution ของชุดของ Merinda และ Elinor กับสูงกว่า คงเพราะชุดของพวกเธอมีรายละเอียดเล็กๆ จำนวนมาก Merida มีแขนเสื้อฟูๆ ตรงข้อศอก เราอยากให้ชุดของเธอดูมีน้ำหนักแต่ก็คล่องตัว ชุดของ Elinor เป็นผ้าไหมที่บางเบาพลิ้วไหวซึ่งทำให้เธอดูอ่อนช้อยและมีราศีราชินี ชุดของเธอยาวมากและยังไถลไปกับพื้นเสียด้วย”

    TDW159.f_brave.swatch81.jpg

    ทีม modeller ปั้นชิ้นส่วนของเสื้อผ้าขึ้นมาเป็น Quad ทั้งหมด และใส่ Edge Loop เพื่อระบุตำแหน่งของรอยต่อ รอยเย็บ และร่อยย่น “modeller จะเอาเสื้อผ้าไปสวมให้ตัวละครให้พอดี จากนั้น C3D จะทำโมเดลให้เป็น triangle เพื่อ simulate ก่อนที่ทีม simulation จะใช้ FizT ทำการ relax เสื้อผ้าเพื่อดูผล”

    “แรกๆ เราทดลองทำเสื้อผ้าให้ Merida ทั้งแบบ 2D และ 3D และค้นพบว่าการปั้นเป็น 3D เลย แม้จำทำได้ยากกว่าแต่ก็ให้ผลที่น่าพอใจกว่า” ทีม Brave ใช้วิธีปั้น 3D เป็นส่วนใหญ่ แต่ก็มีในบางกรณีที่ทีม Simulation จำเป็นต้องใช้ลูกผสม 2D + 3D

    Baraff กล่าวทิ้งท้าย “เป็นเรื่องตลกเหมือนกัน เมื่อเราปั้นชุดในเรื่อง Genri ทุกคนตกอกตกใจกัน อะไรนะ? คุณจะปั้นเสื้อผ้าเป็น 2D หรือ? แต่หลายปีหลังจากนั้นเรารู้ว่าเสื้อผ้าใน Brave จะซับซ้อนขนาดไหน เราจึงตัดสินใจเปลี่ยนแปลงระบบนั้น ทุกคนถึงกับตกอกตกใจ อะไรนะ? คุณจะปั้นเสื้อผ้าเป็น 3D หรือ? คงมีไม่กี่คนเท่านั้นที่จำได้ ว่าในยุคแรกสุด เราก็ปั้นเสื้อผ้าเป็น 3D เช่นกัน”
    Slothy and Azure like this.

Share This Page