Re: Was genau macht die Software? - 3D-Modeling-Software unterstützt Ageias …
softwareenau wird die Physik hier modelliert? Da werden doch nicht
> mehrere gekoppelte Differentialgleichungen gelöst, oder?
>
> Schöne Grüße, Pechstein
also, mal grob, und das passt prinzipiell für alle physik-engines die
ich bis jetzt gesehen habe:
du hast 2 konzepte:
1. einen nicht verformbaren körper, über den die dynamik modelliert
wird.
dieser körper hat eine masse und nur über seinen massentensor
(im prinzip die verteilung der masse) eine ausdehnung im raum.
diesem körper kannst du im raum positionieren (sollte man bei physik
engines aber eigentlich nur initial machen), ihm eine beschleunigung
/ geschwindigkeit geben, und kräfte an ihn anlegen. ausserdem kannst
du die körper mit sogennannten joints (gelenke, schieber…) in ihren
bewegungsmöglichkeiten einschränken. man nennt sowas constraints (im
zusammenhang mit unten genannten LGS)
2. eine diesem körper zugeordnete geometrie für die
kollisionserkennung.
geschieht eine kollision, so wird der kollisionspunkt berechnet und
ggf. an den zugeordneten körper die passende kraft angelegt bzw.
wieder mit constraints belegt.
bei einem zeitschritt wird geschaut, welche körper “penetrieren” bzw.
sich innerhalb dieses zeitschritts durchdrungen haben (da
unterscheiden sich die physik engines voneinenander, weil das schon
sehr rechenaufwendig sein kann).
im normalfall stellt die physik engine in paar “simple” geometrien zu
verfügung, wie z.B. kugeln oder boxen. da geht das noch recht fix,
langsamer wird es schon bei sog. meshes also wenn die physik-engine
auf die gleiche geometrie wie die grafik-engine aufsetzt.
als nächstes wird entschieden was bei einer kollision passieren soll
(meisst über eine callback-funktion, wo man dann z.B.
materialeigenschaften festlegen kann, oder ob man die kollision
ignorieren will).
im prinzip erzeugt man dann eine gegenkraft, die das durchdringen
wieder aufhebt, bzw. dem körper eine bewegungsrichtung “verbietet”,
über constraints.
warum 2 getrennte konzepte?
das hat mehrere gründe. z.B. kannst du so körper modellieren, die
sich nicht bewegen aber kollisionen auslösen können (z.B. wände).
ausserdem kannst du körper physikalisch bewegen, ohne dass sie
kollidieren.
berechnung:
teil 1 ist gar nicht so happig, die bewegungen zu berechnen, wenn
einfach nur ein paar kräfte an einen körper anliegen. obwohl das
natürlich je nach anzahl der kräfte/körper schon fies werden kann.
richtig gemein werden aber erst die kollisionen bzw. die constraints.
das ganze läuft auf ein riesiges, mit constraints versehenes lineares
gleichungssystem hinaus, das gelöst werden mus, und genau in der
lösung dieses LGS liegt der 2. rechenhappen (nach der
kollisionserkennung). und der ist so schnell auch nicht mit ein paar
ghz in der cpu zu lösen.
so, sehr grob.