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
kurse:efcomputergrafik:teil2:brainstorm [2019/11/17 14:46]
Ivo Blöchliger [Video kodieren]
kurse:efcomputergrafik:teil2:brainstorm [2019/11/19 13:50] (current)
Ivo Blöchliger [Intro]
Line 1: Line 1:
 +====== Intro ======
 +  * meine Wenigkeit
 +    * mein mickgriges Namensgedächtnis
 +  * Warum Bezier-Kurven?
 +
 ====== Ziele ====== ====== Ziele ======
   * Physikalisch halbwegs realistische Achterbahn mit Blender   * Physikalisch halbwegs realistische Achterbahn mit Blender
Line 4: Line 9:
  
 ====== 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 64:
                 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.1573998412.txt.gz
  • Last modified: 2019/11/17 14:46
  • by Ivo Blöchliger