kurse:efcomputergrafik:kw6

Blender-Code, Kameraführung

Aktueller Code: firstspline.blend, HDRI-File

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.

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.$

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.

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:

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

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.txt
  • Last modified: 2020/02/05 20:45
  • by Ivo Blöchliger