Teori 3D sebelum API grafis? [Tutup]


19

Saya seorang insinyur perangkat lunak dan saya berharap untuk menggerakkan karir saya menuju pengembangan game. Saya sedang membaca buku sekarang di 2D menggunakan C ++ / DirectX. Ketika saya masuk ke 3D saya tahu saya ingin melakukannya dengan benar. Sebagai contoh, saya tidak tahu apa-apa tentang ruang 3d. Jadi jika saya hanya belajar API saya mungkin tahu itu, tetapi saya tidak tahu apakah saya bisa mengembangkan dunia mini 3d yang menarik dengannya. Saya tidak akan menyebut diri saya sukses hanya memiliki peti berputar dengan shader terbaru dll. Keterampilan matematika saya adalah untuk memicu / aljabar linier dan masih di perguruan tinggi. Saya tahu lebih banyak matematika akan datang. Haruskah saya membaca buku teori 3D sebelum mengambil di OpenGL / Direct3D, atau saran lain? Saya hanya tahu bahwa API tidak akan mengajarkan pengembangan game 3D dan tidak ingin hilang sesudahnya. Saya sangat berorientasi pada buku sehingga tidak masalah jika ada saran di sana juga. Pikiran dipersilakan. Terima kasih!

Jawaban:


11

Setelah membedahmu di situs lain aku merasa berkewajiban untuk menjawab :)

Saya sendiri tidak profesional, tetapi saya memang mengambil kursus Grafik Komputer 3D di universitas saya dan itu benar-benar membantu saya memahami API yang akhirnya saya gunakan.

Di antara hal-hal yang saya temukan sangat berguna:

  1. Matriks transformasi dan cara kerjanya, tidak hanya untuk transformasi objek tetapi juga untuk melihat transformasi, proyeksi perspektif, dll. Itu mungkin hal yang paling penting.
  2. Seluruh teori di balik kilat dan bayangan, terutama berguna ketika Anda mulai mencoba-coba shader.
  3. Pengambilan sampel tekstur, pemetaan.
  4. Teori warna dan teknik pencampuran juga berguna.

Dan saya pasti berpikir bahwa ini adalah mata pelajaran yang dapat diambil dari hanya membaca satu atau dua buku tentang subjek tersebut, selama Anda memiliki latar belakang matematika.


Terima kasih. Pernahkah Anda mendengar buku ini? Saya mendengarnya mengajarkan teori 3d tetapi juga berfokus pada rasterisasi perangkat lunak 3d. Saya kira itu mungkin masih membantu memahami apa yang terjadi. amazon.com/…
Phil

1
@Phil rasterization itu penting, tapi saya tidak tahu apakah saya akan mulai dengan sebuah buku berjudul "tips" dan membahas pengembang 3D "maju" ... sepertinya sesuatu untuk dibaca nanti.
Oak

Saya membaca volume 1 sekarang dan ini adalah volume 2. Saya kira itu menggabungkan Anda tetapi saya tidak pernah melihatnya. Saya tahu dia mengatakan "maju" tetapi kebanyakan mengatakan tidak. Saya akan menyimpannya dalam daftar :)
Phil

1
Ray tracing juga merupakan topik menarik lainnya, tetapi terlalu lambat untuk game real-time
Bryan Denny

@Byran +1 untuk menyebutkannya. Ini digunakan meskipun pencahayaan pra-perhitungan.
Jonathan Fischoff

9

Mulailah dengan melakukan. Dengan begitu Anda akan menemukan apa yang tidak Anda ketahui.

Kemudian ambil buku bagus tentang matematika 3D.

Saya merekomendasikan 'Primer Matematika 3D untuk Pengembangan Grafis dan Game'

oleh Fletcher Dunn dan Ian Parberry. (Wordware)

Sangat jelas, to the point, relevan - dengan kode C ++ dan semuanya.

Sangat penting untuk mengetahui tentang dasar-dasar titik, vektor, transformasi, dll.

Tapi itu tidak berarti Anda harus mempelajari semuanya sebelum menyelam. :)


3

Saya mengambil kelas Intro to Computer Graphics di perguruan tinggi (1-2 tahun yang lalu) dan situs web kursus masih naik. Banyak slide PowerPoint masih naik sehingga Anda mungkin menemukan berguna dan bermanfaat. Topik mencakup teori grafis 2D dan 3D.


2

Saya berada di kapal yang sama dengan Anda (meskipun saya secara teknis belajar kembali hal-hal yang saya tahu samar-samar di perguruan tinggi), dan solusi saya adalah memeriksa beberapa buku yang disebutkan dalam pertanyaan " Good 3D Math Theory Books " di sini. Jika Anda seorang pembelajar buku, ini mungkin cara yang baik untuk Anda. Terutama jika kampus Anda tidak benar-benar memiliki kursus grafik 3d yang bagus (saya tidak).


2

Hmmm, ketika saya harus membuat game 3D pertama saya sekitar 15 tahun yang lalu (harus seperti pekerjaan saya, yang membantu bertahan) saya tidak punya pengetahuan 3D apa pun selain matematika SMA. Jika Anda memiliki kesukaan untuk memecahkan teka-teki dan membaca, Anda dapat sebagian besar alasan sendiri dan dengan bantuan dari internet (comp.graphics.algorithms faq). Saya memang membaca Alkitab openGL dan http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(peringatan oldskool) karena mereka memberikan informasi latar belakang yang valid. Jika Anda melakukannya dengan cara ini Anda mungkin memulai dengan cara yang salah tetapi pada suatu titik Anda akan bermimpi, atau bertemu, solusi yang lebih baik. Sebagian besar masalah 3d dapat diselesaikan jika genggaman 2d Anda baik. Tambahkan ke trigonometri umum, pythagoras, matriks dan invers / transpos (untuk proyeksi), produk titik & silang dan untuk apa Anda menggunakannya, angka empat (tidak harus memahami mereka, hanya tahu cara menggunakannya - Anda dapat melakukannya tanpa tetapi mereka sekarang menjadi bagian dari kosakata dasar), dan Anda dapat memecahkan sebagian besar masalah yang Anda temui. Saat Anda mulai, Anda akan menemukan cara yang lebih baik, tetapi sedikit yang bisa menyelesaikan apa pun. Cara terbaik adalah menetapkan sendiri tujuan di luar genggaman Anda dan memaksa diri Anda untuk mencapainya. Masalah yang Anda hadapi adalah apa yang perlu Anda pelajari, dan hei, Anda


2

Blog Wolfire Games telah memiliki serangkaian tutorial yang sangat bagus tentang aljabar linier untuk para pengembang game baru-baru ini.

Sangat penting untuk memahami matematika di baliknya sebelum Anda mulai kesulitan mempelajari API. Jika tidak, pesanan dan tujuan panggilan API tidak akan membuat Anda masuk akal. Anda harus memahami apa yang mereka lakukan untuk Anda pada tingkat matematika terlebih dahulu.


1

Saya sarankan Anda mendaftar di Game Institute , khususnya Pemrograman Grafik dengan kursus DirectX 9.

Anda tidak perlu ikut serta dalam kelas interaktif jika Anda hanya ingin belajar sendiri.

Ngomong-ngomong, ada opsi untuk juga mendapatkan buku cetak dengan jumlah tambahan yang sangat rendah. Mereka layak untuk itu.

Saya melakukan banyak kursus mereka beberapa tahun yang lalu dan kursus, meskipun skool tua sedikit sangat bagus dan saya tidak bisa merekomendasikan mereka sangat cukup - ditambah Gary Simmons adalah pria yang sangat baik.


1

Di atas segalanya, cobalah membuat barang. Pertama dan terutama melompat masuk. Jika tidak, Anda akan menjadi ahli teori tetapi tidak berlatih.

Jika Anda berpikir bahwa Anda benar-benar bersemangat dengan grafis, maka bayangkan bahwa Anda akan terus mempelajari materi baru hampir sepanjang hidup Anda. Ini tidak seperti Anda dapat mempelajari semua yang Anda butuhkan sebelum memulai. Itu tidak bekerja seperti itu.

Ketika Anda belajar lebih banyak tentang matematika grafik 3D, Anda akan menyadari bahwa tidak ada matematika grafik komputer, hanya ada matematika. Pelajari cara belajar matematika sendiri . Maka Anda akan dapat mencerna teknik-teknik baru seperti yang disajikan dalam literatur.

Seiring perkembangan teknologi grafis, kami akan meminjam berbagai teknik matematika. Apa yang populer hari ini mungkin tidak akan populer besok.

Berikut adalah beberapa hal yang akan tetap sama.

Saat ini saya menemukan materi dalam Aljabar Geometris untuk Ilmu Komputer sangat menarik, dan berpikir bahwa mungkin lebih baik untuk memulai dengan pendekatan yang mereka tata letak untuk grafik komputer. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Buku ini menjelaskan hal-hal seperti angka empat dengan cara yang lebih sederhana, dan mungkin dapat membantu Anda tergantung pada latar belakang dan minat matematika Anda.


1

Jangan mencari buku "grafik komputer". Mulailah dengan aljabar linier - itu meletakkan dasar untuk semua yang Anda butuhkan. MIT memiliki kursus video yang bagus: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

Dari sana, itu harus lurus ke depan untuk mengambil teks pengantar pada grafik komputer. UoWashington memiliki kursus online (tidak ada video, meskipun): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Jika Anda tidak sabar, Anda bisa mulai dengan kursus grafis tanpa aljabar linier, tapi percayalah ketika saya mengatakan itu akan kembali menggigit Anda :)


1

Jika Anda ingin memahami cara kerja pipeline rendering perangkat lunak tradisional (dan banyak hal tidak berubah banyak bahkan dengan diperkenalkannya pipa perangkat keras yang dapat diprogram), satu buku yang saya pasti akan sarankan adalah buku Jim Blinn: A Trip Down The Graphics Pipeline.

Tidak seperti beberapa saran lainnya, ini tidak terlalu komprehensif, tetapi sangat mudah dibaca dan saya pikir jika Anda baru memulai dengan 3D, itu adalah pengantar yang bagus. Dan itu ditulis oleh Jim Blinn, yang merupakan salah satu pendiri grafis komputer, dan dengan demikian ditulis dari sudut pandang seseorang yang benar-benar menemukan / menemukan teknik-teknik ini.


1

Saya adalah TA untuk kursus grafis di universitas saya selama beberapa tahun. Saya mengatur silabus, dan membahas hal-hal seperti rasterisasi dan naungan perangkat lunak, Java3D, OpenGL, dll. Beberapa waktu setelah ini, pada waktu saya sendiri, saya memutuskan untuk menulis pelacak sinar untuk pengembangan saya sendiri. Ini adalah pengalaman yang luar biasa - dengan penyangga bingkai dan rutin putpixel (x, y, color), dalam 500 baris saya memiliki kode untuk menghasilkan gambar dengan bola, segitiga, bayangan per-pixel, bayangan, dll. Jika saya harus ulangi pracs untuk kursus, saya akan bersikeras bahwa siswa melakukan ray-tracer. Ini adalah cara mudah untuk terperangkap dalam detail algoritme garis pemindaian saat membuat rasterizer, atau merasa seperti Anda bekerja melalui kotak hitam menggunakan API 3D.

Untuk akses cepat dan solid ke kotak pasir grafis, saya sarankan untuk menulis pelacak sinar Anda sendiri. Jelas, ini jauh dari apa yang biasanya digunakan dalam produksi grafik 3D real-time, tetapi ini adalah cara yang sangat intuitif dan ringkas untuk melihat dan mempelajari teorinya.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.