Zusammenfassung: Add → Curve → Bezier
import bpy obj = bpy.data.objects['BezierCurve'] if obj.type == 'CURVE': for subcurve in obj.data.splines: curvetype = subcurve.type if curvetype == 'BEZIER': print("curve is closed:", subcurve.use_cyclic_u) for bezpoint in subcurve.bezier_points: print('knot', bezpoint.co) print('handle_left', bezpoint.handle_left) print('handle_right', bezpoint.handle_right)
Working example, adapted to blender 2.8 from https://github.com/zeffii/BlenderPythonRecipes/wiki/Curves
import bpy from mathutils import Vector coordinates = [ ((-1, 0, 0), (-0.7, 0, 0), (-1, 0.5521, 0)), ((0, 1, 0), (-0.5521, 1, 0), (0, 0.7, 0)), ((0, 0, 0), (0, 0.3, 0), (-0.3, 0, 0)) ] def MakeCurveQuarter(objname, curvename, cList, origin=(0,0,0)): curvedata = bpy.data.curves.new(name=curvename, type='CURVE') curvedata.dimensions = '2D' objectdata = bpy.data.objects.new(objname, curvedata) objectdata.location = origin bpy.context.scene.collection.children[0].objects.link(objectdata) polyline = curvedata.splines.new('BEZIER') polyline.bezier_points.add(len(cList)-1) for idx, (knot, h1, h2) in enumerate(cList): point = polyline.bezier_points[idx] point.co = knot point.handle_left = h1 point.handle_right = h2 point.handle_left_type = 'FREE' point.handle_right_type = 'FREE' polyline.use_cyclic_u = True MakeCurveQuarter("NameOfMyCurveObject", "NameOfMyCurve", coordinates)
# Eigene, selbstgeschriebene Bezier-Klasse Bezier = bpy.data.texts["bezier.py"].as_module().Bezier
e = bpy.data.objects['Camera'] e.animation_data_clear() # Loop über die frames # Orthonormales system (y,-an,-vv) und Ursprung pp # wobei -vv die Blickrichtung, -an nach unten zeigt und y nach rechts zeigt. # matrix_world = (rechts, unten, hinten) e.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)) # Rotation und Translation "keyframen" e.keyframe_insert(data_path="rotation_euler", frame=frame) e.keyframe_insert(data_path="location", frame=frame) frame+=1
import numpy as np a = np.array([[3,1], [1,2]]) b = np.array([9,8]) x = np.linalg.solve(a, b) print(x) # Das geht unter Linux ins Terminal, wo Blender gestartet wurde. Keine Ahnung wohin das sonst geht...
ffmpeg -r 30 -i %04d.png test.mkv
Z.B. https://fginfo.ksbg.ch/~ivo/videos/achterbahn-take1.mkv