Saat ini saya sedang mengerjakan generator planet prosedural OpenGL. Saya berharap untuk menggunakannya untuk RPG luar angkasa, yang tidak akan memungkinkan pemain untuk turun ke permukaan planet jadi saya telah mengabaikan apa pun yang terkait dengan ROAM. Saat ini saya sedang menggambar kubus dengan VBO dan memetakan ke bola.
Saya akrab dengan sebagian besar teknik menghasilkan peta ketinggian fraktal dan telah menerapkan versi saya sendiri perpindahan titik tengah (tidak begitu berguna dalam kasus ini, saya tahu).
Pertanyaan saya adalah, apa cara terbaik untuk menghasilkan peta ketinggian secara prosedural. Saya telah melihat libnoise yang memungkinkan saya membuat pemetaan ketinggian / tekstur yang dapat dimiringkan, tetapi sejauh yang saya bisa lihat, saya perlu membuat jaring seperti ini .
Meninggalkan ubin jelas.
Adakah yang bisa memberi tahu saya tentang rute terbaik yang harus diambil?
Masukan apa pun akan sangat dihargai.
sumber
Pemetaan ketinggian perpindahan titik tengah adalah tempat yang baik untuk memulai. OP, kenapa menurutmu itu tidak?
OP baik untuk memodelkan permukaan planet sebagai cubemap, karena setiap peta datar (misalnya proyeksi mercator) akan memiliki distorsi yang jelek dan rumit, secara matematis.
Jika saya OP, saya akan melupakan geometri planet skala besar pada awalnya. Saya akan membuat cubemap di mana setiap wajah adalah 2 ** N + 1 piksel (2,3,5,9,17,33 ...) dan setiap texel mengkodekan tinggi [0..N) di mana 0 adalah ketinggian dari parit terendah yang diharapkan dan N adalah ketinggian gunung tertinggi yang diharapkan di planet ini.
Saya kemudian akan menghitung ketinggian acak untuk delapan simpul kubus, dan menyebarkannya ke dalam enam kotak peta kubus, sehingga setiap simpul muncul tiga kali.
Saat saya secara rekursif menghasilkan ketinggian fraktal untuk titik tengah tepi, saya akan memastikan untuk menyebarkan simpul tepi wajah ke wajah lain yang berbagi.
Setelah saya selesai, saya memiliki peta kubus di mana semua tepi texel digandakan dan semua sudut texels adalah tiga kali lipat. Tidak perlu mengubahnya ke peta normal - saya akan menggunakan algoritma dalam makalah Morten Mikkelsen untuk membuat normals langsung dari heightmap saat runtime.
Saat runtime saya mungkin akan membuat quad yang mencakup proyeksi planet ke layar, dan melakukan tes persimpangan sinar-bola tunggal dalam pixel shader untuk menemukan apakah saya mengenai planet ini dan di mana. Tentu ketukan raster model bola sangat-tessellated, dan mendapat tepi halus yang bagus juga.
sumber
Derau perpindahan titik tengah, dengan perpindahan maksimum yang diskalakan dengan garis bujur absolut piksel dapat menghasilkan peta derau bola dengan cepat. Tabel warna mengambil ketinggian, kemiringan, dan sinar matahari atau bujur sebagai paramaters dapat digunakan untuk menaungi planet ini secara otomatis.
sumber