kurse:efcomputergrafik:kw6

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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, Kameraführung ====== ====== Blender-Code, Kameraführung ======
  
-Aktueller Code: {{ :kurse:efcomputergrafik:firstspline.blend |firstspline.blend}},  +Aktueller Code: {{ :kurse:efcomputergrafik:firstspline.blend |firstspline.blend}}, {{ :kurse:efcomputergrafik:sunflowers_1k.hdr |HDRI-File}}
-{{ :kurse:efcomputergrafik:sunflowers_1k.hdr |HDRI-File}}+
  
 +===== 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), einmal zur Simulation der Kamerafahrt.
 +
 +
 +==== Kräfte ====
 +Reibungskraft: Proportional zur Normalkraft, Faktor 0.001 bis 0.01
 +
 +Luftwiderstand: $c_w$-Wert von ca. 0.5, $F_w = \frac{\rho c_w A v^2}{2}$ mit $\rho \approx 1$, $A \approx 1$.
 +
 +Energetisch: $W = F \cdot s.$
 +
 +
 +==== 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/\text{fps}$) mit Hilfe der ersten berechnet werden. Da Problem ist, wenn $v=0$ (z.B. beim Anfahren am Anfang).
 +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['Camera']
 +frame = 0
 +cam.animation_data_clear()
 +cam.matrix_world = ( (y.x,y.y,y.z,1), (-an.x, -an.y, -an.z, 1),  (-vv.x,-vv.y,-vv.z,1),  (pp.x, pp.y, pp.z, 0))
 +cam.keyframe_insert(data_path="rotation_euler", frame=frame)
 +cam.keyframe_insert(data_path="location", frame=frame)
 +frame+=1
 +</code>
 +Siehe auch https://blender.stackexchange.com/questions/108938/how-to-interpret-the-camera-world-matrix
 +
 +D.h. die erste Koordinatenrichtung ist rechts, die zweite oben und die dritte ist entgegen der Blickrichtung.
  
  • kurse/efcomputergrafik/kw6.1580802375.txt.gz
  • Last modified: 2020/02/04 08:46
  • by Ivo Blöchliger