Mempelajari cara membuat penipu secara manual di Unity - cara merender objek ke tekstur, bukan yang dilihat kamera?

8

Saya mencoba mempelajari cara paling berkinerja untuk membuat penipu di Unity secara manual - tidak menggunakan solusi pra-pabrikasi.

Dugaan pertama saya adalah bahwa itu harus dicapai dengan menggunakan RenderTexture dan kamera kedua dan kemudian mengambil "snapshots" berbeda dari berbagai sudut objek. Jika ada alternatif yang lebih baik dalam hal kinerja (bahkan jika lebih sulit untuk diterapkan), saya akan senang mendengarnya.

Dalam hal itu adalah satu-satunya jalan, maka saya telah belajar bagaimana me-render dari kamera ke tekstur melalui skrip, tetapi saya masih belum bisa mengetahuinya bagaimana melakukan hal berikut, yang adalah apa yang perlu saya lakukan pertama-tama: bagaimana me-render -untuk-tekstur objek tertentu tanpa latar belakang kamera (yaitu dengan sisa tekstur yang transparan) dengan cara pemain?

Petunjuk, saran, atau setidaknya tautan rekomendasi akan sangat bagus.

Terima kasih sebelumnya.

AndraSol
sumber
Harap persempit pos Anda menjadi satu pertanyaan. Anda dapat membuat 2 posting pertanyaan berbeda untuk dua pertanyaan Anda.
Vaillancourt
@AlexandreVaillancourt Tidak masalah! Saya melakukannya. Beri tahu saya jika masih perlu peningkatan lebih lanjut
AndraSol
Anda juga tidak dapat meminta 'tautan' karena jawaban yang hanya menyediakan tautan tidak dianggap sebagai jawaban yang baik untuk situs ini, jika tidak, pertanyaan Anda baik-baik saja :)
Vaillancourt
@AlexandreVaillancourt Terima kasih! Tapi saya kira rekomendasi tautan yang baik bisa datang melalui komentar, apakah saya benar?
AndraSol
Sesuatu seperti itu, ya. Sebuah jawaban dapat ditulis dengan baik dan memiliki tautan ke detail lebih lanjut. Jawaban yang hanya berisi tautan akan dihapus. Komentar tidak tunduk pada aturan ini.
Vaillancourt

Jawaban:

3

Ada berbagai teknik peniru yang berbeda.

Tingkat detail mungkin paling mudah untuk dicapai, tetapi memiliki dua kelemahan utama. Efek 'pop' yang terlihat ketika Anda bertukar antara model resolusi rendah dan tinggi, diselesaikan dengan transisi bertahap antara LOD. Masalah kedua adalah bahwa BANYAK lebih banyak pekerjaan untuk artis untuk menghasilkan LOD untuk setiap model tunggal. Ada pembicaraan GDC yang tentang cara otomatis untuk menghasilkan LODS - "Level Generasi Detail Otomatis untuk HALO: REACH"

Teknik yang lebih sederhana adalah billboarding, di mana Anda hanya menggunakan poligon datar, bukan mesh resolusi rendah. Poligon ini menghadap kamera, dan bertekstur dari render model Anda. Metode ini membutuhkan memiliki beberapa pandangan yang berbeda dari objek Anda, seperti bagaimana musuh dalam kehancuran. Anda bisa mempratinjau semua tampilan ke atlas tekstur. Game modern menggunakan pendekatan ini, seperti Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI

Anda juga dapat memiliki beberapa billboard statis yang berbeda, dan menggabungkannya seperti dalam paket kesatuan ini https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/

Tetapi cara terbaik (yang saya pikir Anda inginkan) adalah secara dinamis merender papan reklame Anda, seperti dalam artikel gamasutra ini. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php Ini pertama kali dilakukan oleh Jurrassic Park: Trespasser pada tahun 1998, jadi ini bukan teknik baru. Lihat ulasan kode di sini http://fabiensanglard.net/trespasser/index.php Gulir ke bawah ke bagian wavelet untuk melihat penipu mereka.

Kecuali pendekatan LOD standar, langkah pertama Anda mungkin akan menemukan tutorial tekstur render. Orientasi kamera renderTexture harus sama dengan kamera utama Anda, tetapi dipotong di sekitar gameObject untuk efisiensi. Anda harus mengisolasi gameObject yang ingin Anda render dengan mask culling. Dan atur bendera yang jelas dari kamera sehingga Anda mendapatkan latar belakang yang transparan. Kemudian render papan reklame sebagai ganti objek asli.

Reuben Crimp
sumber