Teoria 3D przed interfejsami API grafiki? [Zamknięte]


19

Jestem inżynierem oprogramowania i mam nadzieję, że przeniosę swoją karierę na rozwój gier. Czytam teraz książkę w 2D za pomocą C ++ / DirectX. Kiedy wchodzę w 3D, wiem, że chcę to zrobić poprawnie. Na przykład nic nie wiem o przestrzeni 3D. Więc jeśli nauczę się tylko interfejsu API, mogę go znać, ale nie wiem, czy mogę rozwinąć z nim interaktywny świat mini 3d. Nie nazwałbym siebie sukcesem, mając po prostu obracającą się skrzynkę z najnowszymi shaderami itp. Moje umiejętności matematyczne sięgają po algebrę trig / liniową i jeszcze w college'u. Wiem, że więcej matematyki ma nadejść. Czy powinienem czytać książki teoretyczne 3D, zanim przejdę do OpenGL / Direct3D, lub jakichkolwiek innych sugestii? Wiem tylko, że API nie będzie uczyć tworzenia gier 3D i nie chcę się później zgubić. Jestem bardzo zorientowany na książki, więc w porządku, jeśli są tam również sugestie. Myśli są mile widziane. Dzięki!

Odpowiedzi:


11

Po usunięciu cię z innej strony czuję się zobowiązany do udzielenia odpowiedzi :)

Sam nie jestem profesjonalistą, ale wziąłem na uniwersytecie kurs grafiki komputerowej 3D i naprawdę pomogło mi to zrozumieć interfejsy API, z których ostatecznie skorzystałem.

Wśród rzeczy, które uważam za szczególnie przydatne:

  1. Matryce transformacji i sposób ich działania, nie tylko do transformacji obiektów, ale także do transformacji widoku, projekcji perspektywicznej itp. To chyba najważniejsza rzecz.
  2. Cała teoria kryjąca się za błyskawicą i cieniem, szczególnie przydatna, gdy zaczynasz zanurzać się w shadery.
  3. Próbkowanie tekstur, mipmapping.
  4. Przydatna jest również teoria kolorów i techniki mieszania.

Zdecydowanie uważam, że są to przedmioty, które można podnieść po przeczytaniu jednej lub dwóch książek na ten temat, pod warunkiem, że masz wykształcenie matematyczne.


Dzięki. Czy słyszałeś o tej książce? Słyszałem, że uczy teorii 3d, ale koncentruje się również na rasteryzacji oprogramowania 3d. Myślę, że nadal może pomóc zrozumieć, co się dzieje. amazon.com/...
Phil

1
@ Filozofia rasteryzacji jest ważna, ale nie wiem, czy zaczałbym od książki zatytułowanej „wskazówki”, a adresowanie do „zaawansowanych” programistów 3D… brzmi jak coś do przeczytania później.
Oak

Czytam teraz tom 1, a to jest tom 2. Wydaje mi się, że łączy cię, ale nigdy na to nie patrzyłem. Wiem, że mówi „zaawansowany”, ale większość twierdzi, że tak nie jest. Pozostanę na liście :)
Phil

1
Ray tracing to także kolejny interesujący temat, ale jest on zbyt wolny dla gier w czasie rzeczywistym
Bryan Denny

@Byran +1 za wzmiankę o tym. Wykorzystuje się go jednak do obliczania oświetlenia.
Jonathan Fischoff,

9

Zacznij od zrobienia. W ten sposób odkryjesz to, czego nie wiesz.

Następnie wybierz dobrą książkę z matematyki 3D.

Polecam „3D Math Primer for Graphics and Game Development”

autorzy: Fletcher Dunn i Ian Parberry. (Wordware)

Bardzo jasne, do rzeczy, istotne - z kodem C ++ i wszystkim.

Bardzo ważna jest znajomość podstaw punktów, wektorów, transformacji itp.

Ale to nie znaczy, że powinieneś się tego wszystkiego nauczyć przed zanurzeniem. :)


3

Wziąłem wstęp do grafiki komputerowej na studiach (1-2 lata temu), a strona internetowa kursu wciąż działa. Wiele slajdów PowerPoint jest wciąż dostępnych, które mogą być przydatne i pomocne. Tematy obejmują zarówno teorię grafiki 2D, jak i 3D.


2

Jestem w podobnej do ciebie łodzi (chociaż technicznie uczę się rzeczy, które niejasno znałem na studiach), a moim rozwiązaniem było sprawdzenie kilku książek wymienionych w pytaniu „ Dobre książki z teorii matematyki 3D ” tutaj. Jeśli jesteś uczniem książek, może to być dla ciebie dobry sposób. Zwłaszcza jeśli twoja uczelnia nie ma dobrego kursu grafiki 3D (moje nie).


2

Hmmm, kiedy 15 lat temu musiałem stworzyć swoją pierwszą grę 3D (musiałem, bo to moja praca pomaga wytrwać), nie miałem żadnej wiedzy o 3D poza matematyką w szkole średniej. Jeśli masz zamiłowanie do rozwiązywania łamigłówek i czytania, możesz to zrobić samodzielnie i przy pomocy Internetu (comp.graphics.alnodes). Przeczytałem Biblię openGL i http://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(ostrzeżenie oldskool), ponieważ zawierają ważne informacje w tle. Jeśli zrobisz to w ten sposób, możesz zacząć w niewłaściwy sposób, ale w pewnym momencie albo wymarzysz, albo wpadniesz na lepsze rozwiązanie. Większość problemów z 3D można rozwiązać, jeśli masz dobrą znajomość 2D. Dodaj do ogólnego wyzwalacza, pitagoras, macierzy i odwrotności / transpozycji (do projekcji), iloczynu i produktu krzyżowego i tego, do czego ich używasz, czwartorzędów (nie musisz ich rozumieć, po prostu umieć ich używać - możesz to zrobić bez nich są obecnie częścią podstawowego słownictwa) i możesz rozwiązać większość napotkanych problemów. W miarę upływu czasu natkniesz się na lepsze sposoby, ale ci nieliczni mogą rozwiązać wszystko. Najlepszym sposobem jest wyznaczenie sobie celu poza zasięgiem ręki i zmuszenie się do osiągnięcia celu. Problemy, na które napotykasz, musisz się nauczyć, a hej,


2

Blog Wolfire Games ma ostatnio bardzo dobrą serię samouczków na temat algebry liniowej dla twórców gier.

Naprawdę ważne jest, aby zrozumieć matematykę, zanim zaczniesz się uczyć API. W przeciwnym razie kolejność i cel wywołań API nie będą miały dla ciebie większego sensu. Najpierw musisz zrozumieć, co robią dla ciebie na poziomie matematyki.


1

Sugeruję zapisanie się na Game Institute , w szczególności programowanie grafiki z kursami DirectX 9.

Nie musisz brać udziału w interaktywnych zajęciach, jeśli chcesz się samemu uczyć.

Nawiasem mówiąc, istnieje możliwość uzyskania drukowanych książek za bardzo niską dodatkową kwotę. Są tego warte.

Kilka lat temu zrobiłem wiele ich kursów i kursy, choć trochę old-skool są naprawdę całkiem dobre i nie mogę ich wystarczająco polecić - a Gary Simmons jest naprawdę miłym facetem.


1

Przede wszystkim staraj się robić rzeczy. Przede wszystkim wskocz do środka. W przeciwnym razie staniesz się ekspertem w teorii, ale nie w praktyce.

Jeśli uważasz, że pasjonujesz się grafiką, wyobraź sobie, że przez większość swojego życia będziesz uczyć się nowego materiału. To nie tak, że możesz nauczyć się wszystkiego, czego potrzebujesz, zanim zaczniesz. To po prostu nie działa w ten sposób.

W miarę poznawania matematyki grafiki 3D zrozumiecie, że matematyki grafiki komputerowej nie ma, tylko matematykę. Naucz się, jak uczyć się matematyki na własną rękę . Będziesz wtedy w stanie przyswoić sobie nowe techniki przedstawione w literaturze.

W miarę ewolucji technologii graficznych będziemy zapożyczać różne techniki matematyczne. To, co jest dziś popularne, jutro może nie być popularne.

Oto kilka rzeczy, które pozostaną takie same.

W tej chwili uważam, że materiał z Geometrii Algebry dla informatyki jest bardzo interesujący i myślę, że lepiej zacząć od podejścia, jakie układają w grafice komputerowej. http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

Książka wyjaśnia rzeczy takie jak czwartorzędy w znacznie prostszy sposób i może być dla ciebie pomocna w zależności od twojego zaplecza matematycznego i zainteresowań.


1

Nie wybieraj książek z „grafiką komputerową”. Zacznij od algebry liniowej - stanowi podstawę wszystkiego, czego potrzebujesz. MIT ma dobry kurs wideo: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

Stamtąd powinno być łatwo odebrać dowolny tekst wprowadzający do grafiki komputerowej. UoWashington ma kurs online (jednak nie ma wideo): http://www.cs.washington.edu/education/courses/457/06au/lectures/

Jeśli jesteś niecierpliwy, możesz zacząć od kursu graficznego bez algebry liniowej, ale uwierz mi, kiedy powiem, że wróci cię ugryźć :)


1

Jeśli chcesz zrozumieć, jak działa tradycyjny potok renderujący oprogramowanie (a wiele się nie zmieniło nawet po wprowadzeniu programowalnych potoków sprzętowych), jedną z książek, którą zdecydowanie polecam, byłaby książka Jima Blinna: A Trip Down The Graphics Pipeline.

W przeciwieństwie do niektórych innych sugestii, nie jest to szczególnie obszerne, ale jest bardzo czytelne i myślę, że jeśli dopiero zaczynasz pracę z 3D, to dobre wprowadzenie. I jest napisany przez Jima Blinna, który jest jednym z ojców założycieli grafiki komputerowej, i dlatego jest napisany z perspektywy kogoś, kto faktycznie wynalazł / odkrył te techniki.


1

Przez kilka lat byłem absolwentem kursu graficznego na moim uniwersytecie. Ustawiłem sylabus i omówiłem takie rzeczy, jak rasteryzacja oprogramowania i cieniowanie, Java3D, OpenGL itp. Jakiś czas później, w swoim własnym czasie postanowiłem napisać ray-tracer dla mojej własnej edycji. To było niesamowite doświadczenie - z buforem klatek i procedurą putpixel (x, y, kolor), w 500 liniach miałem kod do wygenerowania obrazu z kulkami, trójkątami, cieniowaniem na piksel, cieniami itp. Gdybym musiał powtarzam praktyki na kursach, nalegam, aby uczniowie zrobili ray-tracer. Jest to sposób, aby łatwo przyłapać się na szczegółach algorytmu skanowania przy tworzeniu rastra lub poczuć, że pracujesz przez czarną skrzynkę za pomocą interfejsu API 3D.

Aby uzyskać szybki i solidny dostęp do piaskownicy graficznej, zalecamy napisanie własnego ray-tracera. Oczywiście jest to dalekie od tego, co jest powszechnie stosowane w produkcji grafiki 3D w czasie rzeczywistym, ale jest to naprawdę intuicyjny i kompaktowy sposób, aby zobaczyć i nauczyć się teorii.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.