Di mana untuk memulai ketika membangun editor terain 3D? [Tutup]

22

Saya sedang mencari untuk membangun (untuk memulai) alat sederhana, yang dapat menaikkan, menurunkan, menghaluskan dan memberi tekstur medan.

Jadi, apa saja hal-hal yang harus saya lalui untuk membuat editor medan seperti itu?

Dan mungkin ada sumber daya berharga yang tersedia pada subjek?

Ya, lupa disebutkan, bahwa saya tertarik dengan editor medan 3D.

joltmode
sumber

Jawaban:

24

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). masukkan deskripsi gambar di sini

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: masukkan deskripsi gambar di sini

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: masukkan deskripsi gambar di sini

Maaf untuk gambar besar, saya kocok ini di tempat kerja ...

Valmond
sumber
Ah, ini membuatnya sedikit lebih jelas. Secara teoritis, setelah jala 3D itu hanya vertikal resposisi (atas / bawah) dan tekstur pada contoh ini Anda telah melakukan cara "splatmap", setelah itu shader menyerupai itu menjadi medan "3D"?
joltmode
1
Benar untuk mesh 3D. Shader tidak melakukan sesuatu yang istimewa dengan mesh (vertex shader), pekerjaan besar adalah di fragmen-shader ("pixel shader") di mana pencarian texel dari splatmap memberikan berapa banyak rumput, batu, dll pixel terakhir harus mendapatkan (Anda tentu saja juga dapat memiliki tekstur 'dasar', seperti batu misalnya yang selalu di 100% dan tekstur lainnya mendapatkan percikan ke sana).
Valmond
6

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.

SimonW
sumber
Nah, mesh / array dan ketinggian / vox dll hanyalah cara untuk menyimpan data yang terkait, saya lebih tertarik, tentang cara menulis alat untuk mengisi data ini. Sebenarnya, saya sama sekali tidak tahu, bagaimana editor medan terlihat "di belakang layar". Saya dapat memujanya, tetapi hanya dengan caranya sendiri, saya yakin ada beberapa pedoman yang harus saya ikuti ...
joltmode
2
-1. Ini sepertinya bukan jawaban bagi saya. Anda mengajukan beberapa pertanyaan, yang lebih cocok sebagai komentar.
bummzack
5

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).

ChrisC
sumber
0

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.

Johann
sumber
2
Saya sarankan Anda menggabungkan jawaban Anda dan menghapus yang tidak digunakan.
joltmode
Untuk wilayah yang dibuat / dimanipulasi GPU, lihat artikel Scape Gilliam de Carpentier, bacalah sangat informatif tentang masalah ini. decarpentier.nl/scape-render
Johann
Seperti yang sudah disarankan Tom, artikel Scape mungkin telah menjadi referensi yang menarik untuk membuat dan merender medan. Tetapi karena saran itu, saya telah memposting artikel Scape lain yang bahkan lebih relevan dengan topik ini, yang sepenuhnya mencakup pipa pengeditan berbasis kuasnya. Jadi saya pikir saya akan memberi tahu Anda. www.decarpentier.nl/scape-brush-pipeline