Saya ingin mengguncang kamera sedikit selama ledakan, dan saya sudah mencoba beberapa fungsi berbeda untuk membuatnya goyang, dan sepertinya tidak ada yang benar-benar memberikan 'wow, bang banget!' ketik perasaan yang saya cari. Saya sudah mencoba beberapa pola gelombang sinus frekuensi tinggi yang sewenang-wenang dengan sedikit pelemahan linear, serta pola tipe gelombang persegi. Saya sudah mencoba bergerak hanya satu sumbu, dua, dan ketiganya (walaupun efek dolly hampir tidak terlihat dalam kasus itu).
Apakah ada yang tahu tentang pola guncangan kamera yang bagus?
Jawaban:
Saya mendapatkan goyangan kamera yang layak dengan menerapkan noise Perlin ke orientasi kamera. Ini memberi Anda sentakan besar yang layak dengan guncangan frekuensi yang lebih tinggi, dan dapat terlihat sangat bagus.
http://mrl.nyu.edu/~perlin/doc/oscar.html memiliki lebih detail dan kode sampel untuk menghasilkan noise.
sumber
Jika Anda mengacu pada guncangan layar yang menilai dari sebuah ledakan, saya telah mencoba menerapkan ini dalam permainan prototipe saya (ini 2d tetapi harus diterjemahkan ke 3d dengan cukup baik, saya harapkan). Lihatlah video youtube dan lihat apakah itu yang Anda cari - guncangan layar dimulai sekitar 1:35
Bagaimanapun, cara saya mencapainya adalah membuat viewport untuk sceen dan menyimpan titik pusat (
centre
).Ketika sebuah ledakan dimulai, saya membuat acak
radius
~ 30px. Saya kemudian mengimbangi viewport daricentre
ini dengan banyak piksel dalam arah acak.Untuk setiap pembaruan berikutnya (antara menarik ke layar), saya mengurangi
radius
10-20% dan mengimbangi viewport dengan banyak piksel dari inicentre
lagi. Namun, alih-alih memilih sudut acak untuk offset ini, saya malah mengambil sudut viewport sebelumnya daricentre
dan menambahkan 180 +/- 60 derajat ke sana.Jadi pada dasarnya, setiap pembaruan (atau 10-20 ms atau lebih), saya mengimbangi viewport dengan berkurangnya jumlah piksel dari
centre
layar.Inilah beberapa pseudocode:
Saya biasanya menghentikan guncangan layar ketika jari-jari lebih rendah dari 2.0, pada saat itu saya mengatur ulang viewport kembali ke
centre
.sumber
randomAngle += (150 + rand()%60)
untuk menyingkirkan masalah +/-.Untuk membuat goyangan kamera "merasa" benar kurang tentang arah gerak dan lebih banyak tentang kurva akselerasi.
Goyangan kamera masuk ke ranah animasi dan karenanya semua aturan aksi / reaksi berlaku. Jika Anda bergerak secara linier dari titik ke titik, itu akan terasa halus dan seragam dan tidak seperti dampak.
Jika Anda menggelengkan kepala bolak-balik, Anda akan melihat bahwa itu bergerak tercepat di titik tengah antara perubahan arah dan melambat di setiap sisi saat Anda pertama kali harus melambat dan kemudian mulai naik ke arah yang baru.
Berikut adalah daftar berbagai fungsi pelonggaran untuk diterapkan pada gerakan Anda. Anda mungkin ingin hanya EaseOut gerakan pertama agar terasa sedikit lebih tiba-tiba, dan kemudian EaseInOut sisanya untuk mensimulasikan gerakan kepala / kamera.
sumber
wkerslake benar, goyangan kamera tampak lebih rumit dari yang Anda kira.
Saat meniru kamera guncang, Anda harus berpikir tentang jenis kamera (operator) yang ingin Anda tiru. Berat kamera memengaruhi kelembaman, misalnya. kamera yang lebih berat memuluskan gerakan kecil 'acak'. Operator kamera di rel atau di mobil menambah kebisingan tambahan.
Menggunakan Perlin atau noise Simplex jelas merupakan suatu pilihan, maka itu semua tentang menemukan keseimbangan yang tepat antara rasio kebisingan yang berbeda. Tapi saya menemukan menggunakan interpolasi antara nilai-nilai kurang intensif secara komputasi dan bisa sama efektifnya.
Beberapa waktu yang lalu, saya telah menemukan skrip Maya yang tampaknya melakukan banyak hal dengan benar. Anda bisa lihat bahwa .
Juga, Anda mungkin ingin melihat Gran Turismo (5) , tim mereka melakukan pekerjaan yang mengesankan dalam melakukan berbagai jenis guncangan kamera waktu nyata ketika Anda menonton tayangan ulang dalam permainan.
sumber
Jika Anda memiliki fisika objek dinamis [mungkin bukan kata yang tepat, tetapi semacam apa yang saya maksudkan], di mana objek apa pun yang tidak diperbaiki akan 'terpesona' oleh ledakan, Anda dapat memiliki kamera yang terpengaruh sebagai objek seperti itu.
Hanya bedanya hanya mengubah rotasi / pitch / yaw / roll kamera, dan bukan posisi.
Selain itu, mungkin menghasilkan urutan angka acak dan mengubahnya menjadi rotasi entah bagaimana? Pikirkan bahwa heightmap, barang abu-abu dapat menjadi contoh; mereka tidak sepenuhnya berbeda, tetapi acak.
sumber