Memindahkan Obyek sepanjang Kurva sambil Memutarnya

11

Saya ingin memindahkan objek di sepanjang kurva . Pada titik-titik tertentu pada kurva, saya berharap objek mengubah kecepatan dan memutar dirinya di sepanjang porosnya.

Bayangkan sebuah pesawat terbang ke suatu tujuan. Ini memiliki jalur yang harus diikuti, ditambah, ia menyesuaikan kecepatan dan orientasinya sepanjang jalan (pos, empulur, bank).

Bolehkah saya meminta informasi startup tentang hal berikut:

  • Apa jenis kurva digunakan untuk lancar interpolasi obyek
  • Rumus apa yang digunakan untuk interpolasi yang andal, di mana saya bisa mengontrol kecepatan oject bergerak, dan transisi antara simpul kurva akan mulus
  • Informasi apa yang harus diekspor dari aplikasi pembuat 3D
  • Haruskah saya menggunakan angka empat slerp () untuk ini?

Jika Anda tahu tentang buku yang membahas topik ini secara efisien , itu akan sangat membantu. Terima kasih.

Bunkai.Satori
sumber

Jawaban:

7

Untuk kurva gerak, saya sarankan menggunakan kurva Hermite. Anda cukup memberikan titik awal / kecepatan dan titik akhir / kecepatan, dan itu menciptakan kurva yang bagus dan halus antara keduanya. Gunakan titik akhir / kecepatan dari pasangan poin pertama sebagai titik awal / kecepatan pasangan poin berikutnya dan Anda memiliki kurva panjang dan berliku yang mulus.

Ini dengan sempurna menangani persyaratan untuk mengatur kecepatan: Anda memberikan daftar titik waktu dengan kecepatan yang Anda pilih, dan itu memberi Anda posisi yang diinterpolasi dan nilai kecepatan dengan mulus. Jika Anda ingin menggunakannya, semua yang Anda butuhkan untuk mengekstrak dari aplikasi 3D authoring adalah poin dan kecepatan di jalur yang Anda inginkan. Anda juga dapat membuat mereka dalam runtime, mungkin berdasarkan input pengguna.

Untuk menyesuaikan orientasi, Anda memiliki sejumlah opsi. Jika pesawat akan selalu menunjuk ke arah mana ia pergi (yang merupakan kasus yang masuk akal), Anda dapat menggunakan vektor kecepatan interpolasi dari kurva Hermite untuk menemukan ke mana kapal Anda harus mengarah. Jika Anda tahu vektor atas (bergerak di bidang, atau Anda tahu arah mana yang harus naik), Anda dapat menghitung sumbu ketiga dengan lintas (depan, atas) dan di sana Anda memiliki orientasi.

Jika Anda ingin orientasi "goyah" entah bagaimana sehingga pesawat kadang-kadang menyimpang dari arah depan di jalan, Anda dapat menggunakan arah depan sebagai arah yang diinginkan, dan berturut-turut lakukan satu langkah slerp antara orientasi saat ini dan orientasi yang diinginkan.

Jika Anda ingin orientasi khusus yang tidak ada hubungannya dengan jalur, tentu saja Anda dapat menyediakan daftar angka orientasi untuk ini. Kemudian poin Anda menjadi (titik, kecepatan, angka empat). Kemudian Anda dapat menggunakan slerp antara dua angka empat berturut-turut untuk mengatur orientasi Anda di sepanjang jalan. Jangan lupa bahwa slerp adalah metode interpolasi linier . Namun, biasanya harus baik-baik saja. Jika Anda menemukan bahwa rotasi tidak cukup mulus pada lapisan, Anda dapat mencoba menginterpolasi daftar angka empat dengan kurva Bezier, seperti dijelaskan di sini pada bagian 7.

Berikut adalah beberapa kode sumber yang dapat membantu Anda memulai. Ini memiliki sejumlah teknik interpolasi halus untuk daftar angka empat (skuad, bezier, dll).

Beri tahu saya jika Anda memiliki pertanyaan!

Gazihan Alankus
sumber
+1 - Terima kasih, jawaban Anda pada dasarnya mencakup segalanya. Itu menjawab setiap pertanyaan yang saya ajukan, plus, Anda memberikan materi lebih lanjut untuk dipelajari. Sekarang, saya punya cukup bahan untuk memulai. Karena itu, saya tidak melihat alasan, untuk tidak menandainya sebagai Jawaban yang Diterima .
Bunkai.Satori
@ Bunkai.Satori terima kasih, senang bisa membantu :) Saya akan senang melihat apa yang Anda buat pada akhirnya.
Gazihan Alankus