1
$\begingroup$

I'm trying to approach the beziers, but I'm still not able to understand the situations, so I based myself on a part of this code coming from Getting the list of points that describe a Curve without converting to mesh

In this case as a test I am trying to place a series of cubes in the positions of resolution_u, without success, since when I modify the bezier, the points are always the same, in addition they do not match with the global space, I am not sure that they should be converted with a matrix operation, I don't understand how. In addition I would like to take into account the rotation of these points, so that the cubes actually follow the trend of the curve with the related twists

import bpy ,bmesh ,mathutils

spline = bpy.data.curves[0].splines[0]

if len(spline.bezier_points) >= 2:
    r = spline.resolution_u + 1
    segments = len(spline.bezier_points)
    if not spline.use_cyclic_u:
        segments -= 1

    points = []
    for i in range(segments):
        inext = (i + 1) % len(spline.bezier_points)

        knot1 = spline.bezier_points[i].co
        handle1 = spline.bezier_points[i].handle_right
        handle2 = spline.bezier_points[inext].handle_left
        knot2 = spline.bezier_points[inext].co

        _points = mathutils.geometry.interpolate_bezier(knot1, handle1, handle2, knot2, r)
        points.extend(_points)


for v in points:

    mesh = bpy.data.meshes.new('Cube')
    cube = bpy.data.objects.new('Cube', mesh)                      
    bm = bmesh.new()
    bmesh.ops.create_cube(bm, size=0.1)
    bm.to_mesh(mesh)
    bm.free()
    bpy.context.scene.collection.objects.link(cube)
    bpy.context.view_layer.objects.active = cube

    cube.location = v

The result I get is this, I am completely in the dark with this type of operation, I hope you have patience. enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.