Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kurse:efcomputergrafik:kw6 [2020/02/04 07:46] – Ivo Blöchliger | kurse:efcomputergrafik:kw6 [2020/02/05 19:45] (current) – [Berechnung] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Blender-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. | ||