Tematy matematyczne do programowania grafiki 3D [zamknięte]


14

Rozumiem, że następujące zagadnienia matematyczne są wymagane do programowania grafiki 3D. Niektóre z nich zacząłem robić na kursie matematyki. Czy ktoś może skierować mnie w stronę zasobu, który wyjaśnia, w jaki sposób stosuje? Jakie problemy z grafiką / grami są rozwiązywane?

  • matematyka wektorowa
  • matematyka macierzowa
  • czwartorzędy
  • algebra liniowa

O ile widzę, są to wszystkie tematy algebry liniowej / macierzy. Czy są wymagane inne tematy?


To pytanie zawiera kilka dobrych informacji na ten temat: gamedev.stackexchange.com/questions/2029/…
michael.bartnett

@beardcp Mogę posunąć się aż do duplikatu.
Kaczka komunistyczna

Odpowiedzi:


10

Algebra liniowa jest najważniejszą dyscypliną w programowaniu grafiki 3D, ponieważ jest to język matematyczny opisujący geometrię przestrzenną. Pozostałe trzy tematy to tak naprawdę tylko podzbiory algebry liniowej:

  • Wektory to sposób myślenia o punktach w przestrzeni
  • Macierze to sposoby myślenia o przekształceniach przestrzeni i obiektów: tłumaczenie obiektów, skalowanie ich itp.
  • Czwartorzędy są naturalną reprezentacją dla określonej podgrupy tych przekształceń, rotacji
  • itd itd.

Jeśli chodzi o inne istotne elementy matematyki do programowania grafiki 3D, to zalecam, że nie ma wystarczająco dużo miłości, jest geometria obliczeniowa. Wiele naturalnych problemów sprowadza się do tematów w geometrii obliczeniowej:

  • Jednym z najbardziej naturalnych sposobów określania głośności z zestawu punktów (na przykład w celu zdefiniowania głośności dźwięku, w której będzie odtwarzany określony hałas tła lub głośności mgły itp.), Jest znalezienie wypukłego kadłuba punktów ; istnieją dobre algorytmy do robienia tego w wymiarach 2 i 3, ale nawet algorytmy 2d nie są od razu oczywiste.
  • Problem z określeniem, które obiekty znajdują się w pobliżu danego punktu lub znajdują się blisko siebie (na przykład w celu zmniejszenia liczby obiektów, które należy sprawdzić pod kątem ewentualnych kolizji, lub dowiedzieć się, którzy wrogowie zauważą graczy przy dany punkt) wchodzi w dziedzinę problemów z zapytaniami geometrycznymi i schematami podziału przestrzennego (a zatem w struktury takie jak drzewa BSP i oktawy). Te same ogólne pomysły są również stosowane do odpowiedzi na zapytania dotyczące „śledzenia linii” (na przykład „co uderza ta wiązka laserowa?”)

Następnie zachęcam do zapoznania się z podstawowymi rachunkami, a zwłaszcza metodami numerycznymi dla równań różniczkowych; są one mniej związane z grafiką 3d per se niż z fizyką 3d, ale ogólnie te dwa tematy są dość ściśle powiązane (nawet w przypadku prostych problemów z kinematyką - na przykład w przypadku animacji postaci itp.) i pewna znajomość obu znacznie poszerz swoją wiedzę na temat obu; praca z odpowiednią fizyką jest trudna, jeśli nie niemożliwa, bez takiej samej podstawowej wiedzy z zakresu algebry liniowej, jakiej używa grafika, ale jednocześnie posiadanie wiedzy z zakresu fizyki stanowi kolejny punkt odniesienia dla zrozumienia tematów w grafice.


To była fantastyczna odpowiedź, Steven, dziękuję. Podobało mi się twoje podsumowanie tego, jak myśleć o wektorach, macierzach i czwartorzędach (niestety, bardziej pouczające w 2 sekundy niż mój obecny wykładowca algebry liniowej). Dałeś mi również lepsze zrozumienie rodzajów wyzwań związanych z modelowaniem, jakie stanowią programiści grafiki 3D. Twoje zdrowie!
Katherine Rix,



1

Jeśli znasz współrzędne kartezjańskie, to zastosowanie powyższych tematów do grafiki komputerowej powinno być dość jasne. Istnieją takie samouczki dotyczące OpenGL , które pomogą wyjaśnić zastosowanie matematyki w rozwiązywaniu podstawowych problemów z wyświetlaniem, np. Jak sprawić, by model z ramką wyglądał na obracany. Artykuł w Wikipedii na temat rysowania perspektywicznego może pomóc w odrobinie tła historycznego.

Poza tym istnieje wiele wyświetlanych tematów, które korzystają z formuł matematycznych. Na przykład bryły 3D są zwykle reprezentowane przez triangulacje ich powierzchni. Jak pokazujemy tylko tę część powierzchni, którą „obserwator” powinien zobaczyć (algorytmy ukrytej powierzchni / linii)? Jeśli obiekt ma być oświetlony z określonego źródła / kierunku, jak to współdziała z perspektywą, zapewniając przekonujące odwzorowanie powierzchni?

Oprócz tego istnieje wiele interesujących tematów związanych z modelowaniem, takich jak animacja mgły lub płomienia. Ale transformacja współrzędnych, na której wydaje się koncentrować Twoja lista tematów, jest podstawą wszystkich późniejszych postępów.



1

Nie wszystkie są wymagane. Matematyka wektorowa jest w całej grafice 3D, możesz być w stanie ustawić geometrię, nie znając dokładniejszych punktów matematyki wektorowej, ale rzeczy takie jak mapy wypukłości staną się naprawdę trudne, a ty wpadniesz na fizykę.

Czwartorzędy oferują po prostu inny opis dla niektórych matematyki, może być miło mieć, ale z pewnością nie jest to potrzebne, ponieważ bardziej konwencjonalna matematyka wystarcza do opisania wszelkich obliczeń, które można wykonać z czwartorzędami.

Matematyka macierzowa i algebra liniowa są ze sobą ściśle powiązane, przede wszystkim opisują operacje liniowe na zbiorach liczb. Ale znowu jest to tylko inny sposób opisywania niektórych rzeczy, które można opisać za pomocą wektorów i algebry.

Nie wiem, czy uważasz, że to tylko część podstawowych zagadnień matematycznych, ale trygonometria z pewnością musi również zrobić listę.


Do tej pory widziałem kilka wzmianek o fizyce - czy możesz mi powiedzieć, o czym tu mówisz? Nie dotknąłem tego tematu od 12 lat (tj. Od liceum) i szczerze go nienawidziłem. Być może łatwiej będzie mi jednak znieść jego zastosowanie.
Katherine Rix,

Fizyka newtonowska, przede wszystkim rozdzielczość kolizji. Być może nie uczysz się tego w szkole średniej, ale wszystko to jest bardzo matematyczne, więc jeśli lubisz matematykę, powinieneś być dobry.
aaaaaaaaaaaa
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.