Untuk editor medan 3D 'klasik', langkah-langkahnya bisa berupa:
Hasilkan sebuah jaring (misalnya kisi kotak, setiap kotak yang terbuat dari dua segitiga), semua simpul dibagi di antara segitiga (sehingga hanya ada satu normal per persimpangan).
Ini harus dibuat 3DMesh dan ditampilkan di program Anda.
Buat alat untuk menaikkan dan menurunkan bagian-bagian kisi (lebih kecil dan lebih besar) (Anda perlu menghitung di mana pada jala kursor mouse dan memodifikasi simpul jerat, tetapi hanya naik dan turun).
Buat tekstur besar (seperti 1024x1024x4 atau lebih baik) dan tekstur dengan apa yang disebut splat-map:
Memungkinkan untuk melukisnya (dengan R, G, B ATAU Alpha, misalnya bukan merah muda) dan untuk memilih tekstur yang menggantikan warna-warna primer jelek (Merah, Biru, Hijau, Alpha), atau lebih lagi, diwakili oleh mereka:
Shader (yang perlu Anda buat) harus melipatgandakan tekstur yang bagus (katakanlah batu, rumput, ...) dengan intensitas dalam splatmap (yang jelek) dan kemudian campur bersama-sama keseluruhan sehingga tampak, misalnya (dengan suka hanya 2 warna), seperti ini:
Maaf untuk gambar besar, saya kocok ini di tempat kerja ...
Hal pertama yang harus jelas tentang struktur data medan Anda, dan apa yang Anda inginkan dari editor. Apakah ini jala? Deretan ketinggian? Semacam sistem voxel gaya Minecraft? Apakah Anda harus dapat menambahkan fitur medan jala seperti pohon dan bangunan? Secara manual, otomatis atau keduanya? Saya bisa melanjutkan, tetapi Anda mendapatkan idenya.
Editor medan dasar tidak sulit untuk ditulis, tetapi detailnya akan sangat bervariasi tergantung pada permainan yang Anda buat, dan dengan demikian jenis medan yang ingin Anda buat.
sumber
Ini sebagian besar merupakan tindak lanjut dari tanggapan Valmond, tetapi sepertinya tidak cukup pendek untuk ditambahkan sebagai komentar.
Setelah Anda membuat editor dasar, Anda mungkin ingin bereksperimen dengan membuat peta ketinggian sepenuhnya pada GPU. Ini benar-benar opsional, tetapi ini adalah cara yang baik untuk melepas beban kerja ke GPU untuk medan yang terus berubah. Valmond telah menyebutkan pemilahan tekstur yang dilakukan pada pixel shader, tetapi vertex shader dapat digunakan juga, menggunakan pencarian tekstur untuk menaikkan dan menurunkan simpul di grid. Berikut adalah tutorial tentang cara menyelesaikan ini dengan vertex shader. Hal-hal non-shader adalah spesifik C # dan XNA, tetapi hal-hal penting adalah dalam kode shader.
Dalam hal ini, kode Anda di sisi CPU hanya akan berurusan dengan memodifikasi tekstur abu-abu yang disimpan dalam memori. Kisi mesh Anda tetap rata, simpul tidak diperbarui oleh CPU. Setiap kali tekstur diubah, tekstur baru dapat diteruskan ke GPU.
Perlu diingat bahwa tidak semua model shader mendukung pengambilan sampel tekstur pada vertex shader (misalnya dalam HLSL Anda memerlukan setidaknya shader model 3.0).
sumber
Anda dapat melihat Ogre's ETM http://www.ogre3d.org/addonforums/viewforum.php?f=16 , harus memberi Anda beberapa ide. Artifex Terra didasarkan pada itu jika Anda ingin melihatnya beraksi.
sumber