สำหรับเส้นโค้งการเคลื่อนไหวฉันขอแนะนำให้ใช้ Hermite curves คุณเพียงแค่ให้จุดเริ่มต้น / ความเร็วและจุดสิ้นสุด / ความเร็วและมันสร้างเส้นโค้งที่ดีและราบรื่นระหว่างทั้งสอง ใช้จุดสิ้นสุด / ความเร็วของจุดคู่แรกเป็นจุดเริ่มต้น / ความเร็วของจุดคู่ถัดไปและคุณมีเส้นโค้งยาวและคดเคี้ยวที่ดีที่ไร้รอยต่อ
สิ่งนี้จะจัดการกับความต้องการในการจัดการความเร็วได้อย่างสมบูรณ์แบบ: คุณให้รายการของเวลาที่มีความเร็วที่คุณเลือก หากคุณต้องการไปกับสิ่งนี้สิ่งที่คุณต้องแยกออกจากแอปพลิเคชันการเขียนสามมิติคือคะแนนและความเร็วในเส้นทางที่คุณต้องการ นอกจากนี้คุณยังสามารถสร้างพวกเขาในรันไทม์อาจขึ้นอยู่กับการป้อนข้อมูลของผู้ใช้
ในการปรับการวางแนวคุณมีตัวเลือกมากมาย หากเครื่องบินชี้ไปยังที่ที่มันเกิดขึ้นเสมอ (ซึ่งเป็นกรณีที่เหมาะสม) คุณสามารถใช้เวกเตอร์ความเร็วแบบสอดแทรกจาก Hermite curve เพื่อค้นหาตำแหน่งที่เรือของคุณควรชี้ไป หากคุณรู้ว่าเวกเตอร์ขึ้น (มันเคลื่อนที่ในระนาบหรือคุณรู้ทิศทางที่ควรจะเป็น) คุณสามารถคำนวณแกนที่สามโดยข้าม (ด้านหน้าขึ้นไป) แล้วคุณก็วางแนวของคุณ
หากคุณต้องการการวางแนว "สั่นคลอน" อย่างใดเพื่อให้เครื่องบินเบี่ยงเบนจากทิศทางด้านหน้าในเส้นทางคุณสามารถใช้ทิศทางด้านหน้าเป็นทิศทางที่ต้องการและทำ slerp หนึ่งขั้นตอนอย่างต่อเนื่องระหว่างทิศทางปัจจุบันและทิศทางที่ต้องการ
หากคุณต้องการทิศทางที่กำหนดเองที่ไม่มีส่วนเกี่ยวข้องกับเส้นทางคุณสามารถระบุรายชื่อของการปฐมนิเทศสำหรับเรื่องนี้ได้ จากนั้นคะแนนของคุณจะกลายเป็น (จุด, ความเร็ว, ควอเทอร์เนียน) จากนั้นคุณสามารถใช้ slerp ระหว่าง quaternions ต่อเนื่องสองชุดเพื่อกำหนดทิศทางของคุณไปพร้อมกัน อย่าลืมว่า slerp เป็นวิธีการแก้ไขเชิงเส้น อย่างไรก็ตามมันควรจะดี หากคุณพบว่าผลัดจะไม่เรียบเพียงพอในตะเข็บคุณสามารถลอง interpolating รายการ quaternions กับเส้นโค้ง Bezier ตามที่อธิบายที่นี่ในมาตรา 7
นี่คือซอร์สโค้ดบางตัวที่สามารถช่วยคุณเริ่มต้นใช้งาน มันมีเทคนิคการแก้ไขจำนวนมากที่ราบรื่นสำหรับรายการ quaternions (ทีม, bezier, ฯลฯ )
แจ้งให้เราทราบหากคุณมีข้อสงสัย!