Dengan OpenGL dan semacamnya, saya dapat membuat beberapa hal yang tampak sangat menakjubkan dalam "waktu nyata" 60 FPS. Namun, jika saya mencoba untuk membuat video dari adegan yang sama di katakanlah Maya, atau 3ds Max akan membutuhkan JAUH JAUH lebih lama untuk membuatnya meskipun resolusi dan FPS yang sama.
Mengapa kedua jenis rendering ini mengambil periode waktu yang berbeda untuk hasil yang sama?
Catatan: Ya saya menyadari bahwa perangkat lunak animasi 3D dapat menghasilkan gambar yang sangat unggul dari apa yang dapat dilakukan secara waktu nyata. Tetapi untuk pertanyaan ini saya mengacu pada adegan dengan kompleksitas yang sama.
rendering
performance
J.Apakah
sumber
sumber
Jawaban:
Perbedaan utama adalah bahwa dengan OpenGL dalam katakanlah sebuah gim video, Anda akan memiliki proses yang disebut rasterisasi yang pada dasarnya mengatur bagian adegan yang Anda lihat.
Itu harus cepat sehingga kita bisa mengalaminya sebagai waktu nyata.
Karena itu algoritma melakukan beberapa langkah sederhana.
periksa apakah bagian tertentu dari pemandangan itu dalam pandangan saya frustum
periksa apakah ada sesuatu di depannya yang mungkin perlu dirender nanti menggunakan buffer kedalaman
memesan objek yang kami temukan untuk menggambar
Di sisi lain perangkat lunak rendering (Blender / Max / Maya / ...) kemungkinan besar menggunakan semacam raytracing
Ini melibatkan lebih banyak matematika untuk mencapai tingkat realisme yang lebih tinggi. Ini pada dasarnya bekerja dengan cara yang sama:
....
Saya akan berhenti mendaftar di sini karena ini adalah saat raytracing lepas landas.
Alih-alih hanya memeriksa apakah suatu titik terkena, sebagian besar raytracer sekarang mulai menghitung:
Ada satu ton teknik dengan berbagai tingkat realisme yang dapat digunakan untuk menghitung cahaya dari titik tertentu dalam adegan.
TL; DR Intinya adalah bahwa raytracer sebagian besar mencoba untuk menjadi akurat secara fisik ketika datang pencahayaan dan karena itu memiliki lebih banyak perhitungan yang harus dilakukan per pixel (kadang-kadang menembak ribuan sinar) dan di sisi lain permainan mendapatkan kecepatan mereka dengan menggambar potongan layar yang lebih besar dengan perhitungan cahaya yang lebih sederhana dan banyak trik shader yang membuatnya terlihat realistis.
sumber
Anda membandingkan apel dengan jeruk
Gim ini seperti port tampilan di aplikasi pemodelan Anda. Anda dapat menggunakan viewport untuk membuat dan Anda akan mendapatkan kecepatan 60fps yang sama.
Tidak ada alasan mengapa Anda tidak bisa mendapatkan grafik waktu nyata yang sangat baik dari perangkat lunak pemodelan seperti Maya atau 3DS Max. Hasil yang setara dengan banyak game. Mereka memiliki viewport shader seperti halnya gim. Ada juga opsi rendering viewport yang memotong frame ke disk secepat mungkin (saya telah melakukan rendering full HD pada 30 fps dari Maya). Yang harus Anda lakukan adalah berhenti menggunakan raytracer perangkat lunak yang disediakan.
Namun ada beberapa perbedaan. Perbedaan utama adalah bahwa Anda sebagai pengguna tidak mengoptimalkan hal-hal sebanyak pengembang permainan (optimasi menggunakan semua trik dalam buku ini). Kedua primitif animasi Anda berfungsi pada CPU karena Anda memerlukan fleksibilitas. Dalam game seseorang mampu melakukan optimasi. Semua yang Anda bayar untuk tidak memiliki tim pemrograman di sebelah Anda.
Banyak dari hal-hal itu sebenarnya telah dikomputasi, jadi mereka tidak begitu cepat, hanya lebih terorganisir. Memanggang iluminasi tidak langsung Anda akan mengalahkan hasil yang tidak dipanggang setiap hari.
Mengapa raytracer lebih lambat?
Mereka bukan *, orang cenderung melakukan lebih banyak pekerjaan pada pelacak sinar karena mudah. Fitur demi fitur mereka tidak jauh lebih lambat dalam siklus perhitungan. Misalnya, tidak perlu pelacak sinar untuk mengeluarkan sinar sekunder (pantulan kehidupan dalam hal pelacak sinar akan memusnahkan geometri, atau bahkan tidak memuatnya, sebenarnya sinar mental melakukan hal itu). Ini biasanya dilakukan karena sepele untuk melakukannya dan itulah keuntungan yang jelas dari pelacak sinar. Anda bahkan dapat mengonfigurasinya untuk berjalan pada CPU dalam beberapa kasus. Mereka hanya dioptimalkan untuk berbagai hal:
Memancarkan data ke disk, bukan hanya bingkai tetapi semua data. Sesuatu yang akan menghancurkan sebagian besar kecepatan game secara instan.
Bekerja pada perangkat keras umum. GPU jauh lebih cepat untuk hal-hal tertentu setelah Anda mengoptimalkan GPU. Tapi itu tidak bekerja untuk semua beban, sebenarnya CPU Intel lebih cepat dalam komputasi secara umum daripada GPU. GPU hanya paralel besar-besaran sedangkan CPU tidak. Arsitektur menang jika Anda dapat tetap menggunakan GPU dan meminimalkan transfer dan mengoptimalkan arsitektur GPU.
Jadi Anda membayar fleksibilitas dan kemudahan penggunaan. Tapi ya sakit mengakui baik Maya dan Max menderita usia tua yang ekstrim. Jadi mereka bisa lebih cepat.
TL; DR Perbedaannya kebanyakan pada pengoptimalan (baca banyak trik) dan sumber daya eksternal yang tersedia.
PS: Ada kesalahpahaman bahwa ini karena secara fisik lebih benar. Tentu saja bisa tetapi ray tracer secara inheren lebih benar secara fisik daripada game rata-rata Anda atau perhitungan lainnya. Sebenarnya banyak game menggunakan model yang sangat bagus sementara cukup banyak pemodel tidak.
* Lihat http://www.graphics.cornell.edu/~bjw/mca.pdf
sumber
Pratinjau Waktu Nyata
Bekerja di sisi industri VFX, jika Anda berbicara tentang pratinjau viewport waktu nyata dan bukan rendering produksi, maka Maya dan 3DS Max biasanya juga menggunakan OpenGL (atau mungkin DirectX - hampir sama).
Salah satu perbedaan konseptual utama antara perangkat lunak dan game animasi VFX adalah tingkat asumsi yang dapat mereka buat. Misalnya, dalam perangkat lunak VFX, bukan hal yang aneh bagi artis untuk memuat karakter tunggal yang mulus yang membentang ratusan ribu hingga jutaan poligon. Game cenderung paling mengoptimalkan untuk adegan besar yang terdiri dari muatan kapal jerat sederhana yang dioptimalkan (masing-masing ribuan segitiga).
Rendering Produksi dan Penelusuran Jalur
Perangkat lunak VFX juga menempatkan penekanan bukan pada pratinjau waktu-nyata tetapi pada rendering produksi di mana sinar cahaya disimulasikan satu per satu. Pratinjau waktu-nyata sering kali hanya itu, "pratinjau" dari hasil produksi berkualitas tinggi.
Game melakukan pekerjaan yang indah dengan memperkirakan banyak efek tersebut akhir-akhir ini seperti kedalaman bidang waktu nyata, bayangan lembut, refleksi difus, dll., Tetapi mereka berada dalam kategori perkiraan tugas berat (mis: peta kubus buram untuk difus refleksi bukannya benar-benar mensimulasikan sinar cahaya).
Kandungan
Kembali ke subjek ini, asumsi konten antara perangkat lunak dan game VFX sangat berbeda. Fokus utama perangkat lunak VFX adalah untuk memungkinkan segala jenis konten yang akan dibuat (setidaknya itu yang ideal, meskipun dalam praktiknya sering kali tidak ada yang dekat). Game fokus pada konten dengan asumsi yang jauh lebih berat (semua model harus dalam kisaran ribuan segitiga, peta normal harus diterapkan pada detail palsu, kita seharusnya tidak benar-benar memiliki 13 miliar partikel, karakter tidak benar-benar digerakkan oleh otot) rig dan peta ketegangan, dll).
Karena asumsi-asumsi itu, mesin game seringkali dapat lebih mudah menerapkan teknik akselerasi seperti frustum culling yang memungkinkan mereka mempertahankan frame rate yang tinggi dan interaktif. Mereka dapat membuat asumsi bahwa beberapa konten akan menjadi statis, dihilangkan terlebih dahulu. Perangkat lunak VFX tidak dapat dengan mudah membuat asumsi-asumsi tersebut mengingat tingkat fleksibilitas yang jauh lebih tinggi dalam pembuatan konten.
Game Lakukan dengan Lebih Baik
Ini mungkin semacam pandangan yang kontroversial, tetapi industri game adalah industri yang jauh lebih menguntungkan daripada perangkat lunak VFX. Anggaran mereka untuk satu game dapat mencapai ratusan juta dolar, dan mereka mampu untuk terus merilis mesin generasi berikutnya setiap beberapa tahun. Upaya R&D mereka luar biasa, dan ada ratusan judul game yang dirilis setiap saat.
Software VFX dan CAD, di sisi lain, sama sekali tidak menguntungkan. Penelitian dan pengembangan sering dilakukan oleh para peneliti yang bekerja di lingkungan akademik, dengan banyak industri sering menerapkan teknik yang diterbitkan bertahun-tahun sebelumnya seolah-olah itu adalah sesuatu yang baru. Jadi perangkat lunak VFX, bahkan yang berasal dari perusahaan sebesar AutoDesk, sering tidak cukup "canggih" seperti mesin game AAA terbaru.
Mereka juga cenderung memiliki warisan yang jauh lebih lama. Maya adalah produk berusia 17 tahun, misalnya. Sudah banyak diperbaharui, tetapi arsitektur intinya masih sama. Ini mungkin analog dengan mencoba mengambil Quake 2 dan terus memperbarui dan memperbarui sepanjang jalan hingga 2015. Upaya ini bisa menjadi besar tetapi mungkin tidak akan cocok dengan Unreal Engine 4.
TL; DR
Jadi, itu sedikit mengambil sisi topik itu. Saya tidak dapat melihat apakah Anda berbicara tentang pratinjau waktu-nyata dalam viewports atau rendering produksi, jadi saya mencoba untuk membahas keduanya.
sumber