Saya ingin membuat trek balap 3 dimensi di sekitar spline yang menjelaskan bentuknya. Ini video ilustratif .
Jalurnya seharusnya berupa terowongan tanpa akhir yang menyapu sepanjang spline 3D, dengan beberapa rintangan dilemparkan. Ide terbaik saya sejauh ini adalah untuk melompati bentuk lingkaran di sepanjang spline.
Saya juga ingin beberapa petunjuk tentang bagaimana mengelola geometri yaitu cara membuatnya dari operasi loteng, mengelola 'siklus hidup' dalam memori, tabrakan dan tekstur.
opengl
3d
racing
procedural
Valentin Galea
sumber
sumber
Jawaban:
Saya tidak yakin bahasa apa yang Anda gunakan, tetapi ada contoh ekstrusi mesh prosedural untuk Unity3D yang terletak di sini:
http://unity3d.com/support/resources/example-projects/procedural-examples
Saya yakin Anda dapat melihat kode dan mengolahnya untuk situasi Anda.
EDIT: Saya sedang mengerjakan game yang menggunakan sistem rel prosedural prosedural seperti yang Anda mulai tetapi dalam C # di Unity3d. Saya akan memberi Anda gambaran tentang bagaimana saya membuat ekstrusi rel saya berdasarkan jalur Bezier Cubic jadi meskipun mesh rel secara prosedural dihasilkan, itu didasarkan pada jalur Bezier yang saya tentukan sebelumnya di editor. Ini akan menjadi seperti editor level dalam kasus gim Anda, dalam kasus saya, ini mendesain tabel pinball. Di bawah ini adalah contoh bagaimana saya melakukannya:
1.) Bangun / Temukan dan Terapkan Bezier Path Class. Ini akan memberi Anda sumber data untuk ekstrusi mesh Anda. Ada satu di C # di sini yang dapat Anda porting ke c ++.
http://forum.unity3d.com/threads/32954-Waypoints-and-constant-variable-speed-problems?p=213942
2.) Setelah Bezier Path dibuat, titik data dari jalur ini dijadikan sampel. Ini dapat dilakukan melalui metode Interp pada kelas yang disediakan di atas. Ini akan memberi Anda daftar / array poin Vector3 di sepanjang jalur Bezier.
3.) Buat kelas pembantu untuk mengkonversi data jalur Vector3 Bezier dari langkah 2. Dalam hal ini, saya memiliki kelas sederhana yang disebut ExtrudedTrailSection seperti yang didefinisikan di bawah ini:
4.) Iterasi melalui data sampel Vector3 Anda dan konversikan ke array ExtrudedTrailSections yang memasoknya dengan data sampel dan matriks dasar yang akan menjadi lokasi root dari mesh yang diekstrusi.
Matrix4x4 worldToLocal = rootTransform.worldToLocalMatrix;
6.) Sekarang Anda memiliki array Matrix4x4 [] dan dapat mengusir mesh tetapi pertama-tama kita membutuhkan mesh referensi untuk mengusir dari. Saya memiliki kelas utilitas yang akan membuat permukaan mata bundar yang akan kami suplai ke metode ekstrusi mesh.
7.) Temukan pusat data ini:
8.) Sekarang kami memiliki data tepi dan tengah untuk mesh wajah radial, Anda dapat membuat objek mesh menggunakan data Anda. Vertex terakhir dalam mesh adalah titik pusat yang kami hitung. Jala akhir hanyalah wajah yang disuplai ke metode ekstrusi jala yang saya berikan contoh dalam kelas ekstrusi jala prosedural paket Unity. Sekali lagi, ini adalah metode saya dan jelas Anda harus memberi makan data ini ke OpenGL. Jika Anda memiliki perpustakaan utilitas 3d yang Anda gunakan atau dapat menulis kelas mesh Anda sendiri, mungkin akan bekerja lebih baik untuk menghasilkan mesh ekstrusi akhir Anda karena data ini tidak benar-benar dibutuhkan oleh OpenGL untuk rendering. Mesh wajah ini hanya digunakan sebagai referensi untuk ekstrusi mesh.
9.) Temukan tepi luar mesh melingkar sesuai kebutuhan dengan metode ekstrusi mesh. Sekali lagi, kode ini disediakan dalam paket kesatuan.
10.) Masukkan semua data ini ke metode Mesh Extrusion ..
Hasil akhir dalam kasus saya terlihat seperti ini ..
Semoga berhasil, gim Anda terlihat sangat keren! Beritahu saya jika Anda mengetahuinya?
Membuang
sumber