Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
kurse:efcomputergrafik:kw6 [2020/02/04 08:46] Ivo Blöchliger created |
kurse:efcomputergrafik:kw6 [2020/02/05 20:45] (current) Ivo Blöchliger [Berechnung] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Blender-Code, | ====== Blender-Code, | ||
- | Aktueller Code: {{ : | + | Aktueller Code: {{ : |
- | {{ : | + | |
+ | ===== Simulation der Bewegung ===== | ||
+ | **TODO**: Funktion, die aus | ||
+ | * dem Index der Bezierkurve $i$ und | ||
+ | * dem vorhergehenden Kurven-Parameter $t^-$ | ||
+ | * der vorhergehenden Geschwindigkeit $v$ | ||
+ | * dem nächsten Kurven-Paramter $t^+$ | ||
+ | die neue Geschwindkeit berechnet. Damit kann Reibung, Bremsen und konstante Geschwindkeit auf einem Förderband implementiert werden. | ||
+ | Diese Funktion wird zwei mal gebraucht: Einmal zur Bau der Bahn (Berechnung der Bahnneigung), | ||
+ | |||
+ | |||
+ | ==== Kräfte ==== | ||
+ | Reibungskraft: | ||
+ | |||
+ | Luftwiderstand: | ||
+ | |||
+ | Energetisch: | ||
+ | |||
+ | |||
+ | ==== Berechnung ==== | ||
+ | 2 Varianten: | ||
+ | * Zustand nach einer gegebenen Strecke (für den Schienenbau) (implementiert) | ||
+ | * Zustand nach einer gegebenen Zeit (für die Kameraführung) (noch offen). | ||
+ | |||
+ | Die zweite Variante könnte mit $s=v \cdot t$ (wobei $t=1/ | ||
+ | Als Ausweg kann die Beschleunigung in Bewegungsrichtung herangezogen werden und so $s=\frac{1}{2}at^2$ approximiert werden. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Kamera-Führung ===== | ||
+ | |||
+ | |||
+ | Zustand: $t$ (Ort auf der Bahn), $v_{\text{eff}}$ (aktueller Betrag der Geschwindigkeit) | ||
+ | |||
+ | Schritt: Zeit um 1/framerate vorrücken, der Bahn folgen (z.B. um die Strecke, die mit $v_{\text{eff}}$ in dieser Zeit zurückgelegt würde, oder genauere schrittweise Simulation). Aus der Höhendifferenz und eventuell Reibung die neue Geschwindigkeit berechnen. | ||
+ | |||
+ | Kamera entsprechend positionieren und Keyframe setzen: | ||
+ | |||
+ | <code python> | ||
+ | cam = bpy.data.objects[' | ||
+ | frame = 0 | ||
+ | cam.animation_data_clear() | ||
+ | cam.matrix_world = ( (y.x, | ||
+ | cam.keyframe_insert(data_path=" | ||
+ | cam.keyframe_insert(data_path=" | ||
+ | frame+=1 | ||
+ | </ | ||
+ | Siehe auch https:// | ||
+ | |||
+ | D.h. die erste Koordinatenrichtung ist rechts, die zweite oben und die dritte ist entgegen der Blickrichtung. | ||