Home | Printer-friendly Version | Assignment : 1 , 2 , 3


รายงานจากผลงานวิจัยในการประชุมวิชาการ SIGGRAPH 2003 เรื่อง Keyframe Control of Smoke Simulations แบ่งเป็น 3 ส่วนใหญ่ ๆ ดังนี้

อนึ่ง รายงานนี้จัดทำโดย นายภูริพันธุ์ รุจิขจร เลขประจำตัว 433 12197 21


บทนำ

เมื่อไม่กี่ปีมานี้ งานทางด้านการจำลองของไหลต่าง ๆ (ลม, น้ำ, ควัน, ไฟ, ฯลฯ) ให้เหมือนจริงได้ก้าวหน้าไปอย่างมาก แต่เราก็ยังไม่สามารถควบคุมของไหลต่าง ๆ ให้เป็นไปตามที่ต้องการได้มากนัก เพราะต้องควบคุมผ่านตัวแปรต่าง ๆ ที่อยู่ในสมการของไหล (Navier-Strokes equations ซึ่งเป็น Differential equations) ซึ่งคาดเดาผลที่เกิดขึ้นจากการเปลี่ยนค่าของแต่ละตัวแปรได้ยาก


Navier-Stokes equations

งานวิจัยนี้เสนอให้ควบคุมรูปลักษณ์ของควัน โดยให้ผู้ออกแบบกำหนด keyframe (เหมือนในโปรแกรม Macromedia Flash) แล้วก็จะคำนวณ interpolation ให้ โดยจะหาค่าแรงลมที่เหมาะสมที่จะควบคุมควันให้เป็นรูปต่าง ๆ ตาม keyframe ซึ่งทำได้โดยสร้าง Objective function ที่แสดงว่าควันใกล้รูปแบบที่ต้องการมากน้อยแค่ไหนขึ้นมา แล้วเราก็ต้องพยายามหาค่าตัวแปรต่าง ๆ ที่ช่วยลดค่า Objective function นี้ให้ได้มากที่สุด

ในกรณีที่เรามี keyframe มากกว่าหนึ่งขึ้นไป (เช่น ให้ควันเปลี่ยนรูปไปเป็นเครื่องหมายถูก แล้วจึงเป็นเครื่องหมายผิด เป็นต้น) งานวิจัยนี้ก็ได้เสนอวิธี Multiple Shooting ที่ปรับปรุงใหม่ (เค้าอ้างว่าเป็นวิธที่คิดขึ้นมาเอง) เพื่อใช้ในการแบ่งปัญหาออกเป็นหลาย ๆ ส่วน เพื่อแก้ปัญหาแยกกัน แล้วจึงนำกลับมารวมกันใหม่


การเปลี่ยนรูปร่างของควันเมื่อมี Keyframe มากกว่าหนึ่งขึ้นไป
(ในที่นี้ ได้แก่ รูปเครื่องหมายถูก และ เครื่องหมายผิด)

ผู้วิจัยได้นำแบบจำลองควันมาจากงานของ Fedkiw R. และคณะ เรื่อง Visual Simulation of Smoke (SIGGRAPH 2001) และนำแนวคิดในการควบคุมผ่าน Keyframe มาจากงานของ Porovic J. เรื่อง Interactive Design of Rigid-Body Simulations for Computer Animation (PhD Thesis 2001)


รายละเอียด

แบบจำลองควันประกอบไปด้วยตารางของความเร็วและความหนาแน่นของอนุภาคในแต่ละตำแหน่ง โดยเราจะคำนวณสถานะถัดไปของควันได้จากสถานะก่อนหน้า ที่มีการเปลี่ยนแปลงของปัจจัยต่าง ๆ ดังนี้ : แรงภายนอกซึ่งจะใช้้ในการควบคุมรูปร่างของควันให้เป็นไปตามที่ต้องการ, การเปลี่ยนแปลงของความเร็ว, การฟุ้งของของไหล, การเปลี่ยนแปลงของความหนาแน่น และการอนุรักษ์มวล

Objective function ประกอบไปด้วย 2 ส่วน ได้แก่ ส่วนที่ใช้วัดว่าสถานะของควันตอนนี้ใกล้กับ Keyframe มากแค่ไหน (แบ่งได้อีก 2 ส่วน คือ ตารางความเร็ว และตารางความหนาแน่น) และ ส่วนที่วัดว่าใช้แรงมากเท่าไรจึงไปยังเป้าหมายที่ต้องการได้ (ยิ่งใช้แรงน้อยเท่าไรก็ยิ่งดี เพราะจะยิ่งดูเป็นธรรมชาติ) การหาค่าน้อยที่สุดของ Objective function นี้ทำได้ด้วยวิธี quasi-Newton optimization technique โดยต้องหา derivative ของ function นี้ ซึ่งต้องอาศัยการหา derivative ของปัจจัยต่าง ๆ ที่ทำให้ควันเปลี่ยนแปลงไป ที่กล่าวไปข้างต้น ซึ่งก็จะมีรายละเอียดอยู่ใน paper ไม่ขออธิบาย ณ ที่นี้

กรณีที่มีหลาย ๆ Keyframe ผู้วิจัยเสนอว่าให้ใช้วิธี Multiple shooting โดยแบ่งปัญหาให้เป็นปัญหาย่อย ๆ แล้วแยกกันคำนวณ ซึ่งถ้าเป็นวิธี Multiple shooting ทั่ว ๆ ไปแล้ว จะ interpolate ผลลัพธ์ย่อย ๆ ดังกล่าว ขณะที่ผู้วิจัยเสนอวิธี Layered multiple shooting ที่ไม่ต้องทำ interpolation


การทำ Layered multiple shooting

Layered multiple shooting จะแบ่งปัญหาออกเป็นส่วน ๆ ตาม Keyframe แล้วแยกกันคำนวณ ต่อมาจะกำหนดให้จุดกึ่งกลางของแต่ละส่วนเป็น Pseudokeyframe แล้วก็คำนวณอีกรอบโดยแบ่งส่วนตาม Pseudokeyframe โดยพยายามให้ match ทั้ง Keyframe และ Pseudokeyframe แล้วคำนวณสลับกันระหว่างส่วนที่แบ่งโดยใช้ Keyframe และส่วนที่แบ่งโดยใช้ Pseudokeyframe จนได้ผลละเอียดเท่าที่ต้องการ

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

ผลลัพธ์ที่ได้จากงานวิจัยนี้เป็นไปตามที่ต้องการ แต่ในบางกรณีวิิธี quasi-Newton optimization ยังไม่สามารถหลุดจาก local minima ได้


ผลลัพธ์ที่ได้จากการจำลองควันเป็นตัวอักษร SMOKE
โดยจำลองแยกทีละตัวทั้งหมด 5 ครั้ง


ความคิดเห็น

งานวิจัยนี้ได้เสนอแนวคิดใหม่ ๆ ที่น่าสนใจมากในการออกแบบระบบที่ซับซ้อนอย่างของไหล แต่มีการนำเสนอที่เป็น technical มากเกินไปในบางช่วง เช่น การยก Differential equation ขึ้นมาตลอดทุก ๆ หน้า โดยไม่อธิบายให้ละเอียดและชัดเจนพอ (การหาข้อมูลเพิ่มตามจากแหล่งอื่น ๆ จะช่วยได้มาก เช่น บทความเรื่อง Interacting with Smoke and Fire in Real Time ของ Joe Stam ที่มีการยกตัวอย่างและอธิบายให้เข้าใจได้ง่าย แม้แต่งานวิจัยที่ออกมาก่อนหน้าอย่าง Visual Simulation of Smoke ของ Fedkiw R. ก็อ่านเข้าใจง่ายกว่ามาก ๆ) คาดว่าผู้วิจัยคาดหวังว่าผู้อ่านงานนี้จะต้องมีความรู้เกี่ยวกับการจำลองของไหลเป็นอย่างดีแล้ว

อีกส่วนหนึ่งที่เป็นข้อด้อยของงานวิจัยนี้คือ Website ของงานวิจัยนี้ ที่ไม่มีอะไรเลย นอกจากบทคัดย่อ และ link ไปยังงานวิจัย และผู้วิจัย อย่างน้อยก็น่าจะมีรูปหรือ video ตัวอย่างผลลัพธ์จากการวิจัย (ซึ่งก็น่าเห็นใจเล็กน้อย เพราะอาจเป็นงานทางการค้าของ Alias|WaveFront)

Application จากงานวิจัยนี้เป็นประโยชน์อย่างมากต่อนักออกแบบต่าง ๆ ที่จะสามารถควบคุมควันได้อย่างอิสระ ไปใช้ได้ทั้งในงานทางภาพยนตร์ หรือโฆษณา (อย่างน้อยก็ดูตื่นตา่ตื่นใจดี) นอกจากนั้นวิธีนี้ยังสามารถนำไปประยุกต์ใช้กับของไหลอื่น ๆ หรือการควบคุมระบบอื่น ๆ ที่มีความซับซ้อนได้เป็นอย่างดี เช่น เกมหรืองานด้าน Flight simulation เป็นต้น


ผลลัพธ์เมื่อสั่งให้กลุ่มควันแตกออกไปในสามทิศทาง
(ใช้เวลา 2 ชั่วโมง บนเครื่อง Pentium 4, 2Ghz)

อย่างไรก็ตาม งานนี้ยังต้องการการพัฒนาอีกมาก สังเกตได้จากเวลา และทรัพยากรที่ใช้มากเกินไป (แค่ภาพไม่กี่วินาทีแต่ใช้เวลาเป็นวัน!) อาจปรับปรุงในส่วนการทำ optimization และการหา derivative ต่าง ๆ ให้เร็วขึ้น หรือเปลี่ยนไปใช้แบบจำลองของไหลจาก Navier-Stokes equations ไปเป็น inviscid incompressible Euler equations แทน ตามที่ Visual Simulation of Smoke แนะนำไว้

Reference :

  • Treuille A., McNamara A., Popovic Z., and Stam J. Keyframe Control of Smoke Simulations. SIGGRAPH 2003. download pdf here.
  • Fedkiw R., Stam J., and Jensen H. Visual Simulation of Smoke. SIGGRAPH 2001. download pdf here.
  • Joe Stam. Interacting with Smoke and Fire in Real Time. Communications of ACM, July 2000, Vol 43 No 7. download pdf here.