kurse:efcomputergrafik:teil2:brainstorm

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
kurse:efcomputergrafik:teil2:brainstorm [2019/11/17 14:46]
Ivo Blöchliger [Video kodieren]
kurse:efcomputergrafik:teil2:brainstorm [2019/11/19 09:52]
Ivo Blöchliger
Line 1: Line 1:
 +====== Intro ======
 +  * meine Wenigkeit
 +  * Warum Bezier-Kurven?
 +
 ====== Ziele ====== ====== Ziele ======
   * Physikalisch halbwegs realistische Achterbahn mit Blender   * Physikalisch halbwegs realistische Achterbahn mit Blender
Line 4: Line 8:
  
 ====== Programm ====== ====== Programm ======
 +  * Software auf Schulcomputern: https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:blc:informatik:glf19:glf19#make_the_computer_zimmer_great_again
   * Demo mit Inkscape (https://inkscape.org/release/0.92.4/windows/64-bit/)   * Demo mit Inkscape (https://inkscape.org/release/0.92.4/windows/64-bit/)
   * Geometrische Definition   * Geometrische Definition
Line 58: Line 63:
                 print('handle_right', bezpoint.handle_right)                 print('handle_right', bezpoint.handle_right)
  
 +</code>
 +
 +==== Generieren der Daten ====
 +  * https://blender.stackexchange.com/questions/6750/poly-bezier-curve-from-a-list-of-coordinates
 +  * https://docs.blender.org/api/current/bpy.ops.curve.html
 +
 +Working example, adapted to blender 2.8 from https://github.com/zeffii/BlenderPythonRecipes/wiki/Curves
 +<code python>
 +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)  
 </code> </code>
  
  • kurse/efcomputergrafik/teil2/brainstorm.txt
  • Last modified: 2019/11/19 13:50
  • by Ivo Blöchliger