Чтение онлайн

ЖАНРЫ

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

Larsson Thomas

Шрифт:

# Безье

def makeBezierSpline(cu):

spline = cu.splines.new('BEZIER')

cu.dimensions = '3D'

order = 3

addBezierPoints(spline, order+1)

spline.order_u = order

def addBezierPoints(spline, nPoints):

spline.bezier_points.add(nPoints-1)

bzs = spline.bezier_points

delta = 1/(nPoints-1)

for n in range(nPoints):

bzs[n].co = (0, n*delta, sin(n*pi*delta))

print(bzs[n].co)

for n in range(1, nPoints):

bzs[n].handle_left = bzs[n-1].co

for n in range(nPoints-1):

bzs[n].handle_right = bzs[n+1].co

return spline

#
Создание кривой с объектом и привязка к сцене

def makeCurve(name, origin, dx):

cu = bpy.data.curves.new('%sCurve' % name, 'CURVE')

ob = bpy.data.objects.new('%sObject' % name, cu)

(x,y,z) = origin ob.location = (x+dx,y,z)

ob.show_name = True

bpy.context.scene.objects.link(ob)

return cu

def run(origin):

polyCurve = makeCurve("Poly", origin, 0)

makePolySpline(polyCurve)

nurbsCurve = makeCurve("NurbsEnd", origin, 1)

spline = makeNurbsSpline(nurbsCurve)

spline.use_endpoint_u = True

nurbsCurve = makeCurve("NurbsNoend", origin, 2)

spline = makeNurbsSpline(nurbsCurve)

spline.use_endpoint_u = False

bezierCurve = makeCurve("Bezier", origin, 3)

makeBezierSpline(bezierCurve)

return

if __name__ == "__main__":

run((0,0,0))

Путь

Эта программа добавляет путь и обезьяну с ограничением "следовать по пути" (follow path).

#----------------------------------------------------------

# File path.py

#----------------------------------------------------------

import bpy

def run(origin):

# Создание данных пути и объекта

path = bpy.data.curves.new('MyPath', 'CURVE')

pathOb = bpy.data.objects.new('Path', path)

pathOb.location = origin

bpy.context.scene.objects.link(pathOb)

#
Настройка данных пути

path.dimensions = '3D'

path.use_path = True

path.use_path_follow = True

path.path_duration = 250

# Добавление сплайна к пути

spline = path.splines.new('POLY')

spline.use_cyclic_u = True

spline.use_endpoint_u = False

# Добавление точек к сплайну

pointTable = [(0,0,0,0), (1,0,3,0),

(1,2,2,0), (0,4,0,0), (0,0,0,0)]

nPoints = len(pointTable)

spline.points.add(nPoints-1)

for n in range(nPoints):

spline.points[n].co = pointTable[n]

# Добавление обезьяны

bpy.ops.mesh.primitive_monkey_add

monkey = bpy.context.object

# Добавление ограничения "следовать по пути" обезьяне

cns = monkey.constraints.new('FOLLOW_PATH')

cns.target = pathOb

cns.use_curve_follow = True

cns.use_curve_radius = True

cns.use_fixed_location = False

cns.forward_axis = 'FORWARD_Z'

cns.up_axis = 'UP_Y'

return

if __name__ == "__main__":

run((0,0,0))

bpy.ops.screen.animation_play(reverse=False, sync=False)

Камера и освещение

Эта программа добавляет источник света "солнце" к сцене, и прожекторы (spot) для каждого объекта рендера на сцене. Каждый прожектор имеет ограничение TrackTo, заставляющее быть направленным на свой объект, тогда как солнце отслеживает центр всех объектов, визуализируемых на сцене.

#----------------------------------------------------------

# File camera.py

# Adds one camera and several lights

#----------------------------------------------------------

import bpy, mathutils, math

from mathutils import Vector

from math import pi

def findMidPoint:

# Нахождение позиции середины всех визуализируемых объектов

sum = Vector((0,0,0))

n = 0

Поделиться с друзьями: