คอมพิวเตอร์กราฟิกส์ใช้ OpenGL

Download Report

Transcript คอมพิวเตอร์กราฟิกส์ใช้ OpenGL

คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL
(Computer Graphics using OpenGL)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
1
บทที่ 12
ภาพเคลื่อนไหว
(Animation)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
2
ภาพเคลื่อนไหว (Animation)
ปั จจุบนั นี ้วิธีการทางคอมพิวเตอร์ กราฟิ กถูกนามาใช้ ในการสร้ าง
ภาพเคลื่อนไหวในรูปแบบที่หลากหลายกันไป ไม่วา่ จะเป็ นเพื่อความ
บันเทิง (ภาพยนตร์ และการ์ ตนู ), โฆษณา, การศึกษาทางวิทยาศาสตร์
และวิศวกรรมศาสตร์ ตลอดจนการศึกษาและการฝึ กอบรม
ถึงแม้ เราจะคิดว่าภาพเคลื่อนไหวเป็ นเพียงการเคลื่อนไหวของออป
เจ็กต์ก็ตาม แต่ภาพเคลื่อนไหวเหล่านันก่
้ อให้ เกิดจินตนาการในการสื่อ
ความหมายได้ อย่างมีประสิทธิภาพ ทาให้ เกิดความเข้ าใจในเนื ้อหาได้
ชัดเจนขึ ้น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
3
พืน้ ฐานภาพเคลื่อนไหว
ภาพเคลื่อนไหว (Animation) หมายถึง การเคลื่อนไหวของ
ภาพกราฟิ ก อาทิการเคลื่อนไหวของลูกสูบและวาล์วในระบบการ
ทางานของเครื่ องยนต์ 4 จังหวะ เป็ นต้ น ซึง่ จะทาให้ สามารถเข้ าใจ
ระบบการทางานของเครื่ องยนต์ได้ เป็ นอย่างดี
ภาพเคลื่อนไหวมีขอบข่ายตังแต่
้ การสร้ างภาพด้ วยกราฟิ กอย่างง่าย
พร้ อมทังการเคลื
้
่อนไหวกราฟิ กนัน้ จนถึงกราฟิ กที่มีรายละเอียดแสดง
การเคลื่อนไหว
โปรแกรมที่ใช้ ในการสร้ างภาพเคลื่อนไหวในวงการธุรกิจ ก็มี
Autodesk Animator ซึง่ มีคณ
ุ สมบัติดีทงในด้
ั ้ านของการออกแบบ
กราฟิ กละเอียดสาหรับใช้ ในมัลติมีเดียตามต้ องการ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
4
พืน้ ฐานภาพเคลื่อนไหว
ภาพเคลื่อนไหว (Animation) หมายถึง การเคลื่อนไหวของภาพกราฟิ ก
อาทิการเคลื่อนไหวของลูกสูบและวาล์วในระบบการทางานของเครื่ องยนต์
4 จังหวะ ทาให้ เข้ าใจระบบการทางานของเครื่ องยนต์ได้ เป็ นอย่างดี
ภาพเคลื่อนไหวมีขอบข่ายตังแต่
้ การสร้ างภาพด้ วยกราฟิ กอย่างง่าย พร้ อม
ทังการเคลื
้
่อนไหวกราฟิ กนัน้ จนถึงกราฟิ กที่มีรายละเอียดแสดงการ
เคลื่อนไหว
โปรแกรมที่ใช้ ในการสร้ างภาพเคลื่อนไหวในวงการธุรกิจ ก็มี Autodesk
Animator ซึง่ มีคณ
ุ สมบัติดีทงในด้
ั ้ านของการออกแบบกราฟิ กละเอียด
สาหรับใช้ ในมัลติมีเดียตามต้ องการ รวมทัง้ 3D MAX หรื อโปรแกรมอื่น ๆ
อีกมากมาย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
5
พืน้ ฐานภาพเคลื่อนไหว
ภาพเคลื่อนไหว (Motion Picture) หรื อบางครัง้ อ้ างถึงภาพยนตร์ นนั ้
โดยทัว่ ไปมีอยู่ 2 แบบคือ แบบการเคลื่อนไหวจาลองหรื ออะนิเมชัน่
และแบบการเคลื่อนไหวเหมือนจริงหรื อวีดีโอ
อะนิเมชัน (Animation) เป็ นการสร้ างให้ ภาพเกิดการ
เคลื่อนไหวเพื่อดึงดูดความสนใจและช่วยให้ การสื่อความหมาย
ถูกต้ อง
วีดโี อ (Video) เป็ นการเคลื่อนไหวจริงที่ได้ จาการถ่ายทาด้ วย
กล้ องวีดีโอ การนาภาพเคลื่อนไหวประเภทนี ้เข้ ามาใช้ ใน
คอมพิวเตอร์ อาจทาได้ 3 วิธี คือ การใช้ ภาพจากวีดีโอเทปที่
ถ่ายทา, การใช้ กล้ องวีดีโอ และใช้ แฟ้มข้ อมูลวีดีโอต่าง ๆ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
6
พืน้ ฐานภาพเคลื่อนไหว
ภาพกราฟิ กเคลื่อนไหว (Animation Graphic) เกิดจากการนาชุด
ภาพนิ่งที่สร้ างไว้ มาลาดับกันอย่างต่อเนื่อง ทาให้ ปรากฏเป็ น
ภาพเคลื่อนไหวบนแผ่นระนาบ ได้ แก่ จอภาพ และแผ่นกระดาษ
ภาพเคลื่อนที่ร้ ูจกั กันดีคือภาพยนต์ซงึ่ เป็ นการนาภาพที่ไม่น้อยกว่า 24
ภาพหรื อเฟรม มาลาดับในเวลา 1 วินาที จึงทาให้ ผ้ ชู มมองเห็นภาพ
อย่างเป็ นธรรมชาติ ทังนี
้ ้เป็ นเพราะปรากฏการณ์ที่เรี ยกว่า“ภาพติดตา“
เนื่องจากกระบวนการรับรู้ภาพของคนเราจะใช้ เวลาในการมองเห็น
ออปเจ็กต์ที่ปรากฏตรงหน้ าประมาณ 1 ใน 24 วินาที ซึง่ หากมีภาพนิ่ง
ที่สบั เปลี่ยนกันภายในช่วงเวลาดังกล่าว ก็จะทาให้ เรามองเห็นภาพ
ออปเจ็กต์บนแผ่นระนาบเคลื่อนไหวได้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
7
พืน้ ฐานภาพเคลื่อนไหว
คอมพิวเตอร์ กราฟิ กถูกนามาใช้ เป็ นเครื่ องมือลาดับภาพเคลื่อนไหว
โดยอาศัยซอฟต์แวร์ เป็ นตัวสร้ างภาพกราฟิ กขึ ้นมาทีละเฟรม
แล้ วทาให้ แต่ละเฟรมมีการเปลี่ยนแปลงของตัวแปรไปทีละน้ อยโดย
อาศัยหลักการในการประมาณค่าในช่วงระหว่างภาพแรกกับภาพ
สุดท้ าย
ตัวแปรเหล่านี ้ ได้ แก่ ตาแหน่งออปเจ็กต์ สี ขนาด การหมุน และการ
แปลงรูปร่างของออปเจ็กต์ เป็ นต้ น
ผลของการเปลี่ยนแปลงตัวแปรเหล่านี ้ทาให้ ปรากฏเป็ น
ภาพเคลื่อนไหวจากภาพแรกจนถึงภาพสุดท้ าย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
8
พืน้ ฐานภาพเคลื่อนไหว
คอมพิวเตอร์ อะนิเมชัน (computer animation) โดยปกจะใช้ ลาดับของ
เวลาในการเปลี่ยนแปลงที่เห็นได้ ในภาพ รวมถึงการเปลี่ยนตาแหน่งออปเจ็กต์
โดยการย้ าย หรื อหมุนออปเจ็กต์
คอมพิวเตอร์ ที่สร้ างภาพเคลื่อนไหวต้ องสามารถแสดงตัวแปรของเวลาใน
ขนาด, สี, ความโปร่งใส หรื อลายผิวของออปเจ็กต์
ภาพเคลื่อนไหวในโฆษณามักจะเปลี่ยนรูปทรงไปเป็ นรูปทรงอื่น เช่น การ
แปลงจากกระป๋ องน ้ามันเครื่ องไปเป็ นเครื่ องยนต์
เราสามารถสร้ างภาพคอมพิวเตอร์ อะนิเมชันโดยการเปลี่ยนพารามิเตอร์ ของ
กล้ อง เช่น ตาแหน่ง, การวางแนว หรื อความยาวโฟกัส ตลอดจนการเปลี่ยน
เอฟเฟ็ กต์การจัดแสง หรื อพารามิเตอร์ อื่นและขันตอนให้
้
สมั พันธ์ กบั การให้
ความสว่างและการเรนเดอร์ ก็สามารถทาได้ ด้วยคอมพิวเตอร์ อะนิเมชัน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
9
พืน้ ฐานภาพเคลื่อนไหว
ข้ อพิจารณาอื่นในการสร้ างคอมพิวเตอร์ อะนิเมชันก็คือ ความสมจริง
(realism)
มีแอปพลิเคชันหลายแอปพลิเคชันที่ต้องการความสมจริงในการ
แสดงผล ความแม่นยาในการแสดงรูปทรงของฝนฟ้าคะนอง หรื อ
ปรากฏการณ์ทางธรรมชาติที่อธิบายได้ ด้วยโมเดลทางคณิตศาสตร์ นนั ้
มีความสาคัญในการประเมินความเชื่อถือได้ ของโมเดล
เช่นเดียวกับเครื่ องจาลอง (simulator) ในการฝึ กบินของนักบิน และ
การควบคุมเครื่ องจักรขนาดใหญ่ต้องแสดงสภาพแวดล้ อมอย่าง
เที่ยงตรง
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
10
พืน้ ฐานภาพเคลื่อนไหว
ในทางตรงข้ าม ความบันเทิงและการโฆษณาในบางครัง้ ให้ ความสนใจ
ในเรื่ องของเอฟเฟ็ กต์ของการมองเห็น ดังนันจอภาพอาจจะต้
้
องแสดง
ด้ วยรูปทรงที่เกินจริงและการแปลงและการเคลื่อนที่ที่ไม่สมจริง
อย่างไรก็ตามมีแอปพลิเคชันสาหรับความบันเทิงและการโฆษณาอีก
มากที่ต้องการการแสดงอย่างเที่ยงตรงในการสร้ างจอภาพของ
คอมพิวเตอร์
ในบางการศีกษาทางวิทยาศาสตร์ และวิศวกรรมศาสตร์ ความสมจริง
อาจจะไม่ใช่เป้าหมาย เช่น ปริมาณทางฟิ สิกส์บอ่ ยครัง้ ที่แสดงด้ วยสี
เทียม หรื อรูปทรงที่เป็ นนามธรรมเพื่อช่วยให้ นกั วิจยั เข้ าใจธรรมชาติ
ของกระบวนการทางฟิ สิกส์ได้ มากขึ ้น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
11
พืน้ ฐานภาพเคลื่อนไหว
วิธีพื ้นฐาน 2 วิธีในการสร้ างลาดับการเคลื่อนไหวคือ การเคลื่อนไหว
แบบเรี ยลไทม์ (real-time animation) และการเคลื่อนไหวแบบเฟรม
ต่อเฟรม (frame-by-frame animation)
การเคลื่อนไหวแบบเรี ยลไทม์ จะมองแต่ละขันของล
้
าดับที่สร้ างขึ ้น
ดังนันภาพเคลื
้
่อนไหวต้ องสร้ างในอัตราที่เข้ ากันได้ กบั เงื่อนไขของอัตรา
การรี เฟรช
การเคลื่อนไหวแบบเฟรมต่อเฟรมนัน้ แต่ละเฟรมของภาพถูกสร้ างและ
เก็บแยกจากกัน หลังจากนันเฟรมสามารถบั
้
นทึกลงบนฟิ ล์ม หรื อแสดง
อย่างต่อเนื่องบนจอภาพในลักษณะเรี ยลไทม์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
12
พืน้ ฐานภาพเคลื่อนไหว
การแสดงภาพเคลื่อนไหวแบบพื ้น ๆ จะสร้ างในลักษณะเรี ยลไทม์ แต่
สาหรับภาพเคลื่อนไหวที่มีความซับซ้ อนมาก ๆ จะสร้ างอย่างช้ า ๆ
เฟรมต่อเฟรม
ในบางแอปพลิเคชันต้ องการเคลื่อนไหวแบบเรี ยลไทม์โดยไม่สนใจ
ภาพเคลื่อนไหวที่ซบั ซ้ อน ยกตัวอย่างภาพเคลื่อนไหวบนเครื่ องจาลอง
การบินสร้ างในลักษณะเรี ยลไทม์ เนื่องจากจอภาพต้ องสร้ างภาพเพื่อ
ตอบสนองอย่างทันทีทนั ใดต่อการเปลี่ยนการควบคุม
ในบางกรณีอาจจะต้ องมีการพัฒนาฮาร์ ดแวร์ และซอฟต์แวร์ พิเศษเพื่อ
การแสดงลาดับที่ซบั ซ้ อนได้ อย่างรวดเร็ว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
13
องค์ ประกอบภาพเคลื่อนไหว
องค์ประกอบพื ้นฐานของภาพนิ่งที่สาคัญมี 2 ส่วน คือ ตัวภาพ
(Figure) และพื ้นภาพ (Ground)
องค์ประกอบทังสองตั
้
วนี ้มีในภาพเคลื่อนไหวเช่นกัน แต่ใน
ภาพเคลื่อนไหวมีองค์ประกอบของเวลาเข้ ามาเกี่ยวข้ อง
ดังน้ นจึงต้ องมีตวั กลางที่เชื่อมโยงเนื ้อหาในภาพที่ปรากฏต่างเวลากัน
ให้ เกิดเป็ นเรื่ องราวที่มีความต่อเนื่องกันได้ อย่างเหมาะสม
องค์ประกอบสาคัญของภาพเคลื่อนไหว จึงประกอบด้ วย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
14
องค์ ประกอบภาพเคลื่อนไหว
ออปเจ็กต์ (Object) ซึง่ เป็ นเป้าหมายในการบันทึกภาพ บางครัง้
เรี ยกว่าตัวแสดงที่ปรากฏในแต่ละรูป
ออปเจ็กต์เหล่านี ้ควรวางอยูใ่ นตาแหน่งที่เด่นชัด โดยมีพื ้นภาพเป็ น
แบ็คกราวนด์
ออปเจ็กต์แต่ละชิ ้นอาจเป็ นออปเจ็กต์ธรรมดาที่เรี ยบง่าย หรื ออาจเป็ น
ออปเจ็กต์ที่มีความซับซ้ อนแตกต่างกันไป
สาหรับออปเจ็กต์ที่มีความซับซ้ อนจะประกอบด้ วยส่วนย่อย (Element)
ซึง่ เป็ นออปเจ็กต์หน่วยเล็กหลาย ๆ หน่วยประกอบกันเป็ นออปเจ็กต์
ใหญ่ เช่น ศีรษะ แขน ขา มือ เท้ า เป็ นส่วนประกอบของร่างกาย
เป็ นต้ น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
15
องค์ ประกอบภาพเคลื่อนไหว
ออปเจ็กต์ที่มีความซับซ้ อนมาก ๆ จะต้ องมีการลาดับชัน้ (Hierarchy)
ส่วนย่อย ๆ เหล่านัน้
ส่วนย่อยนี ้จะแสดงความเกี่ยวข้ องด้ วยการลิงค์ (Link) หรื อเชื่อมต่อ
ระหว่างออปเจ็กต์ซงึ่ บางครัง้ อาจมองเห็นการเชื่อมต่อ หรื ออาจมองไม่
เห็นการเชื่อมต่อก็ได้
แต่เวลาเคลื่อนไหวจะพาส่วนที่เชื่อมต่อนี ้ติดไปด้ วย เช่น แขนเชื่อมต่อ
กับมือ มือเชื่อมต่อกับนิ ้ว ดังนันเมื
้ ่อแขนเคลื่อนไหวไปจะทาให้ มือและ
นิ ้วเคลื่อนไหวไปด้ วย
ส่วนการออปเจ็กต์ที่ไม่เห็นการเชื่อมต่อก็เช่น ดวงจันทร์ ที่โคจรรอบโลก
โดยอาศัยแรงดึงดูดซึง่ กันและกันเชื่อมต่อกัน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
16
องค์ ประกอบภาพเคลื่อนไหว
กล้ อง เป็ นอุปกรณ์สาหรับบันทึกการเคลื่อนไหวของออปเจ็กต์ให้ ปรากฏ
ภายในเฟรมที่กาหนด
การเคลื่อนที่ของกล้ องในทิศทางต่าง ๆ ไม่วา่ จะเป็ นการกวาดกล้ อง การหมุน
หรื อเอียงกล้ องในมุมต่าง ๆ และการซูมภาพ ทาให้ เกิดภาพเคลื่อนไหวของ
ออปเจ็กต์ที่แสดงออกทางจอภาพมีความหลากหลาย
การบันทึกภาพเคลื่อนไหวโดยทัว่ ไปจะใช้ กล้ องถ่ายภาพยนตร์ หรื อกล้ อง
วิดีทศั น์ แต่ในปั จจุบนั กล้ องดิจิตอลและมือถือสามารถบันทึกภาพเคลื่อนไหว
ได้ อย่างสะดวก ทาให้ เกิดเป็ นคลิปขนาดเล็กที่สามารถเคลือ่ นย้ ายไปแสดงผล
ได้ สะดวกยิ่งขึ ้น
นอกจากนี ้ในกระบวนการทางดิจิตอลที่บนั ทึกภาพบิตแมปในความจาเฟรม
บัพเฟอร์ ก่อนการแสดงผลบนจอภาพต่อไป
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
17
องค์ ประกอบภาพเคลื่อนไหว
การคีย์ (Key) เป็ นการกาหนดขันการเคลื
้
่อนไหวของออปเจ็กต์ในแต่
ละเฟรม
ลองพิจารณาภาพยนตร์ การ์ ตนู ที่มีการเคลื่อนไหวเป็ นธรรมชาติ มี
ความสมจริง และให้ อารมณ์ความรู้สกึ แก่ผ้ ชู มได้ นนั ้ เกิดจาก
ผู้ออกแบบคีย์การเคลื่อนไหวของตัวแสดงอย่างละเอียด
ในขณะที่การเคลื่อนไหวของออปเจ็กต์บางชนิด เช่น ลูกบอลกระดอน
พื ้นก็ไม่จาเป็ นต้ องอาศัยการคีย์เท่าไรนัก
การคีย์นี ้เหมาะกับการสร้ างภาพเคลื่อนไหวด้ วยคอมพิวเตอร์ กราฟิ ก
การคีย์มี 2 ระดับ คือการคีย์ระดับต่า และการคีย์ระดับสูง
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
18
องค์ ประกอบภาพเคลื่อนไหว
การคีย์ระดับต่าเป็ นการคีย์ที่ผ้ อู อกแบบเข้ าไปกาหนดการเคลื่อนไหว
น้ อยที่สดุ โดยกาหนดตัวแปรในออปเจ็กต์ในภาพเฟรมแรกและเฟรม
สุดท้ ายเท่านัน้
ลาดับการเปลี่ยนแปลงที่เกิดขึ ้นกับเฟรมระหว่างนันเป็
้ นหน้ าที่ของ
ซอฟต์แวร์
การคีย์ระดับสูง เป็ นการคีย์ที่ผ้ อู อกแบบกาหนดการเคลื่อนไหวมากที่สดุ
เพื่อให้ เกิดความสมจริง เป็ นธรรมชาติของออปเจ็กต์ในเฟรมต่าง ๆ
การคีย์ประเภทนี ้จัดเป็ นศิลปะของการสร้ างภาพเคลื่อนไหวซึง่
ผู้ออกแบบจะสอดแทรกอารมณ์ และสื่อไปถึงผู้ชมผ่านทางจอภาพ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
19
องค์ ประกอบภาพเคลื่อนไหว
เฟรมและตัวยืนเฟรม (Frame & Frame of reference) โดยที่เฟรม
เป็ นช่องบรรจุภาพภายในม้ วนของฟิ ล์มภาพยนตร์ ซงึ่ เป็ นช่องสี่เหลี่ยม
เรี ยงกันเป็ นแถบยาว ภายในช่องเหล่านี ้ปรากฏภาพถ่ายขนาดเล็ก ๆ
เรี ยงติดกัน ดูเหมือนเป็ นภาพซ ้า ๆ แต่ถ้าสังเกตดี ๆ จะพบว่ามีการ
เปลี่ยนแปลงตาแหน่งไปทีละเล็กทีละน้ อย
ในโปรแกรมคอมพิวเตอร์ กราฟิ กไม่มีการใช้ ฟิล์มภาพยนตร์ แต่ยงั คงใช้
คาว่า เฟรม เพื่อสมมุติเป็ นภาพที่นามาใช้ ลาดับให้ เกิดการเคลื่อนไหว
บนจอภาพ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
20
องค์ ประกอบภาพเคลื่อนไหว
อัตราการแสดงภาพเคลื่อนไหวจะวัดเป็ นจานวนเฟรมต่อวินาที นัน่ คือ
จานวนภาพนิ่งที่แสดงบนจอภาพในแต่ละวินาที เช่น 24 เฟรมต่อวินที
แสดงว่ามีการแสดงถาพนิ่ง 24 ภาพใน 1 วินาที
จานวนเฟรมต่อวินาทียิ่งมากจะยิง่ ทาให้ ภาพมีความนุม่ นวลมากยิ่งขึ ้น
เนื่องจากในแต่ละภาพเคลื่อนไหวที่มีการลาดับของเฟรมอย่าง
สม่าเสมอ
ออปเจ็กต์อาจเปลี่ยนแปลงตาแหน่งไป รวมทังต
้ าแหน่งของกล้ องที่
เลื่อนไป ทาให้ ผ้ ชู มขาดความต่อเนื่องได้ จึงควรใข้ พื ้นภาพที่มีตวั ยืน
เฟรม (Frame of reference) ซึง่ เป็ นตัวเชื่อมโยงความต่อเนื่องของ
เนื ้อหาแต่ละเฟรมเข้ าด้ วยกัน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
21
องค์ ประกอบภาพเคลื่อนไหว
ตัวยืนเฟรมควรหยุดนิ่งไม่เคลื่อนไหวหรื อมีสว่ นร่วมกับตัวแสดง ทังนี
้ ้
เพื่อให้ ผ้ ชู มยังคงติดอยูใ่ นเหตุการณ์เดิมที่ผ่านมา
ปกติตวั ยืนเฟรมแบ่งออกเป็ น 2 ประเภทคือ ตัวยืนเรขาคณิต
(Geometry) ซึง่ เป็ นตัวยืนขนาดใหญ่ปรากฏเป็ นพื ้นภาพ
หากเป็ นภาพภูมิประเทศควร ได้ แก่ ภูเขา ทิวไม้ แม่น ้า รวมทังก้
้ อนเมฆ
บนท้ องฟ้า
หากเป็ นฉากที่เกิดขึ ้นภายในได้ แก่ ผนังห้ อง หรื อแม้ แต่ฉากหลังสีดา อีก
ประเภทหนึง่ คือ ตัวยืนแสง (Lighting) ซึง่ เป็ นตัวยืนที่สร้ างความ
ต่อเนื่องของเวลาในแต่ละเฟรมได้ ดี
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
22
องค์ ประกอบภาพเคลื่อนไหว
ทังนี
้ ้เนื่องจากแหล่งกาเนิดแสงจัดเป็ นออปเจ็กต์หนึง่ เมื่อกาหนดให้ อยู่
ประจาที่จะมีหน้ าที่คล้ ายตัวยืนเรขาคณิต
ดวงอาทิตย์และดวงจันทร์ ซงึ่ เป็ นตัวยืนแสงที่มีอยูใ่ นธรรมชาติจะเปลี่ยน
ต่าแหน่งไปอย่างช้ าๆ ทาให้ การสร้ างภาพเคลื่อนไหวที่มีฉากเป็ นภูมิ
ประเทศ ใช้ ตวั ยืนแสงทังสองนี
้
้ได้ ดี
ทาให้ การลาดับภาพที่มีความต่อเนื่อง
ข้ อพิจารณาเกี่ยวกับตัวยืนแสง คือ ควรกาหนดให้ ทิศทางและตาแหน่ง
ของแสงคงที่ แต่สามารถเปลี่ยนแปลงสีสนั ของแสงได้ อย่างไม่มี
ข้ อจากัด
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
23
องค์ ประกอบภาพเคลื่อนไหว
การเปลี่ยนตาแหน่งของแสงจะส่งผลโดยรวมกับออปเจ็กต์ตา่ ง ๆ ใน
ภาพ
นัน่ คือทาให้ เงาของออปเจ็กต์ในภาพเปลี่ยนรูปร่าง ตาแหน่ง และ
ทิศทาง รวมทังความเข้
้
มของสีออปเจ็กต์ ตลอดจนความชัดเจนของ
ภาพทังหมด
้
อย่างไรก็ดีแสงบางประเภทไม่ถือเป็ นตัวยืนเฟรม ได้ แก่ แสงสปอตไลต์
เนื่องจากส่องเฉพาะออปเจ็กต์ในเฟรมเพื่อต้ องการเน้ นเท่านัน้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
24
องค์ ประกอบภาพเคลื่อนไหว
การลาดับภาพ เนื่องจากการที่เราจะมองเห็นภาพออปเจ็กต์
เคลื่อนไหวได้ นนั ้ จะต้ องมีความแตกต่างกันของตาแหน่งออปเจ็กต์ใน
แต่ละเฟรม
ถ้ าความแตกต่างในแต่ละเฟรมมีน้อยภาพเคลื่อนไหวที่ปรากฏออกมา
จะแลดูน่มุ นวล
ถ้ าตาแหน่งของออปเจ็กต์ตา่ งกันมาก ภาพเคลื่อนไหวที่ปรากฏออกมา
จะมีการลาดับอย่างรวดเร็วและอาจกระโดดข้ ามจนกลายเป็ น
ภาพกระพริบ (Flickering) ได้
นอกจากนี ้ความเร็วของการบันทึกจะต้ องเท่ากับความเร็วที่ฉายภาพ ทา
ให้ ภาพลวงตาที่ฉายออกมามีความเร็วเป็ นปกติ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
25
องค์ ประกอบภาพเคลื่อนไหว
หากความเร็วที่ใช้ บนั ทึกภาพช้ ากว่าความเร็วที่ฉายภาพก็จะทาให้ ภาพ
ที่ปรากฏออกมาเคลื่อนไหวรวดเร็วกว่าปกติ
การบันทึกภาพยนต์จะมีความเร็วอยูร่ ะหว่าง 24 ถึง 60 เฟรมต่อวินาที
ซึง่ ทาให้ ภาพเคลื่อนไหวออกมาอยูใ่ นเกณฑ์ที่ดี
หากความเร็วในการบันทึกต่ากว่า 24 เฟรมต่อวินาที ภาพการ
เคลื่อนไหวจะกระโดดข้ ามและมีการสูญข้ อมูลเชิงกาลเวลา
ในทางตรงข้ ามหากภาพที่มีความเร็วบันทึกเกิน 48 เฟรมต่อวินาทีทาให้
เก็บรายละเอียดของการเคลื่อนไหวได้ มากกว่าและให้ ภาพที่คมชัดสูง
กว่าด้ วย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
26
วิธีทางแรสเตอร์ สาหรับภาพเคลื่อนไหวบนคอมพิวเตอร์
เราสามารถสร้ างลาดับภาพเคลื่อนไหวในโปรแกรมด้ วยวิธีแบบ
เรี ยลไทม์
โดยปกติเราสามารถสร้ างลาดับภาพเคลื่อนไหวบนระบบแรสเตอร์
สแกน (raster-scan) 1 เฟรมใน 1 เวลา ดังนันแต่
้ ละเฟรมที่สร้ างเสร็ จ
แล้ วสามารถเก็บอยูใ่ นไฟล์เพื่อการชมได้ ในภายหลัง
หลังจากนันเราสามารถชมภาพเคลื
้
่อนไหววนรอบตามลาดับของเฟรมที่
กาหนดไว้ หรื อจะแปลงเฟรมลงบนฟิ ล์มก็ได้
ถ้ าเราต้ องการสร้ างภาพเคลื่อนไหวแบบเรี ยลไทม์ เราจาเป็ นต้ องสร้ าง
เฟรมที่เคลื่อนไหวในความเร็วที่เพียงพอเพื่อให้ ภาพเคลื่อนไหวแสดง
ภาพออกมาอย่างนุ่มนวล
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
27
วิธีทางแรสเตอร์ สาหรับภาพเคลื่อนไหวบนคอมพิวเตอร์
เนื่องจากภาพเคลื่อนไหวบนคอมพิวเตอร์ ใช้ จอภาพในการแสดงผล
ดังนันอั
้ ตราการรี เฟรชของจอภาพจะมีผลต่อการแสดงภาพด้ วย
เวลาของเฟรมในภาพเคลื่อนไหวที่สร้ างขึ ้นจะต้ องมากกว่าเวลาในการ
รี เฟรชของจอภาพมิฉะนันจะเกิ
้
ดข้ อผิดพลาด หรื อภาพไม่ตอ่ เนื่องขึ ้นได้
เนื่องจากจอภาพแสดงผลเกิดจากการปรับปรุงค่าพิเซลในรี เฟรช
บัพเฟอร์ ทาให้ เราสามารถใช้ ข้อได้ เปรี ยบของคุณสมบัติขนตอนการ
ั้
รี เฟรชจอภาพของจอแรสเตอร์ เพื่อสร้ างลาดับภาพเคลื่อนไหวให้ เร็ว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
28
วิธีทางแรสเตอร์ สาหรับภาพเคลื่อนไหวบนคอมพิวเตอร์
วิธีการหนึง่ ในการสร้ างภาพเคลือ่ นไหวแบบเรี ยลไทม์บนระบบแรสเตอร์ คือการ
ใช้ บพั เฟอร์ คู่ (Double Buffering) โดยทาการรี เฟรชบัพเฟอร์ 2 ครัง้
เริ่ มต้ นด้ วยการสร้ างเฟรมสาหรับภาพเคลื่อนไหวในบัพเฟอร์ ตวั หนึ่ง หลังจาก
นัน้ ในขณะที่กาลังรี เฟรชจอภาพจากบัพเฟอร์ นนั ้ เราสร้ างเฟรมต่อไปใน
บัพเฟอร์ อื่น
เมื่อเฟรมนันแสดงเรี
้
ยบร้ อยแล้ ว เราเปลี่ยนหน้ าที่ของบัพเฟอร์ 2 บัพเฟอร์ นนั ้
ดังนันรู
้ ทีนการรี เฟรชจะใช้ บพั เฟอร์ ตวั ที่สอง ในขณะที่กระบวนการสร้ างเฟรม
ต่อไปจะใช้ บพั เฟอร์ ตวั แรก
การเปลี่ยนบัพเฟอร์ นี ้เป็ นไปอย่างต่อเนื่องจนเป็ นภาพเคลื่อนไหว ไลบรารี ทาง
กราฟิ กที่ยอมให้ งานทัว่ ไปมีฟังก์ชนั เดียวในการกระตุ้นรูทีนของบัพเฟอร์ คู่ และ
ฟั งก์ชนั อื่นสาหรับเปลี่ยนหน้ าที่ของบัพเฟอร์ ทงสอง
ั้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
29
วิธีทางแรสเตอร์ สาหรับภาพเคลื่อนไหวบนคอมพิวเตอร์
เมื่อมีการเรี ยกรูทีนเพื่อเปลี่ยนบัพเฟอร์ ทงสอง
ั ้ การเปลี่ยนอาจเกิดขึ ้น
เวลาที่แตกต่างกันไป
ส่วนมากจะทาการเปลี่ยนบัพเฟอร์ ทงสองตอนท้
ั้
ายของวงรอบการรี เฟรช
ปั จจุบนั ในขณะเดินทางแนวตังของแสงอิ
้
เล็กตรอน
ถ้ าโปรแกรมสามารถสร้ างเฟรมได้ สาเร็จภายในเวลาของวงรอบการรี
เฟรช (1/60 ของวินาที) แต่ละลาดับภาพเคลื่อนไหวจะแสดงในจังหวะ
เดียวกับอัตราการรี เฟรชของจอภาพ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
30
วิธีทางแรสเตอร์ สาหรับภาพเคลื่อนไหวบนคอมพิวเตอร์
ถ้ าเวลาที่สร้ างเฟรมมากกว่าเวลาการรี เฟรช เฟรมปั จจุบนั จะแสดง 2
วงรอบรี เฟรชหรื อมากกว่าในขณะที่เฟรมภาพเคลื่อนไหวถัดไปกาลัง
สร้ างอยู่
เช่น ถ้ าอัตราการรี เฟรชจอภาพคือ 60 เฟรมต่อวินาที จะใช้ เวลา 1/60
ของวินาทีเพื่อสร้ างเฟรมภาพเคลื่อนไหว แต่ละเฟรมจะแสดงบนจอภาพ
2 ครัง้ และอัตราการเคลื่อนไหวคือ 30 เฟรมในแต่ละวินาที
ถ้ าเวลาที่ใช้ ในการสร้ างเฟรมคือ 1/25 ของวินาที อัตราเฟรม
ภาพเคลื่อนไหวจะลดลงมาที่ 20 เฟรมต่อวินาที เนื่องจากแต่ละเฟรม
แสดงถึง 3 ครัง้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
31
วิธีทางแรสเตอร์ สาหรับภาพเคลื่อนไหวบนคอมพิวเตอร์
อัตราภาพเคลื่อนไหวที่ไม่ปกติสามารถเกิดขึ ้นได้ กบั บัพเฟอร์ คู่ เมื่อเวลาในการ
สร้ างเฟรมใกล้ เคียงกับจานวนเท่าของเวลาการรี เฟรชจอภาพ
เช่น ถ้ าอัตราการรี เฟรชจอภาพคือ 60 เฟรมต่อวินาที หลังจากนันมี
้ ความเป็ นไป
ได้ ที่จะเกิดอัตราภาพเคลื่อนไหวที่ไม่แน่นอนเมื่อเวลาในการสร้ างเฟรม
ใกล้ เคียงกับ 1/62 ของวินาที หรื อ 2/60 ของวินาที หรื อ 3/60 ของวินาที เรื่ อยไป
เนื่องจากเวลาที่คาดเคลื่อนเล็กน้ อยในรูทีนที่สร้ างแอ็ตตริ บิวต์พื ้นฐาน ในบาง
เฟรมใช้ เวลามากขึ ้นเล็กน้ อยบางเฟรมก็ใช้ เวลาน้ อยลงเล็กน้ อย
ดังนันอั
้ ตราเฟรมภาพเคลื่อนไหวสามารถเปลี่ยนได้ ทนั ทีทนั ใดและไม่แน่นอน
หนทางเดียวที่ชดเชยเอฟเฟ็ กต์นี ้คือการเพิ่มเวลาดีเลย์เล็กน้ อยให้ กบั โปรแกรม
หนทางอื่นที่เป็ นไปได้ ก็คือเปลี่ยนการเคลื่อนที่หรื อข้ อมูลบนจอภาพเพื่อให้ เวลา
การสร้ างเฟรมสันลง
้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
32
การออกแบบลาดับของภาพเคลื่อนไหว
การสร้ างลาดับภาพเคลื่อนไหวอาจเป็ นงานที่ยงุ่ ยาก และเป็ นงาน
เฉพาะเมื่อรวมแนวเรื่ อง (Story line) และมีออปเจ็กต์หลายออปเจ็กต์
แต่ละออปเจ็กต์และแนวเรื่ องสามารถย้ ายในทิศทางที่แตกต่างกันไป
พื ้นฐานที่ใช้ ในการออกแบบลาดับภาพเคลื่อนไหวโดยการพัฒนา
ขันตอนดั
้
งนี ้
เลย์เอาต์ของบทภาพ (Story layout)
คาจากัดความออปเจ็กต์ (Object Definition)
การกาหนดคีย์เฟรม (Key-frame specifications)
การสร้ างเฟรม In-Between
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
33
การออกแบบลาดับของภาพเคลื่อนไหว
บทภาพ (Storyboard) เป็ นเอาต์ไลน์ของการแสดง
บทภาพจะกาหนดลาดับการเคลื่อนไหวเป็ นชุดของอีเวนต์พื ้นฐานที่
เกิดขึ ้น
บทภาพอาจประกอบด้ วยชุดของภาพร่างอย่างหยาบ ๆ, มีคาอธิบาย
อารมณ์อย่างสัน้ ๆ หรื ออาจเป็ นลิสต์ของแนวคิดพื ้นฐานสาหรับการ
แสดงซึง่ ขึ ้นอยูก่ บั ประเภทของภาพเคลื่อนไหว
แต่เดิมนัน้ ชุดของโครงร่างภาพเคลื่อนไหวติดอยูก่ บั บอร์ ดขนาดใหญ่ที่
ใช้ เพื่อแสดงมุมมองทังหมดของโครงงานภาพเคลื
้
่อนไหว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
34
การออกแบบลาดับของภาพเคลื่อนไหว
คาจากัดความออปเจ็กต์ (Object Definition) กาหนดขึ ้นสาหรับแต่
ละองค์ประกอบของการแสดง
ออปเจ็กต์ที่สามารถกาหนดในเทอมของรูปทรงพื ้นฐาน เช่น รูปหลาย
เหลี่ยม
นอกจากนี ้จะมีการใช้ คาอธิบายการเคลื่อนไหวที่กระทาต่อตัวละครหรื อ
ออปเจ็กต์ในเรื่ องราวนัน้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
35
การออกแบบลาดับของภาพเคลื่อนไหว
คีย์เฟรม (Key-frame) เป็ นกระบวนการวางตาแหน่งของออปเจ็กต์ที่
จุดเริ่มต้ นกับจุดปลายทางในตาแหน่งคนละเวลากัน
การดาเนินการคีย์เฟรมมีกระบวนการไม่น้อยกว่าสองขันตอน
้
คือ การ
กาหนดเงื่อนไขแรกและการกาหนดเงื่อนไขที่ตามมา จึงเป็ น
กระบวนการคูก่ นั
เช่น การคีย์เฟรมคูห่ นึง่ แสดงรูปของออปเจ็กต์ลกู บาศก์ในตาแหน่งเวลา
ที่ตา่ งกัน สิง่ ที่ปรากฏคือการเคลื่อนกวาดไปของลูกบาศก์ จากตาแหน่ง
เริ่มต้ นเรื่ อยไปจนถึงกระทัง่ ตาแหน่งสุดท้ าย ซึง่ เป็ นตาแหน่งสิ ้นสุดของ
เวลา
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
36
การออกแบบลาดับของภาพเคลื่อนไหว
เฟรม In-Between เป็ นเฟรมที่อยูร่ ะหว่างคีย์เฟรม
จานวนเฟรมทังหมด
้
และจานวนเฟรม in-between ทังหมดที
้
่จาเป็ นสาหรับ
ภาพเคลื่อนไหวจะถูกกาหนดโดยสื่อที่ใช้ แสดงผล
ฟิ ล์มภาพยนตร์ ต้องการ 24 เฟรมต่อวินาที ในขณะที่จอภาพกราฟิ กมีอตั ราการรี
เฟรชที่ 60 เฟรมต่อวินทีหรื อมากกว่า
โดยปกติจะมีการกาหนดช่วงเวลาในการเคลื่อนไหวไว้ แล้ ว ดังนันจะมี
้ เฟรม inbetween 3-5 เฟรมในแต่ละคูข่ องคีย์เฟรม
ในบางคีย์เฟรมอาจมีการทาเป็ นคูไ่ ว้ ขึ ้นอยูก่ บั ความเร็วที่กาหนดในภาพเคลื่อนไหว
เช่น ลาดับฟิ ล์มความยาว 1 นาทีที่ไม่มีคตู่ ้ องการเฟรมทังหมด
้
1,440 เฟรม ถ้ า
ต้ องการเฟรม in-between 5 เฟรมในแต่ละคูข่ องคีย์เฟรม หลังจากนันจะต้
้ อง
พัฒนาคีย์เฟรมขึ ้นมา 288 คีย์เฟรม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
37
การออกแบบลาดับของภาพเคลื่อนไหว
ยังมีงานอื่นอีกหลายงานที่ขึ ้นอยูก่ บั แอปพลิชนั งานที่เพิ่มเหล่านี ้รวมถึง
การพิสจู น์ภาพเคลื่อนไหว, การแก้ ไข และการสร้ างและการเข้ าจังหวะ
ซาวน์แทร็กค์
ปั จจุบนั คอมพิวเตอร์ สามารถสร้ างฟั งก์ชนั ที่จาเป็ นต้ องใช้ ในการผลิต
ภาพเคลื่อนไหวแบบธรรมดาได้ แล้ ว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
38
เทคนิดภาพเคลื่อนไหวดัง้ เดิม
ผู้สร้ างภาพยนตร์ ใช้ วิธีการที่หลากหลายในการพรรณนาและเน้ นลาดับ
ภาพเคลือ่ นไหว
วิธีการเหล่านี ้รวมทังการเปลี
้
่ยนรูปออปเจ็กต์, การเว้ นระยะระหว่างเฟรม
ภาพเคลื่อนไหว, การคาดการณ์ภาพเคลื่อนไหวและการโฟกัสท่าทาง
เทคนิคอย่างหนึง่ ที่สาคัญมากสาหรับเอฟเฟ็ กต์การจาลองภาพที่ไม่ใช่วตั ถุ
เกร็งคือ การยุบและยืด (squash and stretch)
รูปต่อไปเป็ นเทคนิคที่ใช้ ในการเน้ นการเร่งและหยุดของการเด้ งลูกบอล
เมื่อลูกบอลเร่งจะเริ่ มยืด จนเมื่อลูกบอลชนพื ้นและหยุด ครัง้ แรกลูกบอล
จะถูกอัด (ยุบ) หลังจากนันจะยื
้ อีกครัง้ เมื่อลูกบอลเร่งและกระเด้ งขึ ้นอีก
ครัง้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
39
เทคนิดภาพเคลื่อนไหวดัง้ เดิม
เทคนิคยุบและยืดของ
การเด้ งลูกบอลสาหรับ
การเร่งและการหยุด
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
40
เทคนิดภาพเคลื่อนไหวดัง้ เดิม
เทคนิคอื่นที่ผ้ สู ร้ างภาพยนตร์ เคลื่อนไหวนามาใช้ คือการกาหนดเวลา
(timing) ซึง่ ใช้ กบั ช่องว่างระหว่างเฟรมที่เคลื่อนไหว
ออปเจ็กต์ที่เคลื่อนที่อย่างช้ า ๆ จะใช้ ช่องว่างของเฟรมที่ใกล้ กนั มาก
เมื่อออปเจ็กต์เคลื่อนที่เร็วขึ ้นจะแสงโดยใช้ จานวนเฟรมที่น้อยลงเมื่อ
เคลื่อนไหว
เอฟเฟ็ กต์นี ้แสดงดังรูปต่อไป เมื่อตาแหน่งที่เปลี่ยนระหว่างเฟรมเพิ่มขึ ้น
ตามการเด้ งของลูกบอลที่เร็วขึ ้น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
41
เทคนิดภาพเคลื่อนไหวดัง้ เดิม
ตาแหน่งที่เปลี่ยนไประหว่างการ
เคลื่อนไหวของเฟรมสาหรับการ
เด้ งของลูกบอลที่มากขึ ้นตาม
ความเร็วของลูกบอลที่เพิ่มขึ ้น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
42
เทคนิดภาพเคลื่อนไหวดัง้ เดิม
เราสามารถเน้ นการเคลื่อนไหวของออปเจ็กต์โดยการสร้ างการแสดง
เบื ้องต้ นที่บง่ ชี ้ถึงการมีสว่ นร่วมของการเคลื่อนไหวที่กาลังจะเกิดขึ ้น
เช่น ตัวการ์ ตนู อาจจะเอนตัวไปข้ างหลังและหมุนร่างกายก่อนเริ่ มวิ่ง
หรื อตัวแสดงอาจจะเหวี่ยงแขนก่อนโยนลูกบอล
เช่นเดียวกับการแสดงในลักษณะ Follow-through อาจนามาใช้ เน้ นการ
เคลื่อนไหวที่ผา่ นมา เป็ นต้ น
นอกจากนี ้ตัวละครอาจจะใช้ เทคนิคการเน้ นด้ วย staging ที่ใช้ วิธีการ
โฟกัสส่วนที่สาคัญ เช่นโฟกัสสิ่งที่ตวั ละครต้ องการซ่อน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
43
ฟั งก์ ชันทั่วไปของภาพเคลื่อนไหวบนคอมพิวเตอร์
ซอฟต์แวร์ แพ็คเกจหลายตัวถูกพัฒนาขึ ้นมาเพื่อการออกแบบ
ภาพเคลื่อนไหวทัว่ ไป หรื อเพื่องานด้ านภาพเคลื่อนไหวแบบพิเศษ
เฉพาะ
ฟั งก์ชนั ทัว่ ไปของภาพเคลื่อนไหวรวมถึงการจัดการการเคลื่อนไหวของ
ออปเจ็กต์, การสร้ างมุมมองของออปเจ็กต์, การเคลื่อนที่ของกล้ อง และ
การสร้ างเฟรมแบบ in-between
ในบางแพ็คเกจ เช่น Wavefront ก็มีฟังก์ชนั พิเศษทังการออกแบบ
้
ภาพเคลื่อนไหวโดยรวม และกระบวนการของแต่ละออปเจ็กต์
แพ็คเกจอื่นที่มีจดุ ประสงค์พิเศษก็มีฟีเจอร์ เฉพาะของภาพเคลื่อนไหว
เช่น ระบบสาหรับการสร้ างเฟรมแบบ in-between เป็ นต้ น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
44
ฟั งก์ ชันทั่วไปของภาพเคลื่อนไหวบนคอมพิวเตอร์
ชุดของรูทีนส่วนมากจะมีแพ็คเกจภาพเคลื่อนไหวทัว่ ไปเพื่อเก็บและ
จัดการฐานข้ อมูลของออปเจ็กต์
รูปทรงของออปเจ็กต์และพารามิเตอร์ ที่เกี่ยวข้ องจะถูกเก็บและอัปเดท
ลงในฐานข้ อมูล
ฟั งก์ชนั อื่น ๆ ของออปเจ็กต์รวมทังฟั
้ งก์ชนั ที่สร้ างการเคลื่อนไหวของ
ออปเจ็กต์และฟั งก์ชนั สาหรับการเรนเดอร์ พื ้นผิวของออปเจ็กต์
ภาพเคลื่อนไหวสามารถสร้ างตามข้ อกาหนดที่ใช้ การแปลง 2 มิติ และ 3
มิติได้ หลังจากนันสามารถประยุ
้
กต์ใช้ ฟังก์ชนั มาตรฐานเพื่อกาหนด
พื ้นผิวที่มองเห็น และการประยุกต์ใช้ อลั กอริทมึ่ เพื่อการเรนเดอร์ อีกด้ วย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
45
ฟั งก์ ชันทั่วไปของภาพเคลื่อนไหวบนคอมพิวเตอร์
ฟั งก์ชนั ทัว่ ไปอื่น ๆ เป็ นกาหนดการจาลองการเคลื่อนที่ของกล้ อง ซึง่ การ
เคลื่อนที่มาตรฐานของกล้ องคือการซูม, การกวาด และการเอียงกล้ อง
รวมทังฟั
้ งก์ชนั ที่กาหนดคีย์เฟรม และการสร้ างเฟรมแบบ in-between
โดยอัตโนมัติ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
46
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
เราสามารถพัฒนารูทีนเพื่อออกแบบและควบคุมลาดับภาพเคลื่อนไหว
ด้ วยภาษาโปรแกรมทัว่ ไป เช่น C, C++, Lisp หรื อ Fortran
แต่ก็ได้ มีการพัฒนาภาษาสาหรับภาพเคลื่อนไหวขึ ้นมาบ้ าง ภาษา
เหล่านี ้ปกติจะรวมกราฟิ กเอดิเตอร์ , ตัวสร้ างคีย์เฟรม, ตัวสร้ างเฟรม
แบบ in-between และรูทีนกราฟิ กมาตรฐาน
ในตัวกราฟิ กเอดิเตอร์ ยอมให้ มีการออกแบบและปรับแต่งรูปทรงของ
ออปเจ็กต์, การใช้ แกนของรูปทรง, วิธีการสร้ างรูปทรงทางเรขาคณิต
และอื่น ๆ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
47
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
งานที่สาคัญในการกาหนดภาพเคลื่อนไหวคือคาอธิบายฉาก (scene
description)
ส่วนนี ้รวมถึงการกาหนดตาแหน่งของออปเจ็กต์และแหล่งกาเนิดแสง,
การกาหนดพารามิเตอร์ เกี่ยวกับแสง (ความเข้ มแหล่งกาเนิดแสงและ
คุณสมบัติการส่องสว่างของพื ้นผิว) และการกาหนดพารามิเตอร์ ของ
กล้ อง (ตาแหน่ง, การวางแนว และลักษณะเฉพาะของเสนส์)
สาหรับฟั งก์ชนั มาตรฐานฟั งก์ชนั อื่นนันคื
้ อ คุณลักษณะการแสดง
(action specification) ซึง่ รวมเลย์เอาต์ของเส้ นทางการเคลื่อนไหวของ
ออปเจ็กต์และกล้ อง
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
48
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
เราต้ องการรูทีนทางกราฟิ กเพื่อการมองเห็น เช่น การแปลงการมองและ
เพอร์ สเปกทีพ, การแปลงทางเรขาคณิตเพื่อสร้ างการเคลื่อนไหวของ
ออปเจ็กต์เป็ นฟั งก์ชนั ของความเร่ง หรื อคุณลักษณะเส้ นทางคิเนมาติก
(kinematics หรื อจลศาสตร์ ) การระบุพื ้นผิวการมองเห็น และการ
เรนเดอร์ พื ้นผิว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
49
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
ระบบคีย์เฟรม (Key-frame systems) เป็ นระบบแรกที่มีการออกแบบ
เป็ นชุดแยกของรูทีนการเคลื่อนไหวเพื่อสร้ างเฟรมแบบ in-between
จากคีย์เฟรมที่กาหนดโดยผู้ใช้
ในขณะนี ้รูทีนเหล่านี ้เป็ นองค์ประกอบที่พบบ่อยในแพ็คเกจ
ภาพเคลื่อนไหวโดยทัว่ ไป ในกรณีที่ง่ายที่สดุ นัน้ มีการกาหนดแต่
ละออปเจ็กต์ในฉากเป็ นชุดของการเชื่อมต่อวัตถุเกร็งเป็ นจุด และมี
ข้ อจากัดจานวนดีกรี ความเป็ นอิสระ (degree of freedom) ยกตัวอย่าง
เช่น แขนข้ างเดียวของหุ่นยนต์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
50
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
ในรูปต่อไปมีดีกรี ความเป็ นอิสระ 6 ดีกรี ที่ขึ ้นกับการกวาดแขน, การ
หมุนไหล่, ข้ อต่อข้ อศอก, ขึ ้น-ลง, ซ้ าย-ขวา และหมุน
เราสามารถขยายจานวนดีกรี ความเป็ นอิสระของแขนหุ่นยนต์ตวั นี ้เป็ น
9 ดีกรี ได้ โดยเพิ่มการย้ ายฐานได้ 3 มิติ ดังรูปถัดไป
ถ้ าเราสามารถเพิ่มการหมุนให้ ฐานได้ แล้ ว แขนหุ่นยนต์จะมีดีกรี ความ
เป็ นอิสระถึง 12 ดีกรี เมื่อเราเปรี ยบเทียบกับร่างกายมนุษย์แล้ ว จะมี
มากกว่า 200 ดีกรี ความเป็ นอิสระ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
51
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
ดีกรี ความเป็ นอิสระของแขนหุ่นยนต์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
52
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
ดีกรี ความเป็ นอิสระในการย้ าย
และหมุนของฐานแขนหุ่นยนต์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
53
ภาษาในการสร้ างภาพเคลื่อนไหวบนคอมพิวเตอร์
ระบบพารามิเตอร์ (Parameterized systems) ยอมให้ กาหนด
คุณลักษณะการเคลื่อนไหวของออปเจ็กต์เป็ นส่วนหนึง่ ของคาจากัด
ความออปเจ็กต์ ส่วนนี ้ยอมให้ มีการเปลี่ยนรูปทรงโดยมีการควบคุม
พารามิเตอร์ ที่ปรับค่าได้ เช่นคุณลักษณะของออปเจ็กต์เป็ นดีกรี ความ
เป็ นอิสระ และข้ อจากัดการเคลื่อนไหว
ระบบสคริปต์ (Scripting systems) ยอมให้ ผ้ ใู ช้ กาหนดคุณลักษณะ
ออปเจ็กต์และลาดับภาพเคลื่อนไหวผ่านทางสคริปต์ สคริปต์เหล่านี ้
สามารถสร้ างได้ จากไลบรารี ของออปเจ็กต์ภาพเคลื่อนไหวที่
หลากหลายให้ เลือกใช้ งาน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
54
ระบบคีย์เฟรม (Key-frame system)
ชุดของเฟรม in-between สามารถสร้ างได้ จากคุณสมบัติของคีย์เฟรม
2 คีย์ขึ ้นไปด้ วยระบบคีย์เฟรม
เส้ นทางการเคลื่อนไหวกาหนดได้ ด้วยคาอธิบายคิเนมาติก
(Kinematics description) เป็ นชุดของแกนเส้ นโค้ ง หรื อ
ภาพเคลื่อนไหวที่เป็ นฐานทางกายภาพโดยการกาหนดแรงที่กระทาต่อ
ออปเจ็กต์ที่เคลี่อนไหว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
55
ระบบคีย์เฟรม (Key-frame system)
สาหรับฉากที่มีความซับซ้ อนเราสามารถแยกเฟรมเป็ นองค์ประกอบหรือ
ออปเจ็กต์ยอ่ ย ๆ ที่เรี ยกว่า เซลส์ (cels) ที่เป็ นเซลลูลอยด์ใส
เซลส์นี ้ถูกพัฒนามาจากเทคนิคภาพเคลื่อนไหวของภาพการ์ ตนู ซึง่ แบ็ค
กราวนด์และแต่ละตัวละครบนฉากวางอยูบ่ นแผ่นใสที่แยกจากกัน
หลังจากนันวางแผ่
้
นใสซ้ อนเรี ยงกันจากแบ็คกราวนด์ถึงฟอร์ กราวนด์
แล้ วถ่ายภาพไว้ เป็ นเฟรมที่สมบูรณ์
หลังจากนันน
้ าการกาหนดเส้ นทางภาพเคลื่อนไหวมาใช้ เพื่อให้ ได้ เซล
ถัดไปของแต่ละตัวละครซึง่ เป็ นการประเมินค่าตาแหน่งจากเวลาของคีย์
เฟรม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
56
ระบบคีย์เฟรม (Key-frame system)
สาหรับการแปลงออปเจ็กต์แบบซับซ้ อน รูปทรงของออปเจ็กต์อาจจะ
เปลี่ยนไปตามเวลา เช่น เครื่ องแต่งกาย, ลักษณะหน้ า, การขยาย
รายละเอียด, การเปลี่ยนรูปทรง และการขยายหรื อการหดออปเจ็กต์
สาหรับพื ้นผิวที่เป็ นโครงร่างตาข่ายหลายเหลี่ยม (polygon mesh) ซึง่ การ
เปลี่ยนเหล่านี ้เป็ นการเปลี่ยนแปลงแบบมีนยั สาคัญในรูปทรงหลายเหลี่ยม
ดังนันจ
้ านวนขอบในรูปหลายเหลี่ยมทาให้ เกิดการเปลี่ยนแปลงจากเฟรม
หนึ่งไปอีกเฟรมหนึ่ง
การเปลี่ยนแปลงเหล่านี ้รวมอยูใ่ นการพัฒนาของเฟรมแบบ in-between
โดยการเพิ่มหรื อลดขอบของรูปหลายเหลี่ยมตามความต้ องการของการ
กาหนดคีย์เฟรม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
57
Morph
การมอร์ ฟ (Morphing) มาจากคาว่า Metamorphosis เป็ นวิธี
เปลี่ยนแปลงรูปร่างของออปเจ็กต์ที่มีโครงสร้ างเป็ นเวกเตอร์ โดยการ
ย้ ายตาแหน่งของจุดบนเส้ นเวกตอร์ แต่ละจุดให้ ไปอยู่ ณ ตาแหน่งใหม่
ตามกาหนด
เทคนิคมอร์ ฟเหมาะสาหรับการนามาใช้ การเปลี่ยนแปลงรูปร่างและ
รูปทรงของออปเจ็กต์ โดยอาศัยหลักการประมาณค่าในช่วงของ
ตาแหน่งพิกดั แต่ละจุดที่เปลี่ยนไปทีละเฟรม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
58
Morph
ในภาพ 2 มิติ การมอร์ ฟและการละลายภาพ (Dissolve) มีสว่ น
เหมือนกันตรงที่ทงสองวิ
ั้
ธีมีการนาภาพดิจิตอลทังสองภาพมาผสม
้
รวมกันเป็ นภาพเดียว
ความแตกต่างของทังสองวิ
้
ธีจะอยูท่ ี่กระบวนการแปลงรูปมีการ
เปลี่ยนแปลงรูปร่างของระนาบให้ บดิ เบี ้ยวไปตามรูปร่างที่สร้ างขึ ้นจาก
เส้ นเวกเตอร์ ที่ผ้ ใู ช้ กาหนด
ในขณะที่การละลายภาพเป็ นการแทนที่ภาพดิจิตอลหนึง่ ด้ วยอีกภาพ
หนึง่ หรื อผสมทังสองภาพเข้
้
าด้ วยกันเท่านัน้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
59
Morph
การมอร์ ฟภาพออปเจ็กต์จะเริ่มจากการวางเส้ นเวกเตอร์ ซงึ่
ประกอบด้ วยจุดยอดลงบนภาพทังสองที
้
่จะทาการแปลงรูปเข้ าด้ วยกัน
ภาพหนึง่ ถูกกาหนดให้ เป็ นภาพเฟรมแรกและอีกภาพหนึง่ ให้ เป็ นเฟรม
สุดท้ าย
จุดยอดที่กาหนดบนเส้ นเวกเตอร์ ของภาพทังสอง
้ จะต้ องมีจานวนจุด
เท่ากันและมีการเรี ยงลาดับจุดเช่นเดิม
โปรแกรมจะนาความแตกต่างของตาแหน่งแต่ละจุดมาเป็ นตัวแปรเพื่อ
ใช้ คานวณและสร้ างเป็ นภาพระหว่างเฟรมแรกและเฟรมสุดท้ ายขึ ้นมา
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
60
Morph
การนาเทคนิคคีย์เฟรมมาใช้ จงึ ทาให้ เกิดภาพเคลื่อนไหวที่ปรากฏการ
เปลี่ยนแปลงรูปร่างและรูปทรงได้
ความนุ่มนวลของภาพเคลื่อนไหวในการมอร์ ฟจะขึ ้นอยูท่ ี่จานวนเฟรม
ระหว่งภาพแรกและภาพสุดท้ าย
หากจานวนเฟรมยิ่งมากจะยิ่งแสดงการมอร์ ฟช้ าลงและมีความนุ่มนวล
มากขึ ้นตามลาดับ
การมอร์ ฟได้ กลายเป็ นเทคนิคพิเศษอันหนึง่ ของการสร้ างภาพยนตร์ ใน
ปั จจุบนั
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
61
Morph
การใช้ คีย์เฟรม 2 คีย์ที่แต่ละคีย์มีการกาหนดจานวนเส้ นตรงที่แปลงเป็ น
ออปเจ็กต์ที่ตา่ งกันนัน้
ในขันแรกเราสามารถปรั
้
บคุณลักษณะออปเจ็กต์ในเฟรมใดเฟรมหนึ่ง
ดังนันจ
้ านวนของเส้ นขอบ (หรื อจานวนเวอร์ เท็กซ์ของรูปหลายเหลี่ยม)
จะเหมือนกันใน 2 เฟรม ขันตอนในเบื
้
้องต้ นแสดงดังรูปต่อไป
เส้ นตรงในคีย์เฟรม k ถูกแปลงเป็ นเส้ นตรง 2 เส้ นในคีย์เฟรม k+1
เนื่องจากคีย์เฟรม k+1 มีเวอร์ เท็กซ์เพิ่มขึ ้น เราเพิ่มเวอร์ เท็กซ์ระหว่าง
เวอร์ เท็กซ์ที่ 1 และ 2 ในคีย์เฟรม k เพื่อปรับสมดุลย์จานวนเวอร์ เท็กซ์
(หรื อขอบ) ในคีย์เฟรมทังสอง
้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
62
Morph
ขอบที่เวอร์ เท็กซ์ 1 และ 2 ในคีย์เฟรม k ถูกแปลงเป็ น 2 ขอบที่เชื่อมต่อกันในคีย์ k+1
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
63
Morph
การใช้ การประมาณค่าเส้ นตรงเพื่อสร้ างเฟรม in-between ให้ เราเลื่อน
เวอร์ เท็กซ์ที่เพิ่มขึ ้นนันในคี
้ ย์เฟรม k ในเวอร์ เท็กซ์ 3’ ตามเส้ นตรงแสดง
ดังรูปต่อไป
สาหรับตัวอย่างของการแปลงรูปสามเหลี่ยมเป็ นรูปสี่เหลี่ยมเป็ นดังรูป
ถัดไป
รูปถัด ๆ ไปเป็ นตัวอย่าง morph ในโฆษณาบนโทรทัศน์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
64
Morph
การประมาณค่าเส้ นตรงเพื่อแปลงเส้ นตรงในคีย์เฟรม k ลงในเส้ นตรง
2 เส้ นที่เชื่อมต่อกันในคีย์เฟรม k+1
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
65
Morph
ตัวอย่างการแปลงรูปสามเหลี่ยมเป็ นรูปสี่เหลี่ยม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
66
ตัวอย่าง morph ในโฆษณาบนโทรทัศน์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
67
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
68
การจาลองความเร่ ง (Simulating Acceleration)
เทคนิค curve-fitting มักนามาใช้ บอ่ ยเพื่อกาหนดเส้ นทางการ
เคลื่อนไหวระหว่างคีย์เฟรม
การให้ ตาแหน่งเวอร์ เท็กซ์ที่คีย์เฟรมทาให้ เราสามารถจัดตาแหน่งให้
เหมาะสมกับเส้ นทางที่เป็ นเส้ นตรง และไม่เป็ นเส้ นตรง
รูปต่อไป แสดงการกาหนดตาแหน่งเส้ นทางที่ไม่ใช่เส้ นตรงในคีย์เฟรม
และเมื่อเราจาลองความเร่งเข้ าไป เราสามารถปรับระยะห่างของเวลา
ให้ ได้ เฟรม in-between ได้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
69
การจาลองความเร่ ง (Simulating Acceleration)
การกาหนดตาแหน่งเวอร์ เท็กซ์ที่เหมาะสมในคีย์เฟรมให้ กบั เส้ นแกนที่ไม่ใช่เส้ นตรง
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
70
การจาลองความเร่ ง (Simulating Acceleration)
เมื่อมีการเปลี่ยนความเร็ว (ความเร่งไม่เท่ากับศูนย์) เป็ นเรื่ องจาเป็ นใน
บางจุดของภาพยนตร์ เคลื่อนไหว หรื อการ์ ตนู โดยเฉพาะที่จดุ เริ่ มต้ น
และจุดปลายของลาดับภาพเคลื่อนไหว
ตาแหน่งเริ่มต้ นและลดความเร็วลงของเส้ นทางภาพเคลื่อนไหวมัก
จาลองด้ วยเส้ นแกนหรื อฟั งก์ชนั ทางตรี โกณมิติ แต่จะมีการประยุกต์ใช้
ฟั งก์ชนั เวลาที่เป็ นพาราโบลาและสี่เหลี่ยมจัตรุ ัสเพื่อจาลองความเร่ง
แพ็คเกจภาพเคลื่อนไหวโดยทัว่ ไปเป็ นฟั งก์ชนั ตรี โกณมิติเพื่อจาลอง
ความเร่งขึ ้นมา
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
71
การจาลองความเร่ ง (Simulating Acceleration)
กระบวนการในเฟรม in-between โดยพื ้นฐานจะกาหนดการจาลอง
ออปเจ็กต์แบบโครงกระดูก (หรื อเส้ นโครง)
ดังนันล
้ าดับภาพเคลื่อนไหวสามารถปรับแต่งได้ จากการโต้ ตอบของผู้ใช้
หลังจากกาหนดลาดับภาพเคลื่อนไหวได้ แล้ วก็เรนเดอร์ ออปเจ็กต์ได้ เลย
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
72
คุณลักษณะภาพเคลื่อนไหว (Motion Specification)
วิธีทวั่ ไปในการอธิบายลาดับภาพเคลื่อนไหวจะมีช่วงตังแต่
้ คณ
ุ ลักษณะ
ที่ชดั เจนของเส้ นทางภาพเคลื่อนไหวไปยังคาอธิบายของการโต้ ตอบที่
สร้ างภาพเคลื่อนไหว
เราจึงสามารถกาหนดวิธีให้ ภาพเคลื่อนไหวเกิดขึ ้นได้ โดยให้
ค่าพารามิเตอร์ ของการแปลง, พารามิเตอร์ เส้ นทางภาพเคลื่อนไหว,
แรงที่กระทาต่อออปเจ็กต์ หรื อรายละเอียดการโต้ ตอบเพื่อสร้ าง
ภาพเคลื่อนไหว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
73
วิธีกาหนดเส้ นทางภาพเคลื่อนไหว
ความสัมพันธ์ระหว่างเฟรมและเวลาเป็ นเงื่อนไขสาคัญที่ทาให้
ภาพเคลื่อนไหว วิธีกาหนดเส้ นทางภาพเคลื่อนไหวเป็ นการกาหนดแนว
ทางการเคลื่อนของออเจ็กต์ในสิง่ ต่อไปนี ้
ความสัมพันธ์ระหว่างตัวแสดงต่าง ๆ ที่มีการเคลื่อนไหวในแต่
ละเฟรม เช่น วิถีโคจรของดาวเคราะห์ในระบบสุริยจักรวาล ต่าง
มีวงโคจรที่เป็ นเส้ นทางของตัวเอง
ระยะทางที่ออปเจ็กต์เคลื่อนที่ไปจนถึงจุดหมาย เช่น ดวง
อาทิตย์เคลื่อนที่จากขอบฟ้าทางทิศตะวันออก ไปตกที่ขอบฟ้า
ทิศตะวันตก
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
74
วิธีกาหนดเส้ นทางภาพเคลื่อนไหว
ทิศทางที่ออปเจ็กต์คลื่อนที่ เช่น ขบวนรถไฟไปสงขลาจะ
เคลื่อนที่ไปทางทิศใต้
จุดเชื่อมต่อระหว่างการเคลื่อนไหวสองส่วนเข้ าด้ วยกัน เช่น การ
เปิ ด และปิ ดของสะพานข้ ามแม่น ้า ตัวสะพานแต่ละฟากของฝั่ ง
แม่น ้าจะเคลื่อนเข้ ามาบรรจบกันกลางแม่น ้า
แสดงข้ อมูลระหว่างการเคลื่อนไหว เช่น ตาแหน่งเริ่มต้ น
ตาแหน่งสุดท้ าย และความเร็วของออปเจ็กต์
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
75
วิธีกาหนดเส้ นทางภาพเคลื่อนไหว
วิธีการกาหนดเส้ นทางที่ซบั ซ้ อนขึ ้นมีดงั นี ้
1. เส้ นทางย่ อย (Subpath) ซึง่ เป็ นเส้ นทางเดินขององค์ประกอบ
ย่อยที่มีในออปเจ็กต์ชิ ้นใหญ่อีกที เส้ นทางย่อยนี ้จะมีสว่ นติดต่อ
กับเส้ นทางหลักโดยมีการเชื่อมโยง (Link) ซึง่ เป็ นส่วนที่สง่ ต่อ
ความสัมพันธ์ระหว่าง ออปเจ็กต์แม่ (Parent) กับออปเจ็กต์ลกู
(Child) เช่น แขนและลาตัวมีสว่ นเชื่อมโยงกันคือหัวไหล่ ในกรณี
นี ้ลาตัวเป็ นออปเจ็กต์และแขนเป็ นออปเจ็กต์ลกู
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
76
วิธีกาหนดเส้ นทางภาพเคลื่อนไหว
2. เส้ นทางโค้ ง (Curve Path) ซึง่ เป็ นเส้ นรอบวงกลมหรื อเป็ นเส้ น
คดไปมาได้ เส้ นโค้ งเกิดขึ ้นจากการนาเส้ นเวกเตอร์ สนั ้ ๆ ที่ทา
มุมกันไม่เท่ากับ 180 มาเชื่อมต่อกันจนเกิดเป็ นเส้ นโค้ งขึ ้น ใน
กรณีของโปรแกรมคอมพิวเตอร์ กราฟิ ก จะทาการคานวน
เวกเตอร์ เหล่านันแล้
้ วหาค่าเฉลี่ยสร้ างเป็ นเส้ นโค้ งขึ ้นมา ทังนี
้ ้
เส้ นโค้ งได้ จากการกาหนดจุดต่อเพียงไม่กี่จดุ เส้ นโค้ งมี 2 ชนิด
คือเส้ นโค้ งบีเซียร์ (Bezier) และ เส้ นโค้ งสไปลน์ (Spline)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
77
วิธีกาหนดเส้ นทางภาพเคลื่อนไหว
3. เส้ นโค้ งบีเซียร์ (Bezier Curve) เป็ นเส้ นโค้ งที่นิยมใช้ กนั มาก
ในงานประเภทกราฟิ กภาพประกอบ (illustration) เส้ นโค้ งบี
เซียร์ เกิดขึ ้นจากการกาหนดจุดควบคุมขึ ้นตังแต่
้ 3 จุด ความโค้ ง
ของเส้ นเกิดขึ ้นจากตัวแปรของมุมและความยาวของเส้ นสัมผัส
ส่วนโค้ ง ซึง่ โปรแกรมกราฟิ กนาไปคานวนสร้ างเป็ นเส้ นโค้ ง
ระหว่างจุดควบคุมสองจุด การเปลี่ยนตาแหน่งจุดควบคุมทาให้
รูปร่างส่วนโค้ งเปลี่ยนไปและเมื่อนาเส้ นบีเซียร์ ต่อกันยาว ๆ โดย
กาหนดจุดควบคุมหลาย ๆ จุดสามารถสร้ างเส้ นโค้ งที่คดเคี ้ยว
ไปมาได้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
78
วิธีกาหนดเส้ นทางภาพเคลื่อนไหว
4. เส้ นโค้ งสไปลน์ (Spline curve) เป็ นเส้ นโค้ งที่เกิดขึ ้นจากการ
โยงเส้ นเวกเตอร์ สองเส้ นติดต่อกัน หากเส้ นเวกเตอร์ ทงสองท
ั้
า
มุมกันก็จะสามารถนาตาแหน่งของจุดทังสามมาค
้
านวนหาส่วน
โค้ งขึ ้นมาได้ ยิ่งเส้ นตรงที่เชื่อมต่อกันทามุมแคบเท่าไรก็ยิ่งทาให้
ส่วนโค้ งแคบลงไปอีก สไปลน์จงึ เป็ นเส้ นโค้ งที่ต้องอาศัยการปรับ
ตาแหน่งของจุดเริ่มต้ นและจุดสุดท้ ายของเส้ นโค้ ง เส้ นโค้ งส
ไปลน์นิยมนามาใช้ กบั งานประเภทคอมพิวเตอร์ ช่วยออกแบบ
และเป็ นเส้ นโค้ งที่เหมาะสาหรับใช้ เป็ นเส้ นทางการเคลื่อนตัว
ของออปเจ็กต์ในเฟรม
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
79
คุณลักษณะภาพเคลื่อนไหวโดยตรง
วิธีการตรงไปตรงมาเพื่อกาหนดภาพเคลื่อนไหวคือการกาหนด
คุณลักษณะภาพเคลื่อนไหวโดยตรงของพารามิเตอร์ การแปลงทาง
เรขาคณิต
ในที่นี ้เรากาหนดค่าของมุมในการหมุนและเวกเตอร์ เพื่อเคลื่อนย้ าย
อย่างชัดเจน
หลังจากนันจะมี
้ การประยุกต์ใช้ เมทริกซ์การแปลงทางเรขาคณิตเพื่อ
แปลงตาแหน่งโคออร์ ดิเนต
ส่วนวิธีการอื่น ๆ เราสามารถใช้ สมการการประมาณค่าที่รวม
ค่าพารามิเตอร์ เหล่านี ้เพื่อกาหนดประเภทของการเคลื่อนไหวที่แน่นอน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
80
คุณลักษณะภาพเคลื่อนไหวโดยตรง
เช่น เราสามารถประมาณค่าเส้ นทางการเด้ งของลูกบอลขึ ้นลง (รูป
ต่อไป) ด้ วยสมการ
โดยที่ A เป็ นค่าเริ่มต้ นความสูงของลูกบอลจากพื ้น
 เป็ นความถี่เชิงมุม
 เป็ นมุมเฟส
k เป็ นค่าคงที่ วิธีการกาหนดภาพเคลื่อนไหวแบบนี ้มีประโยชน์ในการ
โปรแกรมการลาดับภาพเคลื่อนไหวแบบธรรมดาได้ ดี
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
81
คุณลักษณะภาพเคลื่อนไหวโดยตรง
y
x
การประมาณค่าการเด้ งของลูกบอลขึ ้นลงตามสมการ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
82
ระบบตรงเป้าหมาย (Goal-Directed Systems)
ที่ฝั่งตรงข้ ามของค่าสูงสุด เราสามารถกาหนดภาพเคลื่อนไหวที่ทาให้
ภาพเคลื่อนไหวเกิดขึ ้นในเทอมทัว่ ไปที่อธิบายในเทอมของผลลัพธ์ครัง้
สุดท้ าย
อาจกล่าวได้ วา่ ภาพเคลื่อนไหวถูกกาหนดในเทอมของสถานะท้ ายสุด
ของการเคลื่อนไหว
ระบบนี ้เรี ยกว่าเป็ นระบบตรงเป้าหมาย เนื่องจากค่าของพารามิเตอร์
ภาพเคลื่อนไหวถูกกาหนดจากเป้าหมายของการเคลื่อนไหว
เช่น เราสามารถกาหนดว่าเราต้ องการให้ ออปเจ็กต์เคลื่อนที่ไป
ปลายทางที่ใด หรื อเรากาหนดสถานะที่เราต้ องการให้ ออปเจ็กต์รับค่า
จากออปเจ็กต์อื่น
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
83
ระบบตรงเป้าหมาย (Goal-Directed Systems)
ค่าที่รับเข้ ามาโดยตรงจะถูกแปลให้ อยูใ่ นเทอมขององค์ประกอบการ
เคลื่อนไหวที่อธิบายให้ งานสาเร็จ
ตัวอย่าง การเคลื่อนไหวของมนุษย์ถกู กาหนดเป็ นโครงสร้ างเป็ นชัน้ ๆ
ของภาพเคลื่อนไหวย่อย ๆ สาหรับลาตัว, แขนขา หรื ออื่น ๆ ดังนัน้ เมื่อ
มีการกาหนดเป้าหมายเช่น การเดิน ภาพเคลื่อนไหวจะต้ องการลาตัว
และแขนขาไปคานวณเพื่อทาให้ งานนี ้สาเร็จ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
84
คิเนมาติก (Kinematics)
คิเนมาติก (Kinematics) หรื อจลนศาสตร์ เป็ นศาสตร์ ที่อธิบายถึงการ
เคลื่อนไหวของออปเจ็กต์ที่มีแรงเคลื่อนไหวในตัวเองซึง่ พบในสิง่ มีชีวิต
รวมทังอุ
้ ปกรณ์ที่มีขนความอิ
ั้
สระสูงๆ เช่น แขนหุ่นยนต์
วิธีควบคุมภาพเคลื่อนไหวคิเนมาติกจะดูจากตาแหน่งของออปเจ็กต์ที่
ขึ ้นอยูก่ บั จังหวะของเวลาและความเป็ นจริงในธรรมชาติของออปเจ็กต์
แต่ละชนิด ส่วนใหญ่มกั เป็ นสิง่ มีชีวิต
วิธีสร้ างภาพเคลื่อนไหวแบบคิเนมาติกเริ่มจากการค้ นหาแก่นของกลไก
การเคลื่อนไหวของออปเจ็กต์แต่ละตัว รวมทังลั
้ กษณะเฉพาะหรื อบุคลิก
การเคลื่อนไหวของออปเจ็กต์นนออกมาเสี
ั้
ยก่อน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
85
คิเนมาติก (Kinematics)
การบันทึกการเคลื่อนไหวของออปเจ็กต์ประเภทนี ้อาจใช้ อปุ กรณ์พิเศษ
ที่ติดเข้ ากับตัวผู้แสดง เช่น การให้ ผ้ แู สดงสวมใส่ชดุ แต่งกายพิเศษที่
ติดตังแถบหลอดไดโอดเปลงแสง
้
เพื่อสังเกตการเคลื่อนไหวในที่มืด
หรื อวิธีการบันทึกการเคลื่อนไหวของนักเต้ นระบาด้ วยการสวมใส่ชดุ
แต่งกายข้ อมูลเพื่อถ่ายทอดการเคลื่อนไหวที่สมจริงลงในโปรแกรม
คอมพิวเตอร์ ได้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
86
คิเนมาติก (Kinematics)
ความก้ าวหน้ าของระบบคอมพิวเตอร์ กราฟิ กในปั จจุบนั ทาให้ ผ้ ผู ลิต
ซอฟต์แวร์ ได้ สร้ างไลบรารี ข้อมูลสาหรับการเคลื่อนไหวคิเนมาติกของ
ออปเจ็กต์ไว้ เช่น ร่างกายมนุษย์และสัตว์บางชนิดลงในซอฟต์แวร์ เพื่อ
ผู้สร้ างภาพเคลื่อนไหวจะสามารถเลือกนาบุคลิกต่าง ๆ ในไลบรารี มาใช้
กับออปเจ็กต์สามมิติที่สร้ างขึ ้นมาได้ อย่างรวดเร็ว
ทาให้ การคีย์ภาพโครงลวดสามมิตใิ นปั จจุบนั กลายเป็ นเรื่ องที่สะดวก
มากกว่าแต่ก่อน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
87
คิเนมาติกแบบผกผัน (Invert Kinematics)
บ่อยครัง้ ที่การกาหนดการเคลื่อนไหวแบบคิเนมาติกค่อนข้ างลาบาก
เนื่องจากความซับซ้ อนที่เกิดระยะทางและความเร็วที่แตกต่างกัน
ออกไป ตามจังหวะและท่าทางตามขันความอิ
้
สระที่ออปเจ็กต์นนั ้ ทาได้
เช่น แขนกล การสร้ างภาพเคลื่อนไหวที่มีขนความอิ
ั้
สระมาก ทาให้ มีจดุ
ที่ต้องคีย์มากขึ ้นเป็ นลาดับ ภาพเคลื่อนไหวเฟรมสุดท้ ายอาจเกิดความ
ผิดพลาดได้ เช่น ภาพเคลื่อนไหวของมือกลที่เอื ้อมไปหยิบกล่องไม้
มีขนตอนการแก้
ั้
ปัญหานี ้ด้ วยกัน 2 วิธี คือ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
88
คิเนมาติกแบบผกผัน (Invert Kinematics)
การควบคุมผกผัน หรื อไอซี (IC : Inverse Control) เป็ นวิธีสร้ างการ
เคลื่อนไหวที่ย้อนจากปลายทางมาสูจ่ ดุ เริ่มต้ น เพื่อบังคับกระบวนการ
เคลื่อนไหวทังหมดให้
้
บรรจุภายในเฟรมที่กาหนดไว้
เทคนิคนี ้จึงนิยมนามาใช้ ควบคุมการเคลื่อนไหวชนิดพลวัตที่มีความ
ซับซ้ อนอย่างได้ ผล
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
89
คิเนมาติกแบบผกผัน (Invert Kinematics)
จลนศาสตร์ ผกผัน หรื อไอเค (Inverse Kinematics, IK) เป็ นวิธีการใช้ กบั
สิ่งมีชีวิต โดยควบคุมการเคลื่อนไหวที่ออปเจ็กต์ลกู เพื่อให้ มีผลย้ อนไปสูอ่ อป
เจ็กต์แม่โดยอัตโนมัติ เช่น การยกมือเพื่อให้ แขนทังหมดยกขึ
้
้น เป็ นต้ น
วิธีนี ้ผู้สร้ างภาพเคลื่อนไหวจาเป็ นต้ องกาหนดขันการเชื
้
่อมต่อ ระหว่างออป
เจ็กต์แม่และลูกอย่างชัดเจนจากนันซอฟต์
้
แวร์ จะคานวณสัดส่วนการ
เคลื่อนไหวของออปเจ็กต์แต่ละตัวอย่างแม่นยา
การควบคุมประเภทนี ้นอกจากนามาใช้ กบั สิง่ มีชีวติ แล้ วยังใช้ กบั อุปกรณ์ที่มี
ขันความอิ
้
สระจานวนมาก
ปั จจุบนั มีซอฟต์แวร์ สร้ างภาพเคลื่อนไหวหลายตัวที่บรรจุคาสัง่ ไอเคไว้ ทาให้
ผู้สร้ างภาพเคลื่อนไหวที่สมจริ งได้ ง่ายและแม่นยากว่าแต่ก่อนมาก
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
90
ไดนามิก (Dynamics)
ไดนามิก (Dynamics) หรื อพลศาสตร์ เป็ นศาสตร์ ที่วา่ ด้ วยเคลื่อนไหวของวัตถุ
เกร็งที่ถกู แรงอื่นกระทา
ในคอมพิวเตอร์ กราฟิ กเราสามารถควบคุมการเคลื่อนไหวแบบนี ้ได้ โดยการนาเอา
ระยะทางที่ออปเจ็กต์เคลื่อนที่จากจุดเริ่มต้ นไปจุดสุดท้ าย ไปเฉลี่ยกับจานวนเฟรม
ที่ใช้ บนั ทึกการเคลื่อนไหวนัน้ ผลที่ปรากฏเป็ นภาพออปเจ็กต์เคลื่อนที่สม่าเสมอ
ในภาพเคลื่อนไหวที่มีความซับซ้ อนจะมีตวั แปรเข้ ามาเกี่ยวข้ องหลายตัว คือ
น ้าหนัก ความเร็ว รวมทังแรงกระท
้
าจากสิ่งแวดล้ อม เช่น แรงโน้ มถ่วง แรงลม และ
แรงเสียดทาน
การเคลื่อนแบบไดนามิกสามารถนามาใช้ ร่วมกับวิธีการคานวณ หรื อเปลี่ยน
ค่าพารามิเตอร์ ได้ ซึง่ ใช้ ได้ กบั การเคลื่อนไหวทังแบบธรรมชาติ
้
และไม่ใช่ธรรมชาติ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
91
ภาพเคลื่อนไหวแบบภาพต่ อ (Articulated figure Animation)
เทคนิคพื ้นฐานในการสร้ างภาพเคลื่อนไหวของคน, สัตว์, แมลง หรื อ
อื่น ๆ จะจาลองด้ วยภาพต่อ (Articulated figure)
ภาพต่อเป็ นโครงสร้ างแบบลาดับชันขององค์
้
ประกอบที่เป็ นลิงค์
เชื่อมต่อกับจุดหมุน (ดังรูปต่อไป)
เราอาจหมายถึงเราจาลองออปเจ็กต์ภาพเคลื่อนไหวเป็ นการ
เคลื่อนย้ ายของรูปแท่ง หรื อโครงกระดูกอย่างง่าย ที่สามารถห่อด้ วย
พื ้นผิวเป็ นผิวหนัง, ผม, ขน, เสื ้อผ้ า หรื อส่วนห่อหุ้มอื่น ๆ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
92
ภาพเคลื่อนไหวแบบภาพต่ อ (Articulated figure Animation)
ภาพต่อแบบง่ายที่มีจดุ หมุน 9 จุด และ
มี 12 ลิงค์ ไม่รวมส่วนหัว
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
93
ภาพเคลื่อนไหวแบบภาพต่ อ (Articulated figure Animation)
จุดเชื่อมต่อของภาพต่อวางอยูบ๋ นไหล่, สะโพก, เข่า และจุดต่อกระดูกที่
เดินไปตามเส้ นทางการเคลื่อนไหวที่กาหนดเป็ นการเคลื่อนไหวของ
ร่างกาย เช่น เมื่อกาหนดการเคลื่อนไหวให้ กบั ออปเจ็กต์ ไหล่จะ
เคลื่อนไหวโดยอัตโนมัติในทิศทางที่แน่นอน เมื่อไหล่เคลื่อนไหว แขนก็
จะเคลื่อนไหวตาม เป็ นต้ น
ประเภทของการเคลื่อนไหวที่แตกต่างกัน เช่น การเดิน, การวิ่ง หรื อการ
กระโดด ถูกกาหนดและมีความสัมพันธ์กบั การเคลื่อนไหวของข้ อต่อ
และลิงค์เฉพาะแบบ
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
94
ภาพเคลื่อนไหวแบบภาพต่ อ (Articulated figure Animation)
ชุดการเดินของขา อาจกาหนดได้ ดงั รูปต่อไป
จุดต่อสะโพกย้ ายไปตามเส้ นแนวนอนในขณะที่ลิงค์ที่ตอ่ อยูน่ นกระท
ั้
ากับชุด
การเคลื่อนไหวของสะโพก, หัวเข่า, และข้ อเท้ า
เริ่ มต้ นด้ วยขาตรง (รูป ก)) เคลื่อนไหวครัง้ แรกด้ วยการงอของหัวเข่าเมื่อ
สะโพกเคลื่อนไหวไปข้ างหน้ า (รูป ข))
หลังจากนี ้ขาจะแกว่งไปข้ างหน้ า กลับไปยังตาแหน่งแนวตัง้ และเหวี่ยงกลับ
แสดงดังรูป ค), ง) และ จ)
การเคลื่อนไหวครัง้ สุดท้ ายคือการแกว่งขากลับ แล้ วกลับไปยังตาแหน่ง
แนวตัง้ ดังรูป ฉ) และ ช)
วงรอบการเคลื่อนไหวนี ้จะทาซ ้าไปเรื่ อยตามระยะทาง หรื อเวลาที่กาหนด
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
95
ภาพเคลื่อนไหวแบบภาพต่ อ (Articulated figure Animation)
การเคลื่อนไหวของลิงค์ที่แสดงการเดิน
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
96
การเคลื่อนไหวเป็ นระยะ (Periodic Motions)
เมื่อเราสร้ างภาพเคลื่อนไหวที่วนซ ้า เช่น การหมุนของออปเจ็กต์ เรา
จาเป็ นต้ องแน่ใจว่าการเคลื่อนไหวมีความถี่ที่เพียงพอในการแสดงการ
เคลื่อนไหวอย่างถูกต้ อง
อาจกล่าวได้ วา่ การเคลื่อนไหวต้ องเข้ าจังหวะกับอัตราการสร้ างเฟรม
เราต้ องใช้ จานวนเฟรมต่อรอบให้ เพียงพอเพื่อแสดงการเคลื่อนไหวให้
ถูกต้ อง มิฉะนันภาพเคลื
้
่อนไหวอาจจะไม่ถกู ต้ อง
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
97
การเคลื่อนไหวเป็ นระยะ (Periodic Motions)
ตัวอย่างง่าย ๆ ของการเคลื่อนไหวเป็ นระยะวงล้ อเกวียน ที่หมุนตาม
ทิศทางในรูปต่อไป แสดงการหมุน 1 รอบของวงล้ อเกวียนที่มีซสี่ ีเข้ มที่
หมุนตามเข็มนาฬิกา 18 รอบต่อวินาที
ถ้ าการเคลื่อนไหวนี ้ถูกบันทึกบนฟิ ล์มที่อตั ราภาพเคลื่อนไหว 24 เฟรม/
วินาที
หลังจากนันการวาดการเคลื
้
่อนไหว 5 เฟรมแรก จะเป็ นดังรูปถัดไป
เนื่องจากวงล้ อใช้ เวลา 3/4 ของการหมุนทุก 1/24 วินาที มีเพียงเฟรม
ภาพเคลื่อนไหวเพียงเฟรมเดียวที่สร้ างขึ ้นต่อรอบ และวงล้ อปรากฏเป็ น
การหมุนในทิศทางตรงข้ าม (ทวนเข็มนาฬิกา)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
98
การเคลื่อนไหวเป็ นระยะ (Periodic Motions)
ซี่ล้อสีเข้ ม 8 ซี่ในระหว่างการหมุนตามเข็มนาฬิกาในอัตรา 18 รอบ/วินาที
เฟรมของฟิ ล์ม 5 เฟรมของการหมุนวงล้ อในรูป 12.14 ที่อตั รา 24 เฟรม/วินาที
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
99
การเคลื่อนไหวเป็ นระยะ (Periodic Motions)
ในภาพเคลื่อนไหวที่สร้ างจากคอมพิวเตอร์ เราสามารถควบคุมอัตรา
การหมุนเป็ นระยะ ๆ นี ้ได้ โดยการปรับพารามิเตอร์ การหมุน
เช่น เมื่อเราเพิ่มมุมในการเคลื่อนไหวของออปเจ็กต์ จะมีการสร้ างเฟรม
เป็ นจานวนเท่าของ ดังนันเมื
้ ่อเพิ่มมุมการหมุน 3 จะเป็ นการสร้ าง
ขันตอนการเคลื
้
่อนไหว 120 ขันตอนใน
้
1 รอบ
ถ้ าเพิ่มมุมการหมุน 4 จะเป็ นการสร้ างขันตอนการเคลื
้
่อนไหว 90
ขันตอนใน
้
1 รอบ เป็ นต้ น
ดังนันถ้
้ าต้ องการการเคลื่อนไหวให้ เร็วขึ ้นจะใช้ ขนตอนการหมุ
ั้
นมากขึ ้น
(เพิ่มมุมการหมุนให้ น้อยลง) และถ้ าต้ องการให้ หมุนอย่างต่อเนื่องเรา
จะต้ องกาหนดค่าพารามิเตอร์ แต่ละครัง้ ในแต่ละรอบ (360)
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
100
ฟั งก์ ชันภาพเคลื่อนไหวของ OpenGL
ไลบรารี ของ GLUT ได้ เตรี ยมฟั งก์ชนั สาหรับการแสดงผลบนจอภาพ
ระบบแรสเตอร์ ในระบบฮาร์ ดแวร์ บางระบบอาจจะไม่มีฟีเจอร์ ของการ
แสดงภาพเคลื่อนไหวบนจอคอมพิวเตอร์ เช่น บัพเฟอร์ คู่ แต่ถ้า
ฮาร์ ดแวร์ สนับสนุนฟี เจอร์ นี ้ เราสามารถกระตุ้นให้ ทางานได้ ด้วยคาสัง่
GLUT ดังนี ้
glutInitDisplayMode (GLUT_DOUBLE);
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
101
ฟั งก์ ชันภาพเคลื่อนไหวของ OpenGL
คาสัง่ นี ้ทาให้ ใช้ บพั เฟอร์ ได้ 2 บัพเฟอร์ ที่เรี ยกว่า บัพเฟอร์ หน้ า (front
buffer) และบัพเฟอร์ หลัง (back buffer) ทาให้ เราเพื่อรี เฟรช
จอแสดงผล ในขณะที่บพั เฟอร์ หนึง่ กาลังทาหน้ าที่รีเฟรชจอแสดงผลนัน้
เฟรมถัดไปของภาพเคลื่อนไหวจะสร้ างได้ บนอีกบัพเฟอร์ หนึง่ เรา
กาหนดการเปลี่ยนหน้ าที่ระหว่างบัพเฟอร์ ทงสองด้
ั้
วยคาสัง่
glutSwapBuffers ();
การพิจารณาว่าระบบบัพเฟอร์ คสู่ ามารถทางานในระบบได้ หรื อไม่
สามารถตรวจสอบได้ ด้วยคาสัง่
glGetBooleanv (GL_DOUBLEBUFFER, status);
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
102
ฟั งก์ ชันภาพเคลื่อนไหวของ OpenGL
ค่า GL_TRUE ถูกส่งค่ากลับมาในพารามิเตอร์ แบบอาร์ เรย์ status ถ้ า
บัพเฟอร์ ทงสองมี
ั้
ในระบบ ถ้ าไม่มีจะส่งค่า GL_FALSE กลับมา
ในการแสดงภาพเคลื่อนไหวอย่างต่อเนื่อง เรายังสามารถใช้ คาสัง่
glutIdleFunc (animationFcn);
 เมื่อพารามิเตอร์ animationFcn สามารถกาหนดชื่อของโปรซีเดอร์ ที่
เพิ่มค่าพารามิเตอร์ ภาพเคลื่อนไหว โปรซีเดอร์ นี ้ทางานอย่างต่อเนื่อง
เมื่อไม่มีงานอื่นเข้ ามาในวินโดว์แสดงผล ถ้ าไม่ต้องการใช้ ฟังก์ชนั
glutIdleFunc ให้ กาหนดอาร์ กิวเมนต์ด้วยค่า NULL หรื อ 0
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
103
ฟั งก์ ชันภาพเคลื่อนไหวของ OpenGL
ex12_01.cpp แสดงระบบสุริยะ ที่มีดวงอาทิตย์อยูก่ ลางจอภาพ และ
มีดาวเสาร์ ที่มีดวงจันทร์ หมุนรอบดวงอาทิตย์นี ้
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
104
ฟั งก์ ชันภาพเคลื่อนไหวของ OpenGL
ex12_02.cpp แสดงภาพผีเสื ้อที่บนิ จากกรอบวินโดว์ด้านซ้ ายไปตาม
เส้ นทางจนหายไปที่ขอบวินโดว์ด้านขวา
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
105
สรุ ปฟั งก์ ชันภาพเคลื่อนไหวของ OpenGL
คอมพิวเตอร์ กราฟิ กส์ ใช้ OpenGL (Computer Graphics using OpenGL)
106