Книга: Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Кривая

Кривая

Эта программа добавляет кривую Безье. Она также добавляет круг Nurbs, который используется как bevel-объект.


#----------------------------------------------------------
# File curve.py
#----------------------------------------------------------
import bpy 
def createBevelObject():
    # Создание Bevel-кривой и объекта
    cu = bpy.data.curves.new('BevelCurve', 'CURVE')
    ob = bpy.data.objects.new('BevelObject', cu)
    bpy.context.scene.objects.link(ob)
    # Настройка некоторых атрибутов cu.dimensions = '2D'
    cu.resolution_u = 6
    cu.twist_mode = 'MINIMUM'
    ob.show_name = True
    # Координаты управляющих точек
    coords = [
        (0.00,0.08,0.00,1.00),
        (-0.20,0.08,0.00,0.35),
        (-0.20,0.19,0.00,1.00),
        (-0.20,0.39,0.00,0.35),
        (0.00,0.26,0.00,1.00),
        (0.20,0.39,0.00,0.35),
        (0.20,0.19,0.00,1.00),
        (0.20,0.08,0.00,0.35)
    ]
    # Создание сплайна и установка управляющих точек
    spline = cu.splines.new('NURBS')
    nPointsU = len(coords)
    spline.points.add(nPointsU)
    for n in range(nPointsU):
        spline.points[n].co = coords[n]
    # Настройка атрибутов сплайна. Точки, вероятно, должны существовать к этому моменту.
    spline.use_cyclic_u = True
    spline.resolution_u = 6
    spline.order_u = 3
    return ob  
def createCurveObject(bevob):
    # Создание кривой и объекта
    cu = bpy.data.curves.new('MyCurve', 'CURVE')
    ob = bpy.data.objects.new('MyCurveObject', cu)
    bpy.context.scene.objects.link(ob)
    # Настройка некоторых атрибутов
    cu.bevel_object = bevob
    cu.dimensions = '3D'
    cu.use_fill_back = True
    cu.use_fill_front = True
    ob.show_name = True
    # Координаты Безье
    beziers = [
        ((-1.44,0.20,0.00), (-1.86,-0.51,-0.36), (-1.10,0.75,0.28)),
        ((0.42,0.13,-0.03), (-0.21,-0.04,-0.27), (1.05,0.29,0.21)),
        ((1.20,0.75,0.78), (0.52,1.36,1.19), (2.76,-0.63,-0.14)) ]
    # Создание сплайна и установка управляющих точек Безье
    spline = cu.splines.new('BEZIER')
    nPointsU = len(beziers)
    spline.bezier_points.add(nPointsU)
    for n in range(nPointsU):
        bpt = spline.bezier_points[n]
        (bpt.co, bpt.handle_left, bpt.handle_right) = beziers[n]
    return ob 
def run(origin):
    bevob = createBevelObject()
    bevob.location = origin
    curveob = createCurveObject(bevob)
    curveob.location = origin
    bevob.select = False
    curveob.select = True
    bpy.ops.transform.translate(value=(2,0,0))
    return
if __name__ == "__main__":
   run((0,0,0))

Оглавление книги


Генерация: 0.687. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз