Grafik API'lerinden önce 3D teorisi? [kapalı]


19

Ben bir yazılım mühendisiyim ve kariyerimi oyun gelişimine taşımayı umuyorum. Şu anda 2D'de C ++ / DirectX kullanarak bir kitap okuyorum. 3D'ye girdiğimde doğru yapmak istediğimi biliyorum. Örneğin, 3d uzay hakkında hiçbir şey bilmiyorum. Bu yüzden sadece bir API öğrenirsem bunu bilebilirim ama onunla etkileşimli bir mini 3d dünyası geliştirip geliştiremeyeceğimi bilmiyorum. Kendimi sadece son gölgelendiriciler vb. İle dönen bir sandığa sahip olmak için başarılı bulmazdım. Matematik becerilerim trig / lineer cebire kadar ve hala üniversitededir. Daha fazla matematik geleceğini biliyorum. OpenGL / Direct3D veya diğer önerileri almadan önce 3D teori kitaplarını okumalı mıyım? Bir API'nin 3D oyun geliştirmeyi öğretmeyeceğini ve daha sonra kaybolmak istemediğini biliyorum. Çok kitap odaklıyım, bu yüzden orada öneriler varsa sorun değil. Düşünceler bekliyoruz. Teşekkürler!

Yanıtlar:


11

Sizi diğer sitede kaybettikten sonra cevaplamak zorunda hissediyorum :)

Ben kendim profesyonel değilim, ama üniversitemde bir 3D Bilgisayar Grafikleri dersi aldım ve gerçekten kullandığım API'ları anlamama yardımcı oldu.

Özellikle yararlı bulduğum şeyler arasında:

  1. Dönüşüm matrisleri ve nasıl çalıştıkları, sadece nesne dönüşümleri için değil, dönüşüm, perspektif projeksiyonu vb. İçin de mümkündür.
  2. Şimşek ve gölgenin ardındaki tüm teori, özellikle gölgelendiricilere dalmaya başladığınızda yararlıdır.
  3. Doku örnekleme, mipmap oluşturma.
  4. Renk teorisi ve harmanlama teknikleri de yararlıdır.

Ve kesinlikle bunların matematiksel arka planınız olduğu sürece konu hakkında sadece bir veya iki kitap okumaktan alınabilecek konular olduğunu düşünüyorum.


Teşekkürler. Bu kitabı duydun mu? 3D teorisini öğrettiğini duydum, ancak 3d yazılım rasterleştirmesine de odaklandım. Sanırım neler olup bittiğini anlamaya yardımcı olabilir. amazon.com/…
Phil

1
@Phil rasterleştirmesi önemlidir, ancak "ipuçları" adlı bir kitapla başlayıp başlamamı ve "gelişmiş" 3D geliştiricilere hitap etmem gerektiğini bilmiyorum ... daha sonra okunacak bir şey gibi geliyor.
Meşe

Şu an 1. cilt okuyorum ve bu 2. cilt. Sanırım bunu birleştiriyor ama hiç bakmadım. "Gelişmiş" dediğini biliyorum ama çoğu değil diyor. Listede saklayacağım :)
Phil

1
Işın izleme de başka ilginç bir konu, ama gerçek zamanlı oyunlar için çok yavaş
Bryan Denny

@Byran +1 bahsettiği için. Yine de aydınlatmayı önceden hesaplamak için kullanılır.
Jonathan Fischoff

9

Yaparak başlayın. Bu şekilde bilmediklerinizi keşfedeceksiniz.

Sonra 3D matematik hakkında iyi bir kitap alın.

'Grafik ve Oyun Geliştirme için 3D Matematik Astarı' tavsiye ederim

Fletcher Dunn ve Ian Parberry tarafından hazırlanmıştır. (Wordware)

Çok açık, ilgili, C ++ kodu ve hepsi ile ilgili.

Noktaların, vektörlerin, dönüşümlerin vb. Temellerini bilmek çok önemlidir.

Ama bu, dalmadan önce hepsini incelemeniz gerektiği anlamına gelmez. :)


3

Üniversitede (1-2 yıl önce) Bilgisayar Grafikleri dersine giriş yaptım ve kurs web sitesi hala hazır. PowerPoint slaytlarının birçoğu hala yararlı ve yararlı bulabileceğiniz. Konular hem 2D hem de 3D grafik teorisini kapsar.


2

Sana benzer bir tekneyim (teknik olarak üniversitede bildiğim şeyleri yeniden öğrenmeme rağmen) ve benim çözümüm, " İyi 3D Matematik Teorisi Kitapları " sorusunda bahsedilen kitapların birkaçını kontrol etmek oldu . Bir kitap öğrencisiyseniz, bu sizin için iyi bir yol olabilir. Özellikle kolejinizin gerçekten iyi bir 3d grafik kursu yoksa (benimki yoktu).


2

Hmmm, 15 yıl önce ilk 3B oyunumu yapmak zorunda kaldığımda (işim olduğu gibi, sebat etmeye yardımcı oldu) Lise matematiğinden başka 3D bilgim yoktu. Bulmaca çözme ve okuma konusunda bir sevginiz varsa, çoğunu kendiniz ve internetten biraz yardım alarak (comp.graphics.algorithms faq) aklınıza getirebilirsiniz. OpenGL İncillerini okudum ve http://www.amazon.com/Bilgisayar-Grafik-Principles-Practice-2nd/dp/0201848406(oldskool uyarısı) geçerli arka plan bilgisi verir. Bu şekilde yaparsanız yanlış yola başlayabilirsiniz, ancak bir noktada daha iyi bir çözüm hayal edersiniz veya karşılaşırsınız. 2d kavramanız iyi ise, 3d sorunların çoğu çözülebilir. Genel trig, pisagorlar, matrisler ve tersler / transpozisyon (projeksiyon için), nokta ve çapraz ürün ve bunları ne için kullandığınızı, kuaterniyonlara ekleyin (bunları anlamak zorunda değilsiniz, sadece nasıl kullanacağınızı bilin - bunlar olmadan yapabilirsiniz günümüzde temel kelime dağarcığının bir parçasıdır) ve karşılaştığınız çoğu sorunu çözebilirsiniz. Gittikçe daha iyi yollara çarpacaksınız, ancak bu birkaç kişi her şeyi çözebilir. En iyi yol, kendinizi kavramanızın dışında bir hedef belirlemektir ve kendinizi oraya ulaşmaya zorlamaktır. Karşılaştığınız problemler öğrenmeniz gereken şeyler ve hey, siz


2

Wolfire Games blogu son zamanlarda oyun geliştiricileri için lineer cebir konusunda gerçekten mükemmel bir dizi eğiticiye sahipti.

Bir API öğrenmeye başlamadan önce arkasındaki matematiği anlamak gerçekten önemlidir. Aksi takdirde, API çağrılarının sırası ve amacı sizin için çok anlamlı olmaz. Önce matematik düzeyinde sizin için ne yaptıklarını anlamalısınız.


1

Game Institute'a , özellikle DirectX 9 ile Grafik Programlama derslerine kaydolmanızı öneririm .

Sadece kendi kendine öğrenmek istiyorsan interaktif derslere katılmana gerek yok.

Bu arada, çok düşük bir ek miktar için basılı kitaplar alma seçeneği de vardır. Onlar buna değer.

Birkaç yıl önce derslerinin çoğunu yaptım ve dersler, her ne kadar biraz eski skool gerçekten oldukça iyi ve onları yeterince tavsiye edemem - artı Gary Simmons gerçekten güzel bir adam.


1

Her şeyden önce sadece bir şeyler yapmaya çalışın. İlk ve en önemlisi atlayın. Aksi takdirde teoride uzmanlaşacaksınız ancak pratik yapmayacaksınız.

Grafikler hakkında gerçekten tutkulu olduğunuzu düşünüyorsanız, hayatınızın çoğunda yeni materyaller öğrenmeye devam edeceğinizi hayal edin. Başlamadan önce ihtiyacınız olan her şeyi öğrenebileceğiniz gibi değil. Sadece bu şekilde çalışmaz.

3D grafiklerin matematiği hakkında daha fazla bilgi edindikçe, bilgisayar grafiklerinin matematiği olmadığını, sadece matematik olduğunu fark edeceksiniz. Kendinize nasıl matematik öğreteceğinizi öğrenin . O zaman yeni teknikleri literatürde sunulduğu gibi sindirebileceksiniz.

Grafik teknolojileri geliştikçe farklı matematik teknikleri ödünç alacağız. Bugün popüler olan yarın popüler olmayabilir.

İşte aynı kalacak bazı şeyler.

Şu anda Bilgisayar Bilimi için Geometrik Cebirdeki materyali çok ilginç buluyorum ve bilgisayar grafikleri için düzenledikleri yaklaşımla başlamanın daha iyi olabileceğini düşünüyorum. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Kitap, kuaterniyonlar gibi şeyleri çok daha basit bir şekilde açıklıyor ve matematiksel geçmişinize ve ilgi alanlarınıza bağlı olarak sizin için yararlı olabilir.


1

"Bilgisayar grafikleri" kitaplarına gitmeyin. Doğrusal cebir ile başlayın - ihtiyacınız olan her şeyin temelini atar. MIT'in iyi bir video kursu var: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

Oradan, bilgisayar grafiklerinde herhangi bir giriş metnini almak düz ileri olmalıdır. UoWashington'da çevrimiçi bir kurs var (yine de video yok): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Sabırsızsanız, grafik dersine lineer cebir olmadan başlayabilirsiniz, ancak sizi ısırmaya geri döneceğini söylediğimde inan bana :)


1

Geleneksel bir yazılım oluşturma boru hattının nasıl çalıştığını anlamak istiyorsanız (ve programlanabilir donanım boru hatlarının tanıtımıyla bile işler bu kadar değişmedi), kesinlikle tavsiye edeceğim bir kitap Jim Blinn'in: Grafik Boru Hattı A Trip Down.

Diğer bazı önerilerin aksine, özellikle kapsamlı değil, ancak çok okunabilir ve sanırım 3D'ye yeni başlıyorsanız, iyi bir tanıtım. Ve bilgisayar grafiklerinin kurucu babalarından Jim Blinn tarafından yazılmıştır ve bu nedenle bu teknikleri gerçekten icat eden / keşfeden birinin bakış açısıyla yazılmıştır.


1

Birkaç yıl üniversitemde grafik dersi için TA'ydım. Müfredatı ayarladım ve yazılım rasterleştirmeleri ve gölgeleme, Java3D, OpenGL, vs. gibi şeyleri kapsadım. Bundan bir süre sonra, kendi zamanımda kendi editörüm için bir ışın izleyici yazmaya karar verdim. Bu inanılmaz bir deneyim oldu - bir çerçeve tamponu ve bir putpixel (x, y, renk) rutini ile, 500 satırda küreler, üçgenler, piksel başına gölgeleme, gölgeler vb.İle bir görüntü oluşturmak için kodum vardı. dersler için pratik yapmak, öğrencilerin bir ışın izleyici yapmak ısrar ediyorum. Bir rasterleştirici oluştururken bir tarama çizgisi algoritmasının ayrıntılarına takılmanın veya bir 3D API kullanarak bir kara kutu üzerinde çalıştığınızı hissetmenin kolay bir yoludur.

Grafik sanal alanına hızlı ve sağlam erişim için kendi ışın izleyicinizi yazmanızı öneririm. Açıkçası, bu üretim gerçek zamanlı 3D grafiklerde yaygın olarak kullanılandan çok uzaktır, ancak teoriyi görmek ve öğrenmek için gerçekten sezgisel ve kompakt bir yoldur.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.