ความรู้ที่จำเป็นในการเขียนไลบรารี่แอนิเมชั่น (IK & FK) คืออะไร? [ปิด]


9

ฉันไม่สามารถหาไลบรารี่ที่ดีสำหรับแอนิเมชั่นได้ห้องสมุดที่ฉันพบนั้นเก่าและหยุดแล้ว แต่ฉันสังเกตว่าห้องสมุดนั้นค่อนข้างเล็กดังนั้นฉันจึงคิดที่จะเขียนโค้ดด้วยตัวเอง: ฉันควรเริ่มจากตรงไหน ? พื้นฐานของสิ่งนี้คืออะไร? มีหนังสือเกี่ยวกับเรื่องนี้หรือไม่?

หมายเหตุเพิ่มเติมบางประการเกี่ยวกับรูปแบบไฟล์ที่ดีสำหรับแอนิเมชั่นก็เป็นที่นิยมเช่นกัน

ฉันใช้ C ++

คำตอบ:


8

อย่าพยายามเขียนอะไรตั้งแต่ต้น อ้างถึงรหัสที่มีอยู่และนำมาจากที่นั่น

และถ้าคุณต้องการอ่านเนื้อหา:


7

จลนศาสตร์ล่วงหน้าเป็นเพียงข้อกำหนดเบื้องต้นสำหรับจลนศาสตร์ของผกผันโดยทั่วไป

สำหรับจลนศาสตร์ล่วงหน้าคุณจะต้องมีความรู้เกี่ยวกับเชนการแปลง (ตัวอย่างเช่นกราฟของซีน) ยกตัวอย่างเช่นจุดเริ่มต้นที่ดีคือการประชุม Denavit-Hartenberg สำหรับกลศาสตร์การเคลื่อนไหวผกผันศึกษา Cyclic ประสานงานโคตร (CCD), จาโคเบียนผกผันไขว้จาโคเบียนและการแก้ปัญหาหลอกผกผัน แนวคิดและอัลกอริธึมเหล่านี้ให้ภาพรวมที่ดีของคณิตศาสตร์และฟิสิกส์ของสาขานี้ ไลบรารีภาษาการเขียนโปรแกรมหรือรูปแบบไฟล์ไม่เคยเป็นองค์ประกอบสำคัญหากคุณต้องการที่จะเข้าใจสิ่งที่เกิดขึ้นหลังเวทย์มนตร์

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

แนวคิดทั้งหมดให้ปริมาณรถบรรทุกของผลลัพธ์ที่เกี่ยวข้องในเครื่องมือค้นหาที่คุณชื่นชอบขออภัยที่ไม่โพสต์ลิงก์จำนวนมากไปยังวัสดุที่ดี


1

บทความต้นฉบับ: ฉันต้องรู้อะไรบ้างเกี่ยวกับ Inverse Kinematics

คุณอาจเคยได้ยินเรื่อง Inverse Kinematics IK เป็นเครื่องมือยอดนิยมใน Unity และคอมพิวเตอร์กราฟิก แต่ถ้านี่เป็นครั้งแรกที่คุณพยายามสร้างหรือใช้ระบบ Inverse Kinematics คุณอาจต้องการรายละเอียดเพิ่มเติม ฉันจะอธิบายว่า IK คืออะไรนิยามคำศัพท์และทบทวนการใช้งาน คำศัพท์ที่จำเป็นต่อการเข้าใจ IK คืออะไร?

ก่อนที่เราจะเข้าสู่ใจกลางของ IK เราต้องกำหนดคำศัพท์ที่เกี่ยวข้องกับ IK IK เป็นวิธีการที่นำไปใช้กับร่างกายที่พูดชัดแจ้ง ร่างกายที่ประกบคืออะไร?

ก้องร่างกาย

ร่างกายที่เปล่งเสียงสามารถเป็นตัวแทนของร่างกายเคลื่อนไหวส่วนใหญ่เช่นมนุษย์และสัตว์ที่มีโครงกระดูก พูดง่ายๆก็คือร่างกายที่เชื่อมต่อเป็นต้นไม้ที่เชื่อมโยงกัน โซ่ที่เชื่อมโยงนั้นประกอบไปด้วยข้อต่อและตัวเชื่อมโยงซึ่งการเชื่อมโยงนั้นเป็นกระบอกสูบที่แข็ง

ป้อนคำอธิบายรูปภาพที่นี่

ประเภทของข้อต่อ

สำหรับข้อต่อมีสองประเภท ข้อต่อชนิดแรกคือข้อต่อแบบหมุนรอบ มันเชื่อมต่อกับลิงค์ที่หมุนรอบ ๆ

รอยต่อที่หมุนรอบนั้นคล้ายกับหมุดกลางของนาฬิกา - โดยใช้เข็มนาฬิกาเป็นลิงค์

ป้อนคำอธิบายรูปภาพที่นี่

ข้อต่อที่เป็นแท่งปริซึมเป็นข้อต่อที่ทำให้การเชื่อมต่อนั้นแปลจากข้อต่อเพื่อขยาย / ย่อการเชื่อมโยง

ป้อนคำอธิบายรูปภาพที่นี่

ข้อต่อที่เป็นแท่งปริซึมทำหน้าที่คล้ายกับการยืด / หดความยาวของที่จับซึ่งพับเก็บได้บนกระเป๋าของคุณ หากคุณมองอย่างใกล้ชิดที่จับกระเป๋าแบบยืดหดได้มีข้อต่อปริซึม 4 จุด ข้อต่อที่เป็นแท่งปริซึม 2 อันครึ่งหนึ่งลงที่จับและอีก 2 ข้อต่อที่เป็นแท่งปริซึมลงไปจนถึงที่จับที่ด้านบนของกระเป๋า

หากคุณกำลังสับสนกับข้อต่อปริซึมไม่ต้องกังวล พวกมันไม่ได้ใช้บ่อยใน Inverse Kinematics และอย่างที่คุณสามารถบอกได้ว่าไม่มีมนุษย์คนไหนที่มีข้อต่อปริซึม - เพียงแค่หมุนรอบข้อต่อ

โครงสร้างลำดับชั้น

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

สิ้นสุด Effector

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

ป้อนคำอธิบายรูปภาพที่นี่

End Effector เป็นภาพวงกลมสีเขียวที่นี่

ข้อต่อและโพสท่า

ข้อต่อคือการหมุน / แปลของข้อต่อซึ่งย้ายลิงค์ที่เชื่อมต่อ ในทางตรงกันข้ามท่าทางเป็นชุดของข้อต่อที่ส่งผลในการวางตำแหน่งร่างกายที่พูดชัดแจ้ง กล่าวอีกนัยหนึ่งท่าทางเป็นค่าเวกเตอร์แทนค่าสเกลาร์

Kinematics ส่งต่อคืออะไร?

ก่อนที่เราจะรู้ว่า Inverse Kinematics นั้นคืออะไรเราต้องหาว่า Kinematics ล่วงหน้าคืออะไร ฟังก์ชัน / อัลกอริธึมไปข้างหน้าใช้ท่าทางเป็นอินพุตและคำนวณตำแหน่งของเอฟเฟกต์ท้ายเป็นเอาต์พุต ส่งต่อ Kinematics เป็นฟังก์ชันผกผันของ Inverse Kinematics ด้วยการส่งต่อ Kinematics คุณต้องกำหนดท่าทางทั้งหมดของร่างกายที่เชื่อมต่อเพื่อที่จะให้ฟังก์ชั่น / อัลกอริทึมที่มีการป้อนข้อมูลท่าทาง ซึ่งหมายความว่าคุณจำเป็นต้องกำหนดข้อต่อของข้อต่อแต่ละข้อในร่างกายที่เชื่อมต่อ นี่อาจเป็นเรื่องที่ดีถ้าคุณมีข้อต่อจำนวนน้อย แต่ด้วยข้อต่อจำนวนมากซึ่งมีแนวโน้มที่จะน่าเบื่อ

Kinematics ผกผันคืออะไร

ทีนี้ลองคิดดูว่าคุณต้องการให้เอฟเฟกต์สุดท้ายของร่างกายคุณเชื่อมต่อไปยังตำแหน่งเป้าหมายที่ต้องการหรือไม่ ซึ่งหมายความว่าคุณทราบตำแหน่งเอฟเฟกต์สุดท้ายที่คุณต้องการกำหนดเป้าหมาย แต่คุณไม่ทราบว่ารูปแบบของร่างกายที่เปล่งออกมานั้นต้องเป็นอะไรสำหรับเอฟเฟกต์สุดท้ายเพื่อไปยังตำแหน่งเป้าหมายนี้ นี่คือสิ่งที่ Inverse Kinematics ส่องประกาย!

ป้อนคำอธิบายรูปภาพที่นี่

Inverse Kinematics เป็นฟังก์ชัน / อัลกอริทึมของ Inverse Kinematics ฟังก์ชัน / อัลกอริธึมไปข้างหน้ารับตำแหน่งเป้าหมายเป็นอินพุทและคำนวณท่าทางที่ต้องการสำหรับเอฟเฟกต์ท้ายถึงตำแหน่งเป้าหมาย - โพสต์นั้นเป็นเอาต์พุต

อย่างที่คุณเห็นอินพุตและเอาต์พุตถูกสลับระหว่าง FK และ IK ด้วย Inverse Kinematics คุณไม่จำเป็นต้องกำหนดท่าทางทั้งหมดของตัวประกบซึ่งจะถูกคำนวณโดยอัลกอริทึม IK ของคุณ ด้วย IK คุณจะต้องกำหนดตำแหน่งเป็นอินพุต

Inverse Kinematics ทำผลงานการคำนวณที่ท้าทายทั้งหมดในการคำนวณว่ารูปแบบใด ในรัฐก่อนมีร่างกายก้องกับท่าที่รู้จักกันบางอย่าง มันกำหนดตำแหน่งเป้าหมายสำหรับเอฟเฟกต์ท้ายให้พยายามเข้าถึง เมื่ออัลกอริทึม IK ถูกนำไปใช้กับร่างกายที่พูดชัดแจ้งเราได้มาถึงหลังจากรัฐ The After State แสดงให้เห็นว่ามีการคำนวณท่าทางใหม่เช่นว่าเอฟเฟกต์ท้ายจะอยู่ที่ตำแหน่งเป้าหมาย

ผลิตภัณฑ์ IK ใช้อย่างไร

ณ จุดนี้เรารู้ว่า IK ถูกนำไปใช้กับร่างกายที่มีข้อต่อเรารู้ว่าร่างกายที่ทำขึ้นนั้นเป็นอะไรและเรารู้ถึงความแตกต่างระหว่าง IK และ FK เรามีภาพรวมที่ดีของ IK จนถึงตอนนี้ แต่ลองปัดเศษด้วยกรณีการใช้งานที่ดีของ IK ด้วย IK สามารถใช้แขนมนุษย์ในการเข้าถึงวัตถุ / เป้าหมายตามที่เราเห็น IK ยังสามารถใช้สำหรับการเหยียบเท้าเช่นที่เราบอกเท้าว่าจะไปยังตำแหน่งใดและ IK จะอธิบายวิธีการกำหนดค่าข้อต่อขา IK มักจะไม่ได้ใช้เป็นภาพเคลื่อนไหว (เข้าถึงวัตถุ) แต่เป็นเครื่องมือภาพเคลื่อนไหว ดังนั้นหากคุณกำลังใช้วงจรการเดินคุณสามารถกำหนดตำแหน่งของเฟรมหลักบางส่วนโดยใช้เครื่องมือ IK

ป้อนคำอธิบายรูปภาพที่นี่

อีกประเด็นสำคัญเกี่ยวกับ IK คือเป้าหมาย / เป้าหมายของคุณไม่ได้ จำกัด อยู่ที่ตำแหน่งเพียงอย่างเดียว - เป้าหมายของคุณสามารถกำหนดเป็นการหมุนเวียน ตัวอย่างเช่นหากเท้าของคุณจำเป็นต้องหมุนตามภูมิประเทศที่ไม่สม่ำเสมอเป้าหมายการหมุน IK ของคุณสามารถกำหนดได้ตามปกติของพื้น วิธีนี้ทำให้เท้าของคุณเอียงไปตามพื้นเช่นเมื่อคุณกำลังเดินขึ้นทางลาด โปรดทราบว่าคุณสามารถใช้ IK เพื่อให้หัวของคุณ (หรือแม้กระทั่งดวงตา) มองไปในทิศทางที่แน่นอน หากคุณต้องการให้หัวติดตามวัตถุคุณสามารถใช้ IK เพื่อให้หัวติดตามวัตถุได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.