Saya cukup baru dalam pengembangan 3D dalam bentuk apa pun, namun game. Ketika saya membaca tutorial dan contoh, saya menemukan bahwa koordinat X / Y / Z tampaknya sedikit mundur dari tebakan pertama saya.
Saya membayangkan bahwa jika seseorang berjalan di sekitar lapangan, posisi X / Y mereka akan berubah dan jika mereka melompat atau berjalan naik atau turun bukit, maka posisi Z mereka akan berubah. Asumsi saya tampaknya salah karena berjalan di sekitar lapangan tampaknya mengubah X / Z dan melompat atau naik / turun bukit mengubah Y.
1) Apakah pengamatan saya benar? 3D baru bagi saya dan saya mungkin tidak memikirkan hal-hal dengan benar.
2) Apa logika di balik gerakan horisontal menjadi X / Z dan gerakan vertikal menjadi Y?
3) Apakah salah jika saya menggunakan X / Y sebagai gerakan horizontal dan Z sebagai gerakan vertikal dalam Kerangka XNA?
sumber
Jawaban:
Asumsi Anda tidak salah: setiap mesin memperlakukan koordinat ini secara berbeda. Secara umum X hampir selalu merupakan sumbu Timur-Barat tetapi apakah Y atau Z adalah sumbu Ketinggian cenderung bervariasi. Seperti yang saya pahami, Quake 3, Source Engine, dan Torque engine semuanya memiliki Z sebagai up. Begitu juga alat pemodelan 3DS Max. Ini tidak biasa.
Masuk akal untuk memiliki sistem koordinat yang dipesan secara kasar dengan urutan kepentingan yang menurun, sehingga meratakan representasi menjadi dimensi yang lebih sedikit lebih mudah dipahami. Misalnya, jika gim Anda diatur pada peta ketinggian 2D, masuk akal jika Z naik, karena koordinat X dan Y Anda di peta dunia 3D langsung ke koordinat X dan Y di peta ketinggian. Di sisi lain, jika Anda berpikir terutama dalam hal rendering (dan banyak pengembang mesin game melakukannya), Anda terbiasa X dan Y sebagai koordinat layar, jadi menambahkan sumbu ke-3 masuk atau keluar layar secara alami.
Gunakan apa yang paling mudah bagi Anda, tetapi ketahuilah bahwa pilihan apa pun adalah arbitrer dan bahwa Anda mungkin perlu mengonversi di antara mereka dan menggunakan beberapa sistem koordinat dalam satu program.
sumber
Bayangkan ketika melihat selembar kertas yang diletakkan di depan Anda dengan bagan di atasnya, sumbu biasanya diberi label X di bagian bawah dan Y di atas vertikal; ini membuat Z menjadi sumbu luar di sepanjang tanah.
Ini hanya sebuah konvensi, tetapi banyak digunakan dalam grafik di mana kami menganggap Z sebagai kedalaman adegan.
Di bidang lain seperti CAD versi Anda akan lebih umum.
sumber
Idenya adalah bahwa sumbu x dan y tetap sama - y 'naik' di layar, dan x di seberang.
z - dimensi ketiga, memproyeksikan kembali ke layar (mengabaikan masalah wenangan di sini). Dalam 3 dimensi ini jadi sedikit aneh, tetapi untuk memposisikan sesuatu di ruang layar lebih masuk akal.
3) Anda dapat jika Anda mau, tetapi itu akan menyakitkan dan kikuk. Saya akan menyarankan untuk membiasakan diri dengan proyek-Z-ke-luar-monitor.
sumber
1) Ya pengamatan Anda benar.
2) Sistem koordinat XYZ global standar masuk akal ketika Anda berpikir dalam hal penembak orang pertama, ketika Anda melihat melalui mata karakter dalam adegan dengan matriks transformasi (identitas) kosong. Seperti halnya ketika Anda menggambar sistem koordinat pada selembar kertas, X menunjuk ke kanan dan Y menunjuk ke atas. Menurut aturan tangan kanan (x-> ibu jari, y-> jari telunjuk, z-> jari tengah), Z menunjuk ke arah Anda.
3) Itu tidak akan salah, tetapi itu akan menjadi pengalihan dari standar. Ada tiga masalah yang dapat saya pikirkan saat ini: (a) Katakanlah suatu hari Anda ingin menggunakan perpustakaan fisika yang menggunakan kerangka koordinat standar. Jika Anda tidak mengikuti standar, sekarang Anda harus berpikir tentang transformasi yang membawa Anda dari dunia Anda ke dunia fisika. Dapat menjengkelkan saat Anda ingin memperbaiki bug. (B) Ketika Anda ingin berbagi kode dengan seseorang, atau membawa seseorang untuk membantu pengembangan, mereka harus terbiasa dengan konvensi Anda. (C) Ketika menggunakan model 3D standar, Anda harus selalu memiliki transformasi di atas mereka untuk mencegah mereka melihat ke samping.
Sekarang untuk menambahkan pertanyaan 2, sangat berguna untuk menganggap X, Y, dan Z bukan hanya tiga huruf, tetapi juga sebagai benar, naik dan mundur. Setiap karakter dalam adegan memiliki sistem koordinat lokal yang melekat padanya, dan dalam frame koordinat lokal mereka X selalu benar, Y naik dan Z mundur. Setelah Anda memiliki ini, sekarang Anda dapat memahami vektor yang Anda cetak, atau menulis algoritma Anda dengan cara yang masuk akal. Katakanlah Anda memiliki dua karakter A dan B, dan Anda ingin melakukan sesuatu jika salah satu dari mereka berhadapan dengan yang lain. Anda cukup menemukan lokasi B dalam bingkai koordinat A (Ta ^ -1 * p_b), lihat vektor yang Anda dapatkan dan lihat apakah Z (mundur) negatif dan X (kanan) dan Y (atas) kecil, karena vektor itu memberi tahu Anda berapa banyak mundur, kanan dan atas B sehubungan dengan A.
sumber