Saya mengembangkan game voxel, tapi saya pikir saya menggunakan teknik yang salah. Saat ini saya menggunakan ubin datar, untuk membuat balok, dan saya pikir ada cara yang lebih baik dan lebih efisien.
Saya telah melihat permainan voxel, yang memiliki medan yang terlihat alami. Maksud saya non blocky. Permainan memiliki 4 * 4 * 4 blok per meter kubik, dan blok seperti tanah, pasir dan batu, memiliki tepi bulat, dan jenis meleleh bersama (Seperti dalam game biasa). Inilah screenshot
Bagaimana ini dicapai?
opengl
rendering
voxels
terrain-rendering
KaareZ
sumber
sumber
Jawaban:
Ini dicapai dengan interpolasi landai antara kubus dengan ketinggian berbeda.
Ketika Anda memiliki pemandangan seperti ini (dilihat dari samping)
Anda akan menambahkan poligon agar terlihat seperti ini:
Algoritma untuk menghitung landai ini adalah algoritma marching cubes .
Ketika Anda ingin itu menjadi lebih indah, jangan hanya menggunakan satu poligon untuk menginterpolasi antar kubus, gunakan kurva dari beberapa poligon. Tetapi perlu diingat bahwa itu akan menambahkan cukup banyak poligon ke adegan Anda, jadi Anda hanya harus melakukan ini untuk kubus yang dekat dengan kamera.
sumber
Ada dua kendala yang harus Anda hadapi untuk mencapai kualitas yang sama seperti yang ada di gambar, yang pertama artistik dan yang kedua adalah teknis (memori, pemrosesan). Pertama saya berasumsi bahwa Anda sudah menyelesaikan masalah artistik Anda, Anda dapat membuat model, seni dan shaders dll. (Sebagian karena saya tidak bisa menjawab masalah seni)
Masalah teknis utama adalah bahwa ketika menguapkan model-model yang Anda buat dalam detail tingkat tinggi, Anda akan berakhir dengan sejumlah besar voxel kecil. Memproses dan merender sejumlah besar voxels bukanlah hal sepele. Jawabannya disebut Sparse Voxel Octrees
SVO akan memberi Anda kemampuan untuk membuat model yang sangat rinci tanpa memproses semua voxel, tetapi hanya yang terlihat. Perhatikan bahwa untuk membuat SVO Anda harus menggunakan ray-casting daripada teknik rasterisasi biasa.
Lebih detail tentang SVO dalam tulisan ini
Berikut ini adalah sumber terbuka dengan penerapan Lisensi BSD dari SVO https://code.google.com/p/efisien-sparse-voxel-octrees/
Berikut adalah video yang menjelaskan rendering berbasis poligon vs SVO (pro dan kontra).
sumber