วิธีการทั่วไปของการเคลื่อนไหว 'เคลื่อนไหว' สำหรับการเคลื่อนไหวรอบการเดิน


13

ฉันเพิ่งโพสต์สิ่งนี้ในฟอรัมของศิลปิน Blender ก่อนที่จะรู้ตัวว่าฉันอาจได้รับการตอบสนองที่ดีขึ้นจากผู้ชมเฉพาะกลุ่มการพัฒนาเกมมากขึ้น มันเป็นเหตุผลที่ถูกต้อง :)

ฉันเป็นโปรแกรมเมอร์ที่พยายามทำให้ตัวละครเดินในโครงการเกมโดยใช้ Ogre ฉันได้สร้างวงจรการเดินเรียบง่ายใน Blender และส่งออกไปยัง Ogre และเล่นได้ดี โดยดีฉันหมายความว่ามันใช้งานได้ แต่มีการเลื่อนเท้าแย่มาก นี่เป็นเพราะฉันเพิ่งเคลื่อนไหวการเดินในสถานที่ (ที่จุดกำเนิด) ใน Blender และแน่นอนฉันไม่ทราบว่า "ความเร็วในการเดิน" ที่สอดคล้องกับดังนั้นเมื่อฉันย้ายตัวละครในเกมการเคลื่อนไหวไม่ได้ ' ไม่จำเป็นต้องสอดคล้องกับการเคลื่อนไหวของเท้าในภาพเคลื่อนไหว

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


1
นี่คือการสนทนากับคำอธิบายที่ยอดเยี่ยมของแนวคิด: blog.wolfire.com/2011/08/…
เบ็น

คำตอบ:


10

มีสองวิธีในการทำเช่นนี้: การเคลื่อนไหวของรากหรือ "ในรหัส"

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

Mixamo เป็นตัวอย่างที่ดีกับการควบคุมการเคลื่อนไหวของรากด้วย Unity มีวิดีโอของที่นี่: http://vimeo.com/12052874

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

ตอนนี้ทำ "ในรหัส" เป็นเรื่องง่ายจากด้านการเขียนโปรแกรมของสิ่งต่าง ๆ สิ่งที่ฉันแนะนำให้ทำคือการทำให้หน่วยของคุณทั้งหมดสอดคล้องกัน ตัวอย่างเช่น 1 หน่วยใน Maya และเกมของคุณคือ 1 เมตร จากนั้นคุณทำให้ศิลปินของคุณเคลื่อนไหวการเคลื่อนไหวของตัวละคร (พร้อมด้วยการเคลื่อนไหวไปข้างหน้า) ใช้เพื่อคำนวณความเร็วของภาพเคลื่อนไหวและส่งออกภาพเคลื่อนไหวโดยไม่ใช้ความเร็วไปข้างหน้า ใช้วิธีนี้เพื่อดูว่าจะเล่นอนิเมชั่นเร็วแค่ไหน ดังนั้นหากภาพเคลื่อนไหวการเดินด้วยความเร็ว 1x คือ 5 m / s และคุณต้องการให้ผู้เล่นวิ่งที่ 7 m / s คุณเพียงแค่เล่นที่ 7/5 = 1.4x speed หากแบบจำลองของคุณมีการขยายขึ้นหรือลดลงทวีคูณอัตราการเล่นภาพเคลื่อนไหวด้วยค่าผกผันของสเกล เพื่อนความสูงครึ่งหนึ่งจะต้องเดินเร็วเป็นสองเท่าเพื่อย้ายอัตราเดียวกับผู้ชายระดับ 1x


ฉันไม่เห็น Root Motion Computer จาก Mixamo และไม่เคยได้ยินชื่อมันเลยขอบคุณสำหรับลิงก์และคำอธิบาย! ดังนั้นโดยทั่วไปมันเป็นอย่างที่ฉันคิดไม่ว่าจะเป็นการเคลื่อนไหวอย่างชัดเจนหรือสร้างอัตโนมัติและทั้งในเวลาที่สร้างหรือในขณะใช้งานจริง ฉันเดาว่าฉันจะต้องเขียนโค้ดนี้ด้วยตัวเองในสคริปต์ผู้ส่งออก สิ่งหนึ่งที่ฉันสับสนในขณะนี้คือการเคลื่อนไหวที่เปลี่ยนแปลงไปตามวัฏจักรเดียว - คุณจะขับมันออกจากเกมได้อย่างไรบนโลก? "ย้ายที่ 5m / s" ตอนนี้หมายถึงอย่างอื่น ... และการเปลี่ยนแปลงทิศทางจะเป็นฝันร้ายสำหรับ AI! บางทีมันเป็นการดีที่สุดที่จะใช้การเคลื่อนไหว agerage?
เบ็นไฮเมอร์ส

วิ่งออกมาจากตัวละคร; ฉันจะรอสักครู่ก่อนทำเครื่องหมายว่าเป็นที่ยอมรับเพื่อรับความคิดเห็นเพิ่มเติม ขอบคุณสำหรับคำตอบ!
เบ็นไฮเมอร์ส

สำหรับการเคลื่อนไหวของรากคุณไม่ต้องควบคุมความเร็วของเครื่องเล่นโดยตรง คุณสามารถควบคุมได้เพียงอัตราการเล่นภาพเคลื่อนไหวเท่านั้นจากนั้นให้คุณควบคุมการเคลื่อนไหวของค่า z ไปข้างหน้าได้โดยตรง ตัวอย่าง 5m / s ที่ฉันให้ไว้คือวิธีการแก้ปัญหาการเลื่อนเท้าแบบดั้งเดิมซึ่งพยายามที่จะจับคู่อัตราการเล่นให้ตรงกับความเร็วที่คุณเคลื่อนไหวและสมมติความเร็วคงที่
Tetrad

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

Gah, Curse Stack Exchange สำหรับการป้อนความคิดเห็นในการพยายามที่จะเริ่มบรรทัดใหม่ ... ฉันกำลังจะพูดถึงแม้ว่าคุณจะปล่อยให้แอนิเมชั่นขับเคลื่อนการเคลื่อนไหวมันจะยังคงเป็นปัญหาสำหรับตัวละคร AI ถ้าหากพวกเขาพยายามที่จะไปถึงจุดหนึ่ง แต่อนิเมชั่นการเคลื่อนไหวของพวกเขาเซื่องซึมจากด้านหนึ่งไปอีกด้านหนึ่ง (พูดว่ามันเป็นอนิเมชั่นที่ขี้เมา) พวกเขาจะรู้ได้อย่างไรว่าต้องเผชิญกับทิศทางใด
เบ็นไฮเมอร์ส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.