Selasa, 10 Juli 2012

Memilih Sudut Pandang


Menempatkan kamera pada jarak yang tepat adalah masalah yang relatif mudah. Semua yang perlu kita lakukan adalah menghitung beberapa sudut matematika untuk melakukan pekerjaan itu. Pastikan kita memilih arah pandangan yang baik adalah cukup sedikit lebih keras. Kita perlu memastikan bahwa semua elemen baik proporsional, menghindari oklusi antara mereka. Jika Anda meninjau bagian sebelumnya, Anda akan melihat bahwa sekarang kita memiliki tempat tujuan kami bertujuan kamera untuk dan jarak pandang yang cocok untuk menampilkan semua objek dari. Itu memberi kita kerak bola di mana kita dapat menempatkan kamera. Yang poin di kerak memberikan sudut pandang yang lebih baik?

Dari sudut pandang murni teknis, kita bisa menghitung arah pandangan terbaik sebagai salah satu yang menghasilkan lebih sedikit oklusi dalam adegan. Tapi ada masalah lain yang perlu dipertimbangkan: Jika oklusi adalah kekuatan pendorong, adegan yang paling akan ditembak dari crane pada sudut atas-bawah. Jelas, kami ingin oklusi sesedikit mungkin sambil menjaga sudut pandang, nyaman tidak terlalu vertikal.

Mari kita mulai dengan bekerja dengan bagian oklusi dan kemudian menambahkan fitur-fitur di atas itu. Untuk menyederhanakan matematika, kita bisa memilih posisi yang menghasilkan oklusi lebih sedikit dengan bekerja dengan pemisahan sudut rata-rata (AASs) antara objek. AAS adalah, diberi titik, ukuran perbedaan dari sinar yang memancar dari itu dan menuju ke objek yang berbeda dalam sebuah adegan. Sebuah sudut pandang murni horizontal akan memiliki pemisahan sudut kecil dari sudut pandang vertikal, sehingga merekomendasikan vertikal di atas sudut pandang horisontal, setidaknya sejauh oklusi pergi.

AAS dapat dihitung dalam berbagai cara. Karena jumlah elemen yang terlibat biasanya akan menjadi kecil, algoritma tidak akan berarti hit CPU yang signifikan. Berikut adalah algoritma tersebut :



Pada fungsi "select the closest ray" sebagian besar kompleksitas algoritma. Untuk set data yang lebih kecil, brute force, pendekatan dioptimalkan dapat digunakan. Jika hal ini tidak terjadi, teknik pengindeksan spasial entah bagaimana bisa meningkatkan kinerja.

Sekarang kita perlu menghitung AAS untuk beberapa poin dalam adegan untuk menemukan mana perilaku oklusi satu hasil yang lebih baik. Secara umum, sudut pandang vertikal yang lebih tinggi memiliki nilai SSA, jadi kita perlu membandingkan dua penempatan kamera terletak pada ketinggian yang sama untuk analisis untuk memberikan beberapa hasil yang berarti.

Oleh karena itu, kita perlu mengubah SSA kita menghargai sehingga arah pandangan yang lebih horizontal lebih disukai daripada yang lebih tinggi, tembakan vertikal. Satu ide yang baik adalah dengan menggunakan sudut ke tanah sebagai pengubah dari nilai SSA dihitung. Dengan demikian, Anda dapat secara efektif menghitung lokasi kamera cocok sehingga tindakan dan gameplay dapat diikuti secara intuitif.

Cinematic Cameras: Algoritma Penempatan


Kita akan menyelesaikan bab ini dengan gambaran dari algoritma penempatan kamera untuk interaksi karakter. Pertimbangkan skenario ini : Kami memiliki dua orang yang berbicara, dan orang ketiga yang mendekati mereka. Dimana lokasi ideal untuk kamera? Pikirkan tentang hal ini sejenak, dan Anda akan melihat itu sebagai masalah trivial. Kita harus memberikan visibilitas untuk ketiga karakter sekaligus untuk menjaga kamera sedekat mungkin agar tidak ada detail hilang. Selain itu, kita perlu karakter untuk tidak menutup jalan sama lain, sehingga seluruh pemandangan ditularkan jelas. Kamera algoritma penempatan telah muncul dalam beberapa tahun terakhir karena kecenderungan nilai sinematik yang lebih besar. Banyak gelar yang menerapkan algoritma di atas dan telah banyak orang lain pasti akan bergabung dengan mereka dalam waktu dekat. Saya akan memberikan survei tentang cara menghitung sudut kamera yang bagus, terutama ketika beberapa item (baik karakter dan skenario) harus ditampilkan secara bersamaan.

Item pertama yang perlu diingat adalah bahwa kita tidak akan menggunakan karakter penuh melainkan akan menggunakan volume mereka berlari untuk perhitungan kamera. Karakter penuh menggunakan akan terlalu mahal, dan sejauh hasil pergi, upaya tidak akan melunasi. Dengan demikian, banyak algoritma akan bekerja pada bola atau kotak yang mewakili lokasi dan karakter. Kita kemudian perlu untuk menghitung posisi kamera dan orientasi vektor, yang membantu menyampaikan aksi TKP. Ada beberapa aturan umum bahwa kita akan perlu untuk mengimplementasikan dalam rangka untuk mencapai hasil yang realistis. Ini benar-benar mendidih ke tiga aturan dasar:


  • Kamera harus menunjukkan semuanya relevan dengan tempat kejadian.
  • Kamera harus ditempatkan sehingga obstruksi antara informasi relevan tidak terjadi.
  • Kamera harus diarahkan pada titik yang menarik di tempat kejadian.

Aturan-aturan ini meninggalkan banyak ruang untuk eksperimen. Menggunakan contoh sebelumnya, kita bisa memilih jarak di mana kita akan menempatkan kamera sehubungan dengan karakter. Jika mereka berada di area kosong, kami akan menempatkan kamera sedekat mungkin, sehingga kita bisa melihat aksi dengan rincian penuh. Tetapi jika skenario bagaimanapun relevan, kita mungkin memilih untuk kembali sedikit, sehingga beberapa informasi konteks termasuk dalam tembakan. Mari kita memperbaiki setiap bit pilihan kita.


Memilih Target Kamera
Kita akan mulai dengan mengarahkan kamera ke arah yang benar. Tapi apa yang "arah yang benar"? Ini pada dasarnya adalah sebuah konsep cerita: Dimana kamera seharusnya dihadapi untuk menutupi tembakan? Tidak ada aturan emas, jadi mari kita periksa beberapa kasus per kasus situasi.

Dalam kasus umum, kita akan mulai dengan menargetkan pemain, yang, setelah semua, layar mengubah ego gamer. Bertujuan pada dada dari karakter memastikan bahwa ia juga terletak di tengah layar, dan kami mendapatkan beberapa visibilitas lingkungannya.

Tapi bagaimana jika sebuah rakasa mendekati karakter? Mungkin kita harus berusaha di suatu tempat di garis bunga, yang ditentukan oleh karakter dan posisi rakasa itu, seperti memerangi permainan menargetkan kamera pada titik tengah antara kedua pejuang. Dengan cara ini karakter bergeser lebih dekat ke tepi layar, dan rakasa ditempatkan di sisi berlawanan. Jelas, setiap algoritma penempatan kamera yang bagus harus memastikan kita tidak hanya melihat karakter utama, tetapi juga semua yang melihat.

Kasus yang lebih kompleks muncul dari situasi kelompok, seperti percakapan antara beberapa rekan atau pertempuran kecil. Di sini tempat tujuan harus ditempatkan di sekitar barycenter dari tempat kejadian untuk memastikan semua orang bisa muat pada layar. Tidak masuk akal untuk membidik orang yang sedang berbicara karena negara ini akan berubah sering, dan kamera akan bergerak maju mundur sepanjang waktu, pasti mengganggu pemain. Untuk kasus ini, penempatan kamera netral lebih disukai.

Secara umum, kamera harus dipindahkan hanya bila diperlukan. Komputer grafis memiliki tingkat kontrol yang lebih tinggi atas penempatan kamera dari dunia nyata juru kamera lakukan. Kita bisa goyang kamera secepat kita bisa, mengubah permainan kami menjadi roller coaster virtual. Hal ini terlihat di banyak komputer berbasis grafis film pendek. Tetapi kita perlu memahami bahwa kamera harus sebagai unobstrusive mungkin, meningkatkan gameplay bukan merusaknya. Kamera bergerak dan bahkan beralih antara kamera yang berbeda harus disimpan ke minimum yang ketat.

Sebagai contoh, bayangkan sebuah permainan mobil balap di mana layar mengikuti tindakan dari berbagai tanah berbasis kamera, banyak seperti di transmisi ulang TV. Dalam satu kamera, mobil ini terlihat menyamping, maju ke arah kanan layar ketika bergerak di sepanjang arena balap. Kemudian, kita beralih ke kamera lain, yang membuat muka mobil di arah top-down pada layar. Jelas, pemain akan mendapatkan perasaan bahwa kontrol telah berubah, dan dengan demikian interaksi akan terdegradasi. Game tentang perasaan mengendalikan gameplay, dan switching kamera sering menghancurkan perasaan itu.


Memilih Informasi yang relevan
Kami tahu di mana kita ingin arahkan kamera. Sekarang, bagaimana kita dapat memastikan bahwa semua informasi yang menarik adalah di dalam kerucut pandang? Ini biasanya sebuah proses dua langkah yang mencakup 1) pemahaman apa yang relevan dan apa yang tidak relevan untuk adegan tertentu dan 2) menghitung sebuah frustum kamera yang memadai jadi semuanya cocok. Masalah pertama adalah sebagian besar permainan tergantung. Kami harus menandai elemen penting sehingga kita nantinya dapat menggunakannya untuk menempatkan kamera. Secara umum, berikut ini dianggap "relevan" item:


  • Karakter utama
  • Lain-lain karakter di sekitarnya
  • Item Pickable lebih dekat dari ambang batas yang ditetapkan
  • Relevan dengan gameplay Obyek, seperti kendala

Masing-masing item harus datang dengan volume berlari. Untuk algoritma ini, kotak lebih disukai untuk ketat properti mereka. Kita harus mengkonsolidasikan semua kotak berlari menjadi satu, yang merupakan kotak berlari dari informasi yang relevan yang ingin kita targetkan. Kemudian, semua yang kita butuhkan adalah setengah halaman dari trigonometri untuk menghitung, mengingat ukuran lobang kamera, jarak yang dibutuhkan untuk mencocokkan semua informasi di dalamnya. Perhatikan bagaimana kita harus mempertimbangkan parameter kamera optik (aperture, terutama), karakteristik skenario (dalam bentuk kotak berlari untuk informasi yang relevan), dan arah kamera pandang. Beberapa skenario akan lebih besar dalam satu dimensi yang berkaitan dengan orang lain, dan jarak di mana kita menempatkan kamera juga akan tergantung pada arah mana kami bertujuan dari. Sebagai contoh, bayangkan bahwa Anda sedang mencoba untuk mengambil gambar mobil dari depan atau samping. Jelas, situasi kedua membutuhkan lebih jarak karena objek yang Anda targetkan mencakup sudut yang lebih besar di gambar.
Dengan demikian, variabel untuk analisis adalah sebagai berikut:


  • B : kotak berlari.
  • V : vektor satuan yang mendefinisikan arah pandang.
  • P : Pusat perhatian. Kadang-kadang akan menjadi pusat dari kotak, kadang-kadang tidak akan.
  • Wapres : Sudut pandang kita mencoba untuk menghitung.
  • F : Aperture dari kamera dalam radian.

Kami kemudian perlu menghitung titik sepanjang garis yang melewati P dan V memiliki arah sehingga kotak B seluruh bounding terletak dalam jarak sudut didefinisikan oleh F. Algoritma ini sebagai berikut.

Kami pertama kali membuat jalur sepanjang garis yang berasal dari P dengan V sebagai arahnya. Sebut titik T. Kemudian, untuk setiap vertex dalam kotak berlari, kita menghitung QV vektor dari Q ke titik. Kami menghitung sudut dari QV ke V, dan menyimpan titik kotak berlari, yang pada pemisahan sudut maksimal dari V. Ini adalah titik yang akan menentukan ketika kita melihat seluruh pemandangan, jadi kami hanya perlu bekerja dengan titik ini dari sekarang. Mari kita menyebutnya kotak berlari titik R.

Sekarang kita perlu sebuah titik di sepanjang V yang memastikan bahwa titik R adalah pada pemisahan sudut dari V yang persis F. Ini adalah trigonometri hanya biasa. Intinya adalah dalam bentuk :

X = Px - Vx*t
Y = Pz - Vz*t
Z = Pz - Vz*t

Dan tes angular dapat dengan mudah ditambahkan: Sudut dari V (sumbu) untuk QR harus F:

V dot RQ = acos(F)

yang diperluas ke

Vx*(Qx-X) + Vy*(Qy-Y) + Vz*(Qz-Z) = acos(F)

atau

Vx*Qx - Vx*X + Vy*Qy - Vy*Y + Vz*Qz - Vz*Z = acos(F)

Perhatikan bagaimana kita memiliki empat persamaan dan empat variabel, sehingga kami dapat menyelesaikan sistem ini dengan mudah menggunakan metode aljabar. P, V, F, dan Q hanya konstanta kita perlu memberi makan ke dalam persamaan yang berbeda.

Sebuah kata nasihat: Tidak ada yang suka informasi yang relevan terletak pada sudut ekstrim layar. Ini adalah ide bijaksana untuk menyimpan zona aman, jadi ada margin antara item yang relevan dan tepi layar. Hal ini dapat dengan mudah ditambahkan dengan algoritma sebelumnya dengan menggantikan aperture nyata dari kamera dengan nilai yang menurun dalam persentase yang ditetapkan, seperti 10-15 persen. Dengan cara ini kamera akan bergerak kembali sedikit untuk memastikan kami mendapatkan beberapa ruang di sekitar objek yang berbeda di dunia permainan kami.

Cinematic Cameras: Camera Styles


Beberapa game telah memiliki metode yang melebihi yang ditetapkan berkaitan dengan pengendalian kamera. Mereka meminjam ide-ide dari industri film dan berusaha untuk menerapkan novel jenis kamera sinematik dimana aksi diikuti tidak hanya dengan satu buah kamera, tetapi dengan tim juru kamera yang melihat aksinya dan selalu mencoba untuk memperlihatkannya dari sisi terbaik. Saya mengacu pada permainan seperti Ico dan The Two Towers.

Permainan dimana algoritma khusus digunakan untuk memilih mana dari kamera yang tersedia yang paling cocok untuk mengikuti gameplay pada waktu tertentu.

Untuk menerapkan algoritma ini, kita membutuhkan sedikit informasi di dalamnya tentang bagaimana kamera bekerja pada dunia nyata.

Kamera biasanya digambarkan oleh bagaimana cara mereka menempatkannya pada set. Jenis yang paling populer termasuk :
  • Fixed Camera
  • Dolly Camera
  • Crane Camera
  • SteadyCam
Fixed Cameras adalah tipe paling sederhana dari kamera. Kamera tetap berada di tanah dengan menggunakan tripod atau penstabil. Memberikan sudut pandang yang tetap kepada set untuk si pembuat film. Kamera ini tidak terbatas pada pengambilan statis. Terkadang, mereka dapat menggunakan tilting (sudut miring), panning (datar), atau zooming (pembesaran objek) untuk bergerak dan memfokuskan pada item yang berbeda.

Dolly Cameras, atau boneka, menggerakan kamera yang ditempatkan di atas struktur roda sehingga mereka dapat berpindah menggunakan trek lurus atau melengkung, seperti pada jalur kereta api. Teknik ini digunakan ketika kita harus mengikuti aksi dan ingin kamera untuk bergerak sebagai pengungkap peristiwa. Penempatan trek dan lintasan harus sangat direncanakan agar trek tidak pernah terlihat, dan mendapatkan gerakan yang halus.

Crane Cameras adalah kamera yang bertengger di atas “lengan” besar sehingga mereka dapat melakukan pandangan yang lebar di set. Ukuran lengannya antara 9 sampai dengan 30 kaki normal. Kamera Derek (Crane Cameras) biasanya dikontrol oleh satu atau lebih operator dari jarak jauh, sehingga mereka dapat menggeser lengannya, tapi juga mengubah bisa mengubah tilt (sudut pandang), pan (dataran), zoom (pembesaran), dan sebagainya dari bawah. Untuk menambahkan fleksibilitas, beberapa crane dapat dipasang di atas boneka, jadi yang terbaik dari dua dunia dapat dikombinasikan.

Steadycam adalah kamera portabel yang biasanya melekat pada dada operator. Untuk memindahkan kamera, operator harus bergerak set. Steadycams memberikan fleksibilitas karena tidak ada ada trek atau lengan crane untuk diperhatikan. Steadycams juga mempekerjakan mekanisme stabilisasi canggih untuk menjamin kelancaran, penempatan terus menerus meskipun ada tremor dari operator. Kadang-kadang steadycams dapat digunakan untuk membuat film dengan gaya "atas bahu", membuat begitu populer dalam film seperti Saving Private Ryan, dengan hanya menonaktifkan mekanisme stabilisasi.

Sejauh syuting berjalan, faktor lain yang perlu diingat adalah jenis shot saat anda merekam, yang biasanya harus dilakukan dengan jarak dan ruang lingkup shot apa yang dilihat, apa yang tidak terlihat, dan di mana kamera berfokus. Tergantung pada faktor-faktor tersebut, berikut daftar gambar populer dapat dikompilasi.
Shot dramatis fokus pada karakter dan sikapnya :
  • Close-up ekstrim
erpotong pada bagian atas mulut, dengan fokus pada mata.
  • Close-up medium
Terpotong pada bagian dagu.
  • Close-up penuh
Terpotong pada bagian leher.
  • Close-up lebar
Terpotong pada bagian bahu.
  • Shot jarak dekat
Terpotong pada bagian dada.
  • Shot jarak dekat medium
Terpotong pada bagian pinggang.


Informasi shot termasuk :
  • Shot medium
Terpotong pada bagian pinggul
  • Shot penuh menengah
Terpotong pada bagian di bawah lutut
  • Shot penuh
Menampilkan seluruh badan
  • Shot jauh
Menyediakan perspektif jarak.

Seperti saat kita membuat game yang lebih kompleks, penting bahwa industri game terbiasa dengan terminologi ini (digambarkan pada Gambar 16.4). Kebanyakan game saat ini menggunakan shot jauh, sehingga kita dapat melihat kedua karakter utama dan sekitarnya. Tapi permainan seperti GTA3 mulai menunjukkan kita apa yang benar-benar dapat dilakukan dengan sinematik pendekatan untuk pengembangan game.

Gambar 16.4. Deskripsi jepretan kamera yang berbeda.


Salah satu yang menarik dan mudah untuk kode algoritma dimulai dengan menempatkan kamera menggunakan konten penciptaan alat pilihan anda, seperti yang dilakukan seorang sutradara film. Hal ini penting untuk keberhasilan pendekatan untuk menawarkan berbagai jenis kamera, yang kemudian diimplementasikan sebagai kelas abstrak murni dari yang kamera spesifik berasal melalui warisan. Pembuat konten harus memiliki fixed cameras : fixed cameras dengan dataran / kemiringan sehingga kamera dapat mengikuti lintasan sambil memfokuskan pada aksi, dan lain sebagainya. Perhatikan bagaimana yang disimulasikan oleh computer, boneka lebih mudah untuk diciptakan daripada bagian-bagian pada dunia nyata karena tidak takut akan menampilkan trek dalam hasil akhir. Kami juga akan mendapatkan sudut vertikal, berbentuk helix, atau jenis jalan yang dapat Anda pikirkan.

Kemudian, yang perlu anda lakukan adalah menerapkan algoritma real-time yang memilih kamera terbaik menurut sebuah heuristic. Pilihan klasik adalah untuk memilih kamera yang paling dekat dengan pemain, tetapi itu bukan satu-satunya pilihan. Kita bisa memotong dengan jarang yang jauh, pemandangan luas atau setup yang lain. Jika Anda memilih kriteria "pemain paling dekat dengan", kode ini benar-benar mudah. Kami memiliki daftar kamera, masing-masing satu jenis, tetapi semua mereka berbagi satu properti yang sama : Penempatan, apakah itu titik untuk kamera tetap atau garis atau spline pada boneka. Dengan demikian, algoritma ini hanya masalah pengujian yang mana dari primitif kamera penempatan terdekat dengan pemain. Apakah akan satu titik, sehingga perspektif pemain akan menggunakan kamera tetap, atau akan itu helix, sehingga kita dapat mengikutinya saat ia memanjat tangga spiral? Pada akhirnya, hanya saja jarak titik-titik atau titik-line dan tidak banyak lagi. Berikut adalah struktur untuk sistem tersebut :








Pendekatan semacam ini telah banyak digunakan dalam permainan yang brilian, terutama pada game konsol, dimana kita dapat merasakan simulasi dari sinematografer yang mengikuti aksi untuk selalu memastikan sudut pandang terbaik. Perhatikan Gambar 16.5 untuk melihat bagaimana kamera dapat dimasukkan dalam tingka desain.


Gambar 16.5. Sebuah pandangan top-down dari permainan dunia, dengan kamera ditempatkan untuk sinematografi efek.