zurück zum eigentlichen thema ![]()
Mich würde interessieren, was bei Computerspielen alles an höherer Mathematik für die Entwicklung verwendet wird. Da es mein Spezialgebiet betrifft, würde mich vor allem Interessieren, wo Quaternionen zum Einsatz kommen. Zumindest über den ersten Tomb-Raider-Teil las ich mal, daß sie dort in der 3D-Engine verwendet wurden.
was genau und in welchem maße was verwendet wird kann man natürlich nicht genau sagen. v.a. bei physikengines oder beim prozeduralem generieren
in meinen eher einfachen engines:
einfache vektoren (xyz und oder xyzw; letzteres deutlich weniger da w meist eh als 1 gebraucht wird)
einfache vektoren rechnungen (addition, division, multiplikation etc.), inverse eines vektors, normalisieren, länge eines vektors, dot- und cross-produkte.
bei bedarf interpolationen (meist lineare interpolationen in meinem fall, aber da gibts ja einige mehr)
matrizen-rechnungen meist mit 3x3 und 4x4 matrizen (v.a. letztere)
hier reichen meist auch recht einfache dinge (matrizen-multiplikation, homogene transformations-matrizen)
in den grafik-apis werden eh so gut wie immer 4x4 matrizen verwendet
in sachen shadern kanns komplexer werden
aber *wirklich* komplizierte sachen aus der numerik werden in spielen nicht soo oft verwendet imo
quaternions nutze ich selber selten.
die lassen sich eher schlecht vorstellen. für rotationen werden die zwar verwendet und haben auch ihre vorteile, keine frage. ich selber kann aber mit den up,right,forward vektoren einer matrix eher etwas anfangen (also eher mein gehirn) - die gleiche rotation mit einem quaternion kann ich mir aber schlecht vorstellen. soll heißen - wenn ich solch ein quaternion sehe, weiss ICH (nicht der rechner) nicht sofort wie genau der im raum steht.
vorteil wäre natürlich, dass mit einem quaternion die gleiche rotation mit 4 floats dargestellt werden kann, und nicht mit 9 wie bei der 3x3 matrix. und quaternions sind nicht grimbal lock anfällig.
nachteile wären etwa, dass, wenn du womöglich eh laufend quaternions zu matrizen konvertieren musst (der positions-vektor einer 4x4 matrix muss ja noch bedacht werden, und wie gesagt fast alle apis erwarten letztendlich matrizen). musst halt immer absehen ob es von vorteil für das programm ist.
ich verwende die bisher eigentlich nur bei skeletanimation (einzelne bones-rotationen werden mit quaternions abgebildet), und zwar immer normalisiert. slerp-interpolation auch. tomb raider hat es bestimmt auch nur dafür verwendet ![]()
eine nicht grimbal-lock anfällige camera kann auch sinn machen. hauptsache ist halt das bei bedarf so schnell wie möglich eine transformationsmatrix eines (v.a. zu rendernden) objekts (oder die inverse davon) zur verfügung steht - wie genau ist egal ![]()
von den komplizierteren algorithmen aus der numerik (QR-, Jacobi etc-Zerlegung, Newton-Verfahren etc. was ich so in numerik mal hatte) hab ich bei *spielprogrammierung* bisher nicht viel gesehen.
werden bestimmt benutzt bei irgendwelchen pack-algorithmen oder bei komprimierung von bildern (s3tc zb), aber die sachen sind halt schon da und da benutzt man die einfach ![]()
