จลนศาสตร์ไปข้างหน้าและผกผันมายา

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

จลนศาสตร์ไปข้างหน้า (FK)

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

ให้ตัวละครโบกมือให้เรา

ลองเลื่อนแถบเลื่อนไปที่เฟรมใดเฟรมหนึ่ง เช่น ไปที่เฟรมที่ 10 แล้วยกมือขึ้น เราจะทำเช่นนี้โดยใช้การหมุน และเพื่อให้ได้ตำแหน่งที่ต้องการ มีแนวโน้มว่าเราจะต้องหมุนทั้งสองส่วนของมือ

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

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

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

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

นี่คือไฟล์ที่มีภาพเคลื่อนไหวด้วยมือ (รูปแบบ 3ds MAX 6)

จลนศาสตร์ผกผัน (IK)

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

เราจะมาดูเครื่องมือจลน์ศาสตร์แบบผกผันที่นำมาใช้ใน 3ds MAX 4 และยังคงอยู่มาจนถึงตอนนี้ เวอร์ชันล่าสุด(3ds สูงสุด 7) มากขึ้น รุ่นก่อนหน้าจลนศาสตร์ผกผันถูกจัดเรียงแตกต่างออกไปบ้าง

จลนศาสตร์ผกผันถูกสร้างขึ้นโดยใช้สิ่งที่เรียกว่าสายจลนศาสตร์ผกผัน (IK Chain) สายโซ่ถูกสร้างขึ้นระหว่างวัตถุที่เชื่อมต่อกันตามลำดับ เพื่อสร้างลูกโซ่ดังกล่าว ลำดับชั้นจะต้องลงท้ายด้วยวัตถุย่อยเสริมบางอย่าง เราจะติดตามการสร้างห่วงโซ่จลนศาสตร์แบบผกผันบนขาของตัวละคร โดยวัตถุเสริมสุดท้ายของห่วงโซ่คือเท้า

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

HI Solver (ตัวแก้ปัญหาอิสระตามประวัติ) - ตัวแก้ปัญหาอิสระในอดีต

HD Solver (ตัวแก้ปัญหาขึ้นอยู่กับประวัติ) - ตัวแก้ปัญหาขึ้นอยู่กับประวัติ (ตัวแก้ปัญหาที่ดีที่สุดสำหรับลำดับแอนิเมชั่นสั้น แต่ให้ผลลัพธ์ที่ไม่ดีสำหรับแอนิเมชั่นขนาดยาว)

IK Limb Solver - ตัวแก้ปัญหาสำหรับแอนิเมชันของแขนขา ออกแบบมาสำหรับวัตถุสองชิ้นในห่วงโซ่ลำดับชั้น

Spline IK Solver - ตัวแก้ปัญหา spline

เราจะใช้ HI Solver แม้ว่า IK Limb Solver ได้รับการออกแบบมาเพื่อทำให้แขนขาของมนุษย์เคลื่อนไหว แต่มันก็ทำงานได้ไม่ดี เมื่อใช้มัน ตัวละครจะงอเข่าข้างหนึ่งไปข้างหลังและข้อศอกข้างหนึ่งงอไปข้างหน้าเสมอ

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

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

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

หากไม่ได้กดปุ่ม Auto Key ให้กดปุ่มนั้น ลองเลื่อนแถบเลื่อนไปที่เฟรมใดเฟรมหนึ่งเช่น 10 มาเริ่มเดินด้วยเท้าขวากันดีกว่า ยกมันขึ้นมา (ด้วยความช่วยเหลือของ IK Goal) และขยับมันเล็กน้อย ให้เราขยับร่างกายไปข้างหน้าเล็กน้อยเหมือนกับที่เคลื่อนไหวไปครึ่งก้าว ลองเลื่อนแถบเลื่อนอีกครั้ง วางเท้าบนพื้นแล้วขยับเนื้อตัวอีกหน่อย โปรดทราบว่าเราสร้างปุ่มแอนิเมชั่นไม่ใช่สำหรับการหมุนต้นขาและขาส่วนล่าง แต่สำหรับการย้ายเป้าหมาย IK

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

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

นี่คือฉากสำเร็จรูปที่ตัวละครเดินไปสองก้าวและโบกมือ

ดังนั้นเราจึงได้ทำความคุ้นเคยกับจลนศาสตร์ไปข้างหน้าและผกผัน ตอนนี้เราสามารถไปยังสิ่งที่จริงจังมากขึ้นได้: ทำความคุ้นเคยกับระบบกระดูกและสร้างโครงกระดูกสำหรับสร้างแอนิเมชั่นตัวละครที่ซับซ้อนและมีรายละเอียดมากขึ้น

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

ด้านทฤษฎี

แนวคิดเรื่องจลนศาสตร์ผกผัน

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

หากต้องการดูสิ่งนี้ ให้สร้างฉากง่ายๆ ด้วยกระบองชนิดหนึ่งที่จำลองมาจากยุคดั้งเดิม เฮดรา, สิบโทริ และทรงกระบอกที่มีฐานเอียง (รูปที่ 1) เชื่อมโยงวัตถุกับเครื่องมือ เลือกและลิงค์(เลือกและเชื่อมโยง) เคลื่อนออกจากวัตถุ เฮดรา 01 เพื่อคัดค้าน ChamferCyl 01 - ด้วยเหตุนี้ทรงกระบอกจะกลายเป็นวัตถุรูท (รูปที่ 2) เลือกทรงกระบอกแล้วเลื่อนไปทางซ้าย - วัตถุอื่นๆ ทั้งหมดที่เป็นลูกของกระบอกสูบจะเคลื่อนที่ไปพร้อมกับกระบอกนั้น ในขณะที่การเคลื่อนที่ของโทริอันใดอันหนึ่งที่อยู่ตรงกลางของโซ่จะนำไปสู่การเคลื่อนที่ของวัตถุในโซ่ที่เป็นลูกของมันเท่านั้น ในขณะที่วัตถุที่อยู่เหนือโซ่ในลำดับชั้นจะยังคงอยู่ที่เดิม (รูปที่ 3) . กลับไปยังตำแหน่งเดิมของวัตถุและเปิดใช้งานโหมดจลนศาสตร์ผกผันโดยเปิดในแผงควบคุม ลำดับชั้นบุ๊กมาร์ก ไอเคและคลิกที่ปุ่ม แบบโต้ตอบไอเคซึ่งควรเน้น (รูปที่ 4) บันทึกฉากการทำงานลงในไฟล์และทำซ้ำการดำเนินการเดิมโดยการย้ายกระบอกสูบและพรู - การเคลื่อนย้ายวัตถุชิ้นแรกจะให้ผลลัพธ์เหมือนเดิม แต่การเปลี่ยนตำแหน่งของพรูจะนำไปสู่การเปลี่ยนแปลงตำแหน่งของวัตถุอื่นๆ ทั้งหมดที่สอดคล้องกัน (และไม่ใช่แค่เด็กที่เกี่ยวข้องกับเขา) องค์ประกอบรวมถึงวัตถุรูท (รูปที่ 5) ในกรณีนี้ ตำแหน่งของวัตถุที่อยู่ในลำดับชั้นด้านล่างพรูที่ถูกย้าย (ในกรณีนี้มันมีบทบาทเป็นเพียงเอฟเฟกต์) จะเปลี่ยนตามกฎของจลนศาสตร์โดยตรง และวัตถุที่มีลำดับชั้นที่สูงกว่า - ตามกฎหมาย ของจลนศาสตร์ผกผัน

ควบคุมการหมุนและการเคลื่อนที่ของวัตถุ

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

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

  • สวัสดีตัวแก้ปัญหา (ประวัติศาสตร์เป็นอิสระตัวแก้ปัญหา) - ตัวควบคุมอิสระในอดีต (ถือเป็นสากลที่สุดสำหรับแอนิเมชั่นตัวละคร);
  • เอชดีตัวแก้ปัญหา (ประวัติศาสตร์ขึ้นอยู่กับตัวแก้ปัญหา) - ตัวควบคุมที่ขึ้นอยู่กับอดีต;
  • ไอเคแขนขาตัวแก้ปัญหา- ตัวควบคุมสำหรับการเคลื่อนไหวของแขนขา (ออกแบบมาสำหรับวัตถุสองชิ้นเท่านั้นในห่วงโซ่ลำดับชั้น)
  • เส้นโค้งไอเคตัวแก้ปัญหา- ตัวควบคุมเส้นโค้ง

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

เพื่อให้แน่ใจว่า IK chains ทำให้การจัดการองค์ประกอบลำดับชั้นง่ายขึ้น ให้สร้างแบบจำลองที่เรียบง่ายของขา (ต้นขาและขาส่วนล่างพร้อมเท้า) - รูปที่. 7. เชื่อมโยงพวกมันเข้ากับห่วงโซ่ลำดับชั้นโดยเริ่มต้น กระบวนการนี้จากด้านล่าง เพื่อให้กระบอกด้านบน (นั่นคือต้นขา) กลายเป็นวัตถุ Root เปิดโหมดจลนศาสตร์ผกผันแล้วลองขยับเท้าไปทางซ้าย - ผลลัพธ์จะไม่เหมือนกับสิ่งที่สังเกตได้เมื่อเดินเลยเนื่องจากแม้จะมีการเคลื่อนไหวเพียงเล็กน้อย แต่การหมุนของข้อต่อก็จะมากเกินไป (รูปที่ .8). ตอนนี้สร้างวัตถุจำลองเพิ่มเติมที่ด้านบนของต้นขาและรวมไว้ในลำดับชั้นเป็นวัตถุราก เลือกวัตถุจำลองและกำหนดตัวควบคุมให้กับวงจร สวัสดีตัวแก้ปัญหาโดยใช้คำสั่ง แอนิเมชั่น=>ไอเคนักแก้ปัญหา=>สวัสดีตัวแก้ปัญหาและระบุเท้าเป็นเอฟเฟกต์สุดท้าย - เมื่อทำการแสดง ของการกระทำนี้เส้นประจะตามเคอร์เซอร์ของเมาส์ (รูปที่ 9) สิ่งนี้จะสร้างห่วงโซ่จลนศาสตร์แบบผกผันด้วยตัวควบคุม IK ซึ่งจะระบุด้วยลักษณะของเส้นที่ทอดยาวจากด้านบนของต้นขาถึงเท้าและเป้าเล็ง (นี่คือสิ่งที่เรียกว่าวัตถุเป้าหมาย ไอเคเป้าหมาย) ที่จุดอ้างอิงเอฟเฟกเตอร์ (รูปที่ 10) หากคุณขยับเป้าเล็ง คุณจะเห็นว่าขาขยับ งอ และหมุนเพื่อให้จุดอ้างอิงของเท้าอยู่ตรงกลางของเป้าเล็งเสมอ แต่ตัวเท้าเองไม่เคลื่อนไหวสัมพันธ์กับขาส่วนล่าง (รูปที่ 11) ). พยายามทำให้การเคลื่อนไหวที่คล้ายกันเคลื่อนไหวโดยคลิกที่ปุ่ม อัตโนมัติสำคัญเปิดใช้งานเฟรมที่ 50 ลากเป้าเล็งไปด้านหลังเล็กน้อย จากนั้นในเฟรมที่ 100 กลับไปที่ ตำแหน่งเริ่มต้นและปิดโหมด การสร้างอัตโนมัติกุญแจ เล่นภาพเคลื่อนไหวแล้วคุณจะเห็นการจำลองการเดินที่ง่ายมาก (รูปที่ 12) แน่นอนว่ายังมีหนทางอีกยาวไกลก่อนที่จะเดินจริงๆ แต่เราจะจำกัดตัวเองไว้เท่านี้ก่อนแล้วจึงกลับไปสู่ ปัญหานี้ในบทเรียนหน้าหนึ่ง เราจะพูดถึงการสร้างลำดับชั้นโดยใช้ กระดูก.

กลับไปที่ฉากการทำงานโดยที่คทาบันทึกไว้ในดิสก์แล้วลองทดลองตั้งค่าพารามิเตอร์ร่วมสักหน่อย เลือกวัตถุรูทจากเมนู แอนิเมชั่น=>ไอเคนักแก้ปัญหา(ภาพเคลื่อนไหว=>โซลูชั่น IK) เลือกคำสั่ง เอชดีตัวแก้ปัญหาและชี้เมาส์ไปที่เอฟเฟกต์ส่วนท้าย (นั่นคือวัตถุ เฮดรา 01) เลือกวัตถุ เฮดรา 01 เลื่อนอีกครั้งในทิศทางใดทิศทางหนึ่งแล้วดูว่าผลลัพธ์จะสมจริงมากขึ้น (รูปที่ 13) เลือกวัตถุ ChamferCyl 01 และเปิดบุ๊กมาร์ก ไอเคแผง ลำดับชั้น- โดยค่าเริ่มต้น พารามิเตอร์สำหรับมันคือ เลื่อนข้อต่อช่องทำเครื่องหมายที่ปิดใช้งาน คล่องแคล่วสัมพันธ์กับทั้งสามแกนและเปิดใช้งานสำหรับพารามิเตอร์ หมุนเวียนข้อต่อ(รูปที่ 14) ซึ่งหมายความว่าวัตถุนี้สามารถหมุนได้ในทางใดทางหนึ่ง แต่ห้ามไม่ให้เคลื่อนที่สัมพันธ์กับแกนใด ๆ ตัวอย่างเช่น ยกเลิกข้อจำกัดในการเลื่อนที่สัมพันธ์กับแกน ซีโดยการเปิดช่องทำเครื่องหมาย คล่องแคล่วในส่วน ซีแกน, - หลังจากนี้ตำแหน่งและการวางแนวของวัตถุ ChamferCyl 01 จะแตกต่างไปจากเดิมอย่างสิ้นเชิงเมื่อเอนด์เอฟเฟกต์เคลื่อนที่ (รูปที่ 15 และ 16) คืนข้อจำกัด โปรดทราบว่าแม้ว่า ขีดจำกัดที่กำหนดไว้เพื่อเลื่อนการเคลื่อนที่ของวัตถุบางส่วน ChamferCyl 01 ยังคงเกิดขึ้น เนื่องจากข้อจำกัดไม่ได้ถูกตั้งค่าโดยตรงบนอ็อบเจ็กต์ แต่อยู่ที่การเชื่อมต่อระหว่างกัน ( ข้อต่อ) นั่นคือบนข้อต่อ (ถ้าเราวาดความคล้ายคลึงกับแขนขาของมนุษย์) ลองตั้งค่าข้อจำกัดในการหมุนวัตถุด้วย ChamferCyl 01 สัมพันธ์กับทั้งสามแกน ซึ่งจะช่วยให้สามารถกำหนดตำแหน่งและการวางแนวได้อย่างเข้มงวด ของวัตถุชิ้นนี้ในขณะที่องค์ประกอบอื่นๆ ทั้งหมดของวงจร IK จะยังคงปราศจากข้อจำกัดใดๆ เกี่ยวกับการหมุนและการเลื่อน (รูปที่ 17)

ข้าว. 14. การปรากฏครั้งแรกของม้วนหนังสือ ข้อต่อเลื่อนและ ข้อต่อหมุนสำหรับวัตถุ ChamferCyl 01

การตั้งค่าขีดจำกัดข้อจำกัด

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

เลือกกระบอกสูบด้านล่างและกำหนดวงจรให้กับคอนโทรลเลอร์ สวัสดีตัวแก้ปัญหาโดยใช้คำสั่ง แอนิเมชั่น=>ไอเคนักแก้ปัญหา=>สวัสดีตัวแก้ปัญหาและระบุกระบอกสูบด้านบนเป็นเอนด์เอฟเฟกต์ เลือกกระบอกสูบด้านบนและบนแท็บ ไอเคแผง ลำดับชั้นในสกรอลล์ หมุนเวียนข้อต่อลบช่องทำเครื่องหมาย คล่องแคล่วทั้งสามขวานและในม้วนหนังสือ เลื่อนข้อต่อเปิดใช้งานช่องทำเครื่องหมาย คล่องแคล่วสำหรับแกน ซี- ดำเนินการที่คล้ายกันสำหรับกระบอกสูบกลางและสำหรับกระบอกสูบด้านล่าง ห้ามมิให้มีการเปลี่ยนรูปแบบข้อต่อรูปตัว S ทุกประเภท หลังจากนี้ ให้ลองย้ายกระบอกสูบด้านบนขึ้นและลง - หลังจากตั้งค่าการอนุญาตแล้ว กระบอกสูบจะเคลื่อนที่สัมพันธ์กับแกน ซี(รูปที่ 20) และสามารถเลื่อนขึ้นลงได้ไม่จำกัดโดยไม่มีข้อจำกัดใดๆ ตอนนี้เรามาตั้งค่าขีดจำกัดของกระบอกสูบสำหรับการเคลื่อนที่ตามแนวแกนกัน ซีเพื่อให้กระบอกด้านบนถูกจุ่มลงในอันตรงกลางก่อนแล้วจึงจุ่มอันกลางไว้ที่อันล่าง นั่นคือผลลัพธ์ที่ได้ควรเป็นการเลียนแบบท่อพับ (เช่นกล้องโทรทรรศน์) ง่ายที่สุดในการเลือกขีดจำกัดที่เหมาะสมด้วยการควบคุมขีดจำกัดด้วยภาพ ซึ่งสามารถทำได้โดยการซูมเข้าและออกด้วยเมาส์ขณะกด ปุ่ม Ctrlค่าที่สอดคล้องกันในฟิลด์ที่อยู่ทางด้านขวาของฟิลด์อินพุต (โดยยังไม่ได้เปิดใช้งานช่องทำเครื่องหมาย จำกัด- ในกรณีนี้ สถานะปัจจุบันกระบอกสูบจะแสดงทันทีในวิวพอร์ตที่ใช้งานอยู่ เลือกกระบอกสูบด้านบนและด้วยวิธีนี้ (นั่นคือ การเปลี่ยนพารามิเตอร์ในขณะที่กดปุ่ม Ctrl ค้างไว้) ตรวจสอบให้แน่ใจว่าตำแหน่งเริ่มต้น (นั่นคือ เมื่ออยู่ในตำแหน่งเดิม) ตรงกับค่า จากเท่ากับ 30 และสุดท้าย (เมื่อกระบอกสูบนี้จุ่มลงในกระบอกสูบล่างจนสุด) - ตามค่า ถึงเท่ากับ 0 ในทำนองเดียวกัน ให้เลือกค่าของข้อจำกัดสำหรับกระบอกกลาง ซึ่งสำหรับงานที่ทำอยู่จะเหมือนกันทุกประการ เปิดใช้งานช่องทำเครื่องหมายที่เหมาะสม จำกัด(รูปที่ 21) และคุณจะเห็นว่าเมื่อขยับกระบอกสูบด้านบน "กล้องส่องทางไกล" ของเราจะพับตามที่ตั้งใจไว้ (รูปที่ 22) บันทึกฉากการทำงานของคุณลงในไฟล์ เคลื่อนไหวการเคลื่อนไหวของกระบอกสูบ: เปิดใช้งานโหมด รุ่นอัตโนมัติปุ่มต่างๆ ลากแถบเลื่อนไปยังเฟรมสุดท้าย เลื่อนกระบอกสูบด้านบนเพื่อให้จมอยู่ในเฟรมด้านล่างอย่างสมบูรณ์ และปิดโหมดการสร้างคีย์อัตโนมัติ บันทึกฉากลงในไฟล์ (เราจะต้องใช้ในภายหลัง)

ข้าว. 21. รูปลักษณ์สุดท้ายของสกรอลล์ ข้อต่อเลื่อนสำหรับกระบอกสูบบนและกลาง

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

Root Motion - มันทำงานอย่างไร

จลนศาสตร์ผกผัน (เฉพาะสำหรับ รุ่นโปร)

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

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

ในการตั้งค่า IK สำหรับตัวละคร โดยทั่วไปคุณจะมีวัตถุวางอยู่บนพื้นที่ที่ตัวละครโต้ตอบด้วย จากนั้นคุณตั้งค่า IK โดยใช้สคริปต์ โดยเฉพาะการใช้ฟังก์ชัน Animator เช่น SetIKPositionWeight , SetIKRotationWeight , SetIKPosition , SetIKRotation , SetLookAtPosition , bodyPosition , การหมุนร่างกาย

ในภาพประกอบด้านบน เราแสดงตัวละครที่กำลังยกวัตถุทรงกระบอก เราทำเช่นนี้ได้อย่างไร?

เราเริ่มต้นด้วยตัวละครที่มีอวตารที่ถูกต้อง

ถัดไปสร้าง Animator Controller โดยมีภาพเคลื่อนไหวอย่างน้อยหนึ่งรายการสำหรับตัวละคร จากนั้นในบานหน้าต่าง Layers ของหน้าต่าง Animator ให้คลิกไอคอนการตั้งค่าฟันเฟืองของ Layer และทำเครื่องหมายในช่อง IK Pass ในเมนูที่ปรากฏขึ้น


ตรวจสอบให้แน่ใจว่า Animator Controller ได้รับการกำหนดให้กับส่วนประกอบ Animator ของตัวละคร:

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

การใช้ UnityEngine; ใช้ระบบ; ใช้ System.Collections; IKControl คลาสสาธารณะ: MonoBehaviour ( protectedอนิเมเตอร์ อนิเมเตอร์ - บูลสาธารณะ ikActive = false;

สาธารณะแปลง rightHandObj = null;

สาธารณะแปลง lookObj = null;

จลนศาสตร์ผกผันเป็นพื้นฐานในการสร้างแอนิเมชันของตัวละคร มันทำงานแตกต่างอย่างสิ้นเชิงจากวิธีการทำงานของจลนศาสตร์โดยตรง - เด็ก ๆ ตั้งวัตถุแม่ให้เคลื่อนไหว ผู้สืบทอดที่ทำให้เกิดการเปลี่ยนแปลงของวัตถุอื่นตามกฎของจลนศาสตร์ผกผันจะเรียกว่าเอฟเฟกต์ (เอฟเฟกต์) หากอยู่ตรงกลางของห่วงโซ่ลำดับชั้นหรือเอฟเฟกต์ปลาย (EndEffector) หากเป็นวัตถุสุดท้าย ของห่วงโซ่นี้ ห่วงโซ่ลำดับชั้นทั้งหมดถูกจัดการผ่านเอฟเฟกต์ ในกรณีนี้การเปลี่ยนแปลงของเอฟเฟกต์สุดท้ายทำให้มั่นใจได้ว่าการเปลี่ยนแปลงของวัตถุทั้งหมดของห่วงโซ่ลำดับชั้นตามกฎของจลนศาสตร์ผกผันและการเปลี่ยนแปลงของเอฟเฟกต์เพียงอย่างเดียวนำไปสู่ความจริงที่ว่าตำแหน่งของวัตถุที่อยู่ในลำดับชั้นด้านล่าง การเปลี่ยนแปลงตามกฎของจลนศาสตร์โดยตรงและวัตถุที่มีลำดับชั้นสูงกว่า - ตามกฎของจลนศาสตร์ผกผัน

ดังตัวอย่าง ให้เปิดไฟล์ โต๊ะ_แลมป์3-1.สูงสุด- มีการสร้างห่วงโซ่ของออบเจ็กต์แบบลำดับชั้นแล้วที่นี่ หากต้องการดูให้รันคำสั่ง เลือกโดยชื่อและในหน้าต่าง เลือกจากฉากขยายโครงสร้างของวัตถุ ในกรณีนี้ เอฟเฟกต์สุดท้ายของห่วงโซ่ลำดับชั้นคือออบเจ็กต์ตัวสะท้อนแสงที่ต่ำที่สุดในลำดับชั้น

ตั้งค่าโหมดจลนศาสตร์ผกผัน เมื่อต้องการทำเช่นนี้บนแผงควบคุม ลำดับชั้น(ลำดับชั้น) เปิดบุ๊กมาร์ก ไอเค(จลนศาสตร์ผกผัน) แล้วคลิกปุ่ม ไอเคแบบโต้ตอบ(จลนศาสตร์ผกผันเชิงโต้ตอบ) เลือกวัตถุสนับสนุนและย้ายไปด้านข้าง วัตถุอื่นๆ ทั้งหมดจะเคลื่อนที่ไปพร้อมกับมันในลักษณะเดียวกัน ตอนนี้เลือกวัตถุ Lever02 แล้วเลื่อนไปในทิศทางใดก็ได้ การย้ายจะทำให้ตำแหน่งของออบเจ็กต์อื่นๆ ทั้งหมดเปลี่ยนแปลง รวมถึงออบเจ็กต์ Support ซึ่งอยู่ในลำดับชั้นสูงสุด ในกรณีนี้ ตำแหน่งของวัตถุที่อยู่ในลำดับชั้นด้านล่างวัตถุที่ถูกย้าย (ในกรณีนี้คือวัตถุ Hinge03, Lever03, Reflector) จะเปลี่ยนตามกฎของจลนศาสตร์โดยตรง และวัตถุที่มีลำดับชั้นที่สูงกว่า (Hinge02, Lever01, Hinge01, Support) - ตามกฎของจลนศาสตร์แบบผกผัน

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

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

เลือกวัตถุ Hinge01 ไปที่แท็บ ลำดับชั้น(ลำดับชั้น) | ไอเค(จลนศาสตร์ผกผัน) และเปิดใช้งานคำสั่ง แบบโต้ตอบไอเค(จลนศาสตร์ผกผันเชิงโต้ตอบ) ในการเลื่อน วัตถุพารามิเตอร์(ตัวเลือกวัตถุ) ทำเครื่องหมายในช่อง เทอร์มิเนเตอร์- ย้ายวัตถุ Lever02 ไปในทิศทางใดก็ได้ ในกรณีนี้ วัตถุ Hinge01 และวัตถุ Support หลักจะยังคงไม่เคลื่อนไหว (รูปที่ 1.1)

ข้าว. 1.1. Hinge01 กำหนดให้เป็นตัวจำกัด

ความต่อเนื่องคุณจะพบบทเรียนในหนังสือของ Gorelik A.G. -

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

YouTube สารานุกรม

    1 / 3

    จลนศาสตร์โดยตรงและผกผันใน 3DS Max

    Anime Studio Pro 10, 11(Moho Pro) - วิธีเชื่อมต่อจลนศาสตร์ผกผันกับตัวละครกระดูก

    จลนศาสตร์ผกผันของกระดูกเต็มรูปแบบใน Anime Studio Pro (Moho Pro) / จลนศาสตร์ผกผันแบบเต็ม

    คำบรรยาย

คำอธิบาย

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

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

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

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

การใช้งานและตัวอย่าง

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

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

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

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

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

หมายเหตุ

ลิงค์ภายนอก

แหล่งที่มาภาษาอังกฤษ

  • ฮิวโก้ เอเลียส.ผกผัน Kinematics เก็บถาวรเมื่อ 13 สิงหาคม 2554
  • ฮิวโก้ เอเลียส.ผกผัน จลนศาสตร์ - ปรับปรุง วิธีการ (ภาษาอังกฤษ) freespace.virgin.net. สืบค้นเมื่อ 5 มิถุนายน 2552 สืบค้นเมื่อ 13 สิงหาคม 2554
  • หุ่นยนต์ ผกผัน จลนศาสตร์ (อังกฤษ) . www.learnaboutrobots.com. สืบค้นเมื่อ 5 มิถุนายน 2552 สืบค้นเมื่อ 13 สิงหาคม 2554
  •  ตัวละคร ในวิดีโอเกม เกม เคลื่อนไหว  ได้อย่างลื่นไหลได้อย่างไร (ภาษาอังกฤษ) . สืบค้นเมื่อ 5 มิถุนายน 2552 สืบค้นเมื่อ 13 สิงหาคม 2554
  • มาร์ติน จอห์น เบเกอร์. 3D ทฤษฎี - จลนศาสตร์ - ข้อต่อ ผกผัน จลนศาสตร์ (ภาษาอังกฤษ) www.euclideanspace.com. สืบค้นเมื่อ 5 มิถุนายน 2552 สืบค้นเมื่อ 13 สิงหาคม 2554
  • ลิเดีย อี. คาวารากี.โปรตีน ผกผัน จลนศาสตร์ และ the ห่วง ปิด ปัญหา cnx.org สืบค้นเมื่อ 5 มิถุนายน 2552 สืบค้นเมื่อ 13 สิงหาคม 2554
  • ดิเอโก พาร์ค.คอมพิวเตอร์ กราฟิก (อังกฤษ) diegopark.googlepages.com สืบค้นเมื่อ 5 มิถุนายน 2552 สืบค้นเมื่อ 13 สิงหาคม 2554
  • บิล แบ็กซ์เตอร์.