Membuat objek 3d ke permukaan 2d (sistem tertanam)

9

Saya sedang mengerjakan semacam embedded system, dan dalam waktu senggang saya ingin menguji kemampuan menggambarnya.

Sistem yang dimaksud adalah mikrokontroler ARM Cortex M3 yang terpasang pada papan EasyMX Stellaris. Dan saya punya layar TFT 320x240 kecil :)

Sekarang, saya punya waktu luang setiap hari dan saya ingin membuat kubus yang berputar. Micro C PRO untuk ARM tidak memiliki kemampuan menggambar 3d, yang berarti harus dilakukan dalam perangkat lunak.

Dari buku Pengantar Pemrograman Game 3D dengan DirectX 10 saya tahu aljabar matriks untuk transformasi tetapi itu keren ketika Anda memiliki DirectX untuk mengatur kamera dengan benar.

Saya Gues saya bisa membuat objek 2d untuk memutar, tetapi bagaimana saya akan pergi dengan 3d satu?

Setiap ide dan contoh dipersilakan. Meskipun saya lebih suka saran. Saya ingin memahami ini.

Martin Berger
sumber
@Marin Apa yang telah Anda lakukan sejauh ini? Saya mencoba untuk mencapai hal yang sama. Silakan hubungi saya skype: andreahmed
Ahmed Saleh

Jawaban:

7

Anda menyadari bahwa kamera directX hanya beberapa transformasi matriks? Anda memiliki ModelView, Proyeksi, lalu transformasi matriks Viewport ke setiap titik agar dapat mengubah koordinat 3d menjadi koordinat 2d.

Lebih detail tentang transformasi sepanjang pipeline standar (saya percaya DirectX dan OpenGL keduanya bekerja dengan cara yang sama).

Kemudian Anda rasterize segitiga berdasarkan lokasi 2d (yang dihasilkan dari transformasi Anda) dari sekarang array 2d dari simpul yang Anda miliki. Ini bisa menjadi rumit dengan cepat tetapi menggunakan tes PIT dan sepenuhnya mewarnai setiap piksel yang bertabrakan harus cukup sederhana dan efektif dalam kasus Anda.

Cara lain untuk melakukan ini dan cara yang lebih mudah adalah dengan membuat pelacak sinar. Cukup lepaskan proyeksi sinar dengan menggunakan matriks transformasi yang ingin Anda terapkan pada objek Anda.

Belum bermain-main dengan hal-hal tingkat rendah dalam beberapa saat jadi saya mungkin salah ingat tapi rute mana pun seharusnya tidak terlalu sulit. Memahami cara kerja pipeline perangkat keras dan mengimplementasikannya dalam perangkat lunak atau menulis pelacak sinar.

Btw ini adalah di mana saya belajar apa yang saya tahu tentang pipa grafis.

Klasik
sumber
Referensi pipa yang dapat diprogram untuk OpenGL juga akan berguna karena semua transformasi dikodekan secara manual sekarang.
edA-qa mort-ora-y
@ Guntur klasik. Tentang kamera: ya saya sadari. Tetapi saya tidak tahu bagaimana cara mentransfer semua itu ke sistem ini. Saya pikir mungkin ada semacam persamaan untuk melakukan ini. Dengan demikian menghindari perhitungan matriks. Mungkin saya tidak menulis pertanyaan dengan sangat baik. Tentang pipa: mereka sama. Terima kasih!
Martin Berger
3

Pada hari-hari ketika perangkat keras 3D tidak tersedia, kami harus membangun mesin 3D dan rasterizer poligon kami sendiri. 3DICA adalah tutorial yang bagus menjelaskan semua dasar-dasar mesin 3D perangkat lunak. Bagi saya gambar tidak akan muncul di Firefox, tetapi di Internet Explorer berfungsi dengan baik.

Bab 2.1 dan 3.1 harus cukup untuk memenuhi kebutuhan Anda, tetapi membaca seluruh tutorial akan banyak mengajari Anda.

msell
sumber
Wow. Barang bagus. Saya pikir satu-satunya hal yang saya tidak tahu dari halaman itu adalah bagian dengan splines. Saya tidak punya waktu untuk membahasnya secara mendalam. Untuk sekarang. Terima kasih atas msell itu.
Martin Berger