Selasa, 30 November 2010

Sistem Untuk 3D Engine

Sistem Untuk 3D Engine

Pengantar

OK, jadi mungkin Anda memiliki menjalankan mesin yang memiliki bebek, berputar di tengah layar. Sangat bagus, tetapi tidak banyak digunakan untuk melakukan 'nyata' sesuatu dengan. Anda membutuhkan sebuah kamera. Anda harus bisa berjalan di sekitar, untuk melihat bebek di sudut yang berbeda, untuk memperbesar masuk Anda membutuhkan sebuah sistem tampilan yang tepat.

Rotasi XYZ Sistem Angle

Jadi Anda berpikir, aku tahu, aku akan membuat sistem di mana kamera saya memiliki 3 sudut, X, Y dan Z rotasi. Lalu aku tambahkan saja di posisinya. Jadi, Anda membangun sebuah matriks, menerapkan transformasi bahwa untuk model, kemudian memasukkannya ke dalam ruang kamera. Tampaknya untuk bekerja dengan baik ...tapi agak terbatas. Menentukan orientasi dalam hal sudut XY dan Z adalah rumit, dan bisa menimbulkan masalah. Misalnya, setelah Anda mulai berputar di sekitar sedikit, rotasi di sumbu X tidak mungkin menghasilkan hasil yang Anda harapkan. Anda juga mungkin mengalami "Gimbal Lock", di mana rotasi dapat membatalkan satu sama lain, dan seterusnya.

Namun, semua tidak hilang. Ini adalah sistem yang sangat sederhana untuk menerapkan, dan Anda dapat membuat sebuah sistem yang sederhana, efektif menggunakannya. Sebagai contoh, Anda dapat dengan mudah membangun sebuah sistem yang memiliki tampilan parameter Yaw, Roll dan Tilt. Yang harus Anda lakukan adalah membuat sebuah rotasi Y matriks, tentang sudut Yaw, rotasi Z matriks tentang sudut Roll, dan rotasi X matriks tentang sudut Tilt. Kalikan mereka dalam urutan YXZ, dan Anda sekarang memiliki cara mudah untuk bergerak dalam ruang 3D, mengubah sudut dalam cara yang mudah. Sederhana, tetapi bekerja.

Sistem ini UVN Vektor

Ini cukup sistem yang baik. Dari 3D Computer Graphics, oleh Alan Watt. Ia bekerja dengan mendefinisikan 3 vektor, U, V dan N. vektor ini adalah kanan, atas, dan melihat arah, masing-masing. Jika Anda mengambil tangan kiri Anda, arahkan jari telunjuk Anda ke depan, ibu jari Anda tongkat ke langit, dan titik jari tengah ke kanan, kemudian jari tengah Anda adalah U, ibu jari Anda adalah V, dan jari telunjuk Anda N. Bayangkanbahwa vektor berorientasi sistem melihat. Sehingga untuk memutar 'kepala' Anda ke kiri, Anda akan memutar tentang vektor V, untuk menggulung, Anda akan memutar tentang N, dan seterusnya. Juga diperlukan untuk menggunakan sistem ini adalah asal, titik kamera. Untuk menggunakan sistem ini, Anda akan perlu membangun melihat matriks. Ini dihitung dengan mengalikan bersama dua matriks. Sistem ini diberikan oleh:

Terjemahan matriks =

| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
|-X-y-z 0 |

matriks Rotasi =

| Ux Vx Nx 0 |
| Uy Vy Ny 0 |
| Uz Vz Nz 0 |
| 0 0 0 1 |

CameraMatrix = Terjemahan * Rotasi

N juga dapat dihitung sebagai:

sudut azimut =
e = sudut elevasi
Nx = sin cos * (e) (a)
Ny = sin (e) dosa * (a)
Nz = cos (e)

Untuk titik pada posisi yang sewenang-wenang, Anda akan perlu untuk mendefinisikan N sebagai vektor satuan antara kamera dan titik. U dan V akan ditebak, dan disesuaikan. Untuk menyesuaikan vektor, cukup lakukan:

V = V '- (V' N *) N *

Dimana V adalah menebak Anda di V. U adalah produk salib N dan V.

Memahami Bagaimana Model Kamera Pekerjaan

Aku sudah beberapa orang berbicara kepada saya di IRC, dengan pemahaman kesulitan bagaimana sistem ini bekerja. Yah, aku akan memberikan penjelasan penuh, dengan melanggar semua ke dalam potongan-potongan kecil, dan re-assembling menjadi cara Anda dapat mengerti.

Bagian # 1: Vektor UVN
Bagian ini saja telah menyebabkan cukup banyak kebingungan. Singkatnya, UV dan N adalah 3 vektor yang digunakan untuk mengorientasikan nilai XY dan Z poin Anda. U adalah untuk sumbu X, V adalah untuk sumbu Y, N adalah untuk sumbu Z.

Sekarang, kita semua bisa berkeliling, riang mengatakan bahwa titik adalah di (1, 2, 3).Tapi apa yang kita benar-benar berarti ketika kita mengatakan ini? Sederhana. Intinya adalah 1 unit dari asal di AXIS X, intinya adalah 2 unit dari asal di AXIS Y, dan intinya adalah 3 unit dari asal di AXIS Z. Mengapa saya menekankan sumbu panjang? Karena itu adalah kunci untuk memahami rotasi.

Ketika saya mengatakan "sumbu X", apa artinya? Yah, sumbu dapat dianggap sebagai vektor unit - arah. Sebuah sumbu tak terbatas biasanya tak terbatas di setiap arah.Sumbu X memiliki nilai (1, 0, 0). Sekarang, bayangkan bahwa untuk mendapatkan poin X koordinasi di ruang kamera, kita harus peta titik ke sumbu X. Kami akan berakhir dengan sesuatu seperti:

NewPoint.X = XAxis.x XAxis.y * Point.x * XAxis.z Point.y * Point.z

Yang menyederhanakan ke:

NewPoint.X = 1 Point.x * 0 * Point.y 0 * Point.z

Dapatkah Anda melihat apa yang telah terjadi? Kami tidak hanya mengambil nilai X, kita mengambil jarak dari asal sepanjang sumbu X. Sekarang, sebagai sumbu X dapat berorientasi secara sewenang-wenang, maka sebagai sumbu berputar, titik mengambil nilai baru: XY dan Z sedang digabungkan dalam rasio yang berbeda.

Ingatlah bahwa kita memiliki vektor yang sama dari V dan N - Y dan sumbu Z. Sekali lagi, pendekatan serupa diambil kepada mereka: tidak hanya mengambil Y atau Z koordinasi, tetapi mengambil jarak dari asal sepanjang sumbu. Sangat penting bahwa Anda memahami bagian itu.

Sekarang, UV dan N selalu tegak lurus satu sama lain, yaitu mereka akan membentuk sudut kubus, terlepas dari rotasi, sudut antara satu sama lain akan tetap sama, hanya perubahan orientasi. Untuk memvisualisasikan ini, ambil tangan kiri Anda. Tunjukkan jari telunjuk Anda, tongkat ke atas ibu jari Anda ke langit, dan tongkat jari tengah Anda ke kanan. jari telunjuk Anda adalah N, Anda thumb V, dan jari tengah Anda U. Putar tangan Anda sedikit. Seperti yang anda lihat, vektor berputar di sekitar, mengubah rotasi kamera, tapi masih tetap pada sudut yang sama satu sama lain.

Kamera Posisi
posisi kamera juga telah memberikan sedikit kesulitan. Apa yang harus Anda ingat adalah bahwa posisi kamera ditentukan di dunia-koordinat, dan ketika kita melakukan penerjemahan, kami peta dunia kembali ke kamera, tidak peta kamera ke dalam dunia.Jadi, ketika kita menerjemahkan, dunia akan bergerak menuju kamera. Untuk melakukan itu, kita perlu menerjemahkan oleh vektor negatif. Dan vektor itu adalah posisi kamera. Kembali ke metafora saya "tangan", bayangkan bahwa posisi tangan Anda adalah posisi kamera.

Ruang, (0, 0, 0), Dan Hal-hal seperti Lainnya
Pertimbangkan apa yang terjadi ketika kita menerapkan-camera.pos untuk setiap-co ordinat dalam ruang. Mereka semua bisa diterjemahkan dengan jumlah yang sama, termasuk kamera, yang akan ditempatkan di (0, 0, 0) - asal. Jadi, Anda bisa memikirkan posisi kamera sebagai asal usul dunia. Namun dunia ruang co-ordinates tidak didefinisikan relatif terhadap titik itu, mereka didefinisikan relatif terhadap (0, 0, 0) (BUKAN CAMERA POINT PIKIRAN!). Jadi, terjemahan dengan bergerak-camera.pos koordinat harus relatif terhadap kamera, bahkan, Anda bisa membuat setiap titik pusat dunia menggunakan sistem tersebut.

Juga, mempertimbangkan apa yang dilakukan rotasi. Cobalah untuk berpikir tidak begitu banyak kamera itu sendiri berputar, melainkan dunia di sekitarnya berputar, yang mundur dipetakan ke alam semesta, yakni, kami tidak mengambil kuda ke pasar, kita membawa pasar untuk kuda.

Nintendo DS Game Engine

Nintendo DS Game Engine
Nintendo mengumumkan perjanjian dengan Metrowerks untuk memberikan pengembang dengan CodeWarrior DS Pembangunan Suite ...
Nintendo dan Metrowerks Corporation hari ini menandatangani perjanjian untuk mendistribusikan dengan segera, suite alat yang komprehensif untuk penciptaan inovatif, permainan yang kaya fitur untuk Nintendo DS yang akan datang.

Nintendo telah dipercayakan Metrowerks sebagai penyedia utama alat pengembangan, yang memungkinkan penciptaan game yang memanfaatkan penuh kemampuan yang unik dari Nintendo DS, seperti touchscreen, pengenalan suara dan komunikasi nirkabel.

Para CodeWarrior Pembangunan Studio untuk Nintendo DS menyediakan pengembang dengan lingkungan, pembangunan yang komprehensif terpadu untuk memproduksi game untuk merevolusi pasar handheld.

"Metrowerks telah mendapatkan reputasi dunia untuk menawarkan perangkat lunak pengembangan kualitas tinggi," kata Satoru Okada, penelitian dan manajer teknik di Nintendo Co, Ltd "Alat-alat yang termasuk dalam Pembangunan CodeWarrior Studio untuk Nintendo DS tidak terkecuali, dan akan memungkinkan permainan pengembang untuk membuat judul menarik yang mengambil keuntungan dari fitur unik ditemukan di Nintendo DS. "

Suite CodeWarrior meliputi fungsi canggih untuk membantu pengembang mengambil kontrol penuh arsitektur dual core DS ARM, termasuk:

A multi-core, thread debugger sadar yang bekerja secara simultan pada ARM 9 dan ARM 7 prosesor.
linker ARM lapisan yang mengurangi konsumsi memori dengan memungkinkan pengembang untuk mendeteksi dan menghapus kode yang belum digunakan dalam aplikasi terkait.
Sebuah antarmuka baris perintah, yang mudah-ke-menggunakan antarmuka pengguna grafis dan cache melihat kemampuan yang menyederhanakan pengalaman pembangunan.
Kompiler ARM sepenuhnya dioptimalkan untuk bekerja dengan Nintendo DS.
Nintendo telah mengkonfirmasi bahwa Metrowerks CodeWarrior suite telah dikirim ke lebih dari 100 pengembang di seluruh dunia, untuk memastikan bahwa ada pilihan permainan yang tersedia untuk memulai, saat ini dijadwalkan untuk akhir tahun 2004 di Jepang dan Amerika Utara, dan Eropa selama kuartal pertama tahun 2005.

"The Nintendo DS mengambil memainkan permainan ke tingkat yang baru, dan kami sedang mengembangkan game baru untuk memanfaatkan berbagai kemampuan platform baru ini menarik," kata Yuji Naka, R & D Creative Officer, SEGA Corporation."Pembangunan CodeWarrior Studio untuk Nintendo DS telah membantu kami dengan cepat menciptakan prototipe selama tahap awal pengembangan, dan berkat memeriksa tata bahasa rinci / alarm fungsi layar, kami dapat mengidentifikasi isu-isu pada tahap awal, secara signifikan mengurangi waktu debug."

"The Nintendo DS game mengubah cara akan diputar di seluruh dunia, menantang para pengembang untuk menciptakan pengalaman yang paling sensorik-kaya mungkin untuk perangkat ini," kata Pascal Lalancette, direktur teknis, Ubisoft. "Sangat menyenangkan bahwa Nintendo telah memilih Metrowerks untuk memastikan pengembang game memiliki akses ke alat-alat pengembangan profesional kelas untuk produksi game revolusioner di waktu rilis perangkat.