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

Тут можно читать онлайн Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - описание и краткое содержание, автор Thomas Larsson, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Третье издание, расширенное и обновлённое для Blender 2.57

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - читать онлайн бесплатно полную версию (весь текст целиком)

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - читать книгу онлайн бесплатно, автор Thomas Larsson
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

# 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))

Типы кривых

Эта программа иллюстрирует различие между типами кривых: POLY, NURBS и BEZIER.

File - фото 13

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

# File curve_types.py

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

import bpy

from math import sin, pi

# Poly (многоугольник) и nurbs

def makePolySpline(cu):

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

cu.dimensions = '3D'

addPoints(spline, 8)

def makeNurbsSpline(cu):

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

cu.dimensions = '3D'

addPoints(spline, 4)

spline.order_u = 3

return spline

def addPoints(spline, nPoints):

spline.points.add(nPoints-1)

delta = 1/(nPoints-1)

for n in range(nPoints):

spline.points[n].co = (0, n*delta, sin(n*pi*delta), 1)

# Безье

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 pathpy - фото 14

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

# 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

for ob in bpy.data.objects:

if ob.type not in ['CAMERA', 'LAMP', 'EMPTY']:

sum += ob.location

n += 1

if n == 0:

return sum

else:

return sum/n

def addTrackToConstraint(ob, name, target):

# Добавление ограничения TrackTo

cns = ob.constraints.new('TRACK_TO')

cns.name = name

cns.target = target

cns.track_axis = 'TRACK_NEGATIVE_Z'

cns.up_axis = 'UP_Y'

cns.owner_space = 'WORLD'

cns.target_space = 'WORLD'

return

def createLamp(name, lamptype, loc):

# Создание источника освещения

bpy.ops.object.add(

type='LAMP',

location=loc)

ob = bpy.context.object

ob.name = name

lamp = ob.data

lamp.name = 'Lamp'+name

lamp.type = lamptype

return ob

def createLamps(origin, target):

deg2rad = 2*pi/360

sun = createLamp('sun', 'SUN', origin+Vector((0,20,50)))

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Thomas Larsson читать все книги автора по порядку

Thomas Larsson - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода, автор: Thomas Larsson. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x