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
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

radius=0.5,

fill=True,

view_align=True,

location=(n-3,2,0)

)

bpy.context.object.data.materials.append(mat)

# Затем перемещение его на новый слой

layers = 20*[False]

layers[n+11] = True

bpy.ops.object.move_to_layer(layers=layers)

return

def run():

# Создание нескольких материалов

red = bpy.data.materials.new('Red')

red.diffuse_color = (1,0,0)

green = bpy.data.materials.new('Green')

green.diffuse_color = (0,1,0)

blue = bpy.data.materials.new('Blue')

blue.diffuse_color = (0,0,1)

# Три метода перемещения объектов в новый слой

createOnLayer(red)

changeLayerData(green)

moveLayerOperator(blue)

# Выбор слоёв 14 - 20

scn = bpy.context.scene

bpy.ops.object.select_all(action='SELECT')

for n in range(13,19):

scn.layers[n] = True

# Отмена выбора слоёв 1 - 13, но только впоследствии.

# Похоже, по крайней мере один слой должен быть выбран всегда.

for n in range(0,13):

scn.layers[n] = False

# Отмена выбора слоя 16

scn.layers[15] = False

return

if __name__ == "__main__":

run()

Группы

Эта программа показывает, как создавать группы, добавлять объекты в группы, и пустышки, которые дублируют группы. Мы добавляем четыре группы, четыре меш-объекта назначаются каждый в две группы, и четыре текстовых объекта назначаются каждый в единственную группу. Затем мы добавляем четыре пустышки, которые будут дубликатами (dupli-group) четырёх групп. Наконец пустышки перемещаются, так что каждая колонка содержит элементы в этой группе.

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

# File groups.py

# Create groups

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

import bpyimport mathutils

from mathutils

import Vector

# Слои

Display = 5

Build = 6

def setObject(name, mat):

ob = bpy.context.object

ob.name = name

ob.data.materials.append(mat)

return ob

# Перемещение объекта в данный слой.

def moveToLayer(ob, layer):

ob.layers[layer] = True

for n in range(20):

if n != layer:

ob.layers[n] = False

return

# Добавление объекта TextCurve в слое 13

def addText(string, loc):

tcu = bpy.data.curves.new(string+'Data', 'FONT')

text = bpy.data.objects.new(string+'Text', tcu)

tcu.body = string

tcu.align = 'RIGHT'

text.location = loc

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

# Нужно изменить text.layers после того, как текст будет привязан к сцене,

# в противном случае изменение не сможет сработать. moveToLayer(text, Build)

return text

def run():

# Создание двух материалов

red = bpy.data.materials.new('RedMat')

red.diffuse_color = (1,0,0)

green = bpy.data.materials.new('GreenMat')

green.diffuse_color = (0,1,0)

# Позиции

origin = Vector((0,0,0))

dx = Vector((2,0,0))

dy = Vector((0,2,0))

dz = Vector((0,0,2))

# Размещение объектов на слой построения (Build)

layers = 20*[False]

layers[Build] = True

# Создание объектов

bpy.ops.mesh.primitive_cube_add(location=dz, layers=layers)

redCube = setObject('RedCube', red)

bpy.ops.mesh.primitive_cube_add(location=dx+dz, layers=layers)

greenCube = setObject('GreenCube', green)

bpy.ops.mesh.primitive_uv_sphere_add(location=2*dx+dz, layers=layers)

redSphere = setObject('RedSphere', red)

bpy.ops.mesh.primitive_uv_sphere_add(location=3*dx+dz, layers=layers)

greenSphere = setObject('GreenSphere', green)

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

redText = addText('Red', -dx)

greenText = addText('Green', -dx)

cubeText = addText('Cube', -dx)

sphereText = addText('Sphere', -dx)

# Создание групп

redGrp = bpy.data.groups.new('RedGroup')

greenGrp = bpy.data.groups.new('GreenGroup')

cubeGrp = bpy.data.groups.new('CubeGroup')

sphereGrp = bpy.data.groups.new('SphereGroup')

# Таблица членов групп

members = {

redGrp : [redCube, redSphere, redText],

greenGrp : [greenCube, greenSphere, greenText],

cubeGrp : [redCube, greenCube, cubeText],

sphereGrp : [redSphere, greenSphere, sphereText] }

# Привязка объектов к группам

for group in members.keys():

for ob in members[group]:

group.objects.link(ob)

# Список пустышек

empties = [

('RedEmpty', origin, redGrp),

('GreenEmpty', dy, greenGrp),

('CubeEmpty', 2*dy, cubeGrp),

('SphereEmpty', 3*dy, sphereGrp) ]

# Создание пустышек и размещение их в слое отображения (Display)

scn = bpy.context.scene

for (name, loc, group) in empties:

empty = bpy.data.objects.new(name, None)

empty.location = loc

empty.name = name

empty.dupli_type = 'GROUP'

empty.dupli_group = group

scn.objects.link(empty)

moveToLayer(empty, Display)

# Слой отображения назначается активным слоем

scn.layers[Display] = True

for n in range(20):

if n != Display:

scn.layers[n] = False

return

if __name__ == "__main__":

run()

Решётка (Lattice)

Эта программа добавляет ico-сферу, деформированную решёткой. Модификатор решётки действует только на группу вершин в верхней половине сферы.

File latticepy - фото 11

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

# File lattice.py

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

import bpy

def createIcoSphere(origin):

# Создание ico-сферы

bpy.ops.mesh.primitive_ico_sphere_add(location=origin)

ob = bpy.context.object

me = ob.data

# Создание групп вершин

upper = ob.vertex_groups.new('Upper')

lower = ob.vertex_groups.new('Lower')

for v in me.vertices:

if v.co[2] > 0.001:

upper.add([v.index], 1.0, 'REPLACE')

elif v.co[2] < -0.001:

lower.add([v.index], 1.0, 'REPLACE')

else: upper.add([v.index], 0.5, 'REPLACE')

lower.add([v.index], 0.5, 'REPLACE')

return ob

def createLattice(origin):

# Создание решётки и объекта

lat = bpy.data.lattices.new('MyLattice')

ob = bpy.data.objects.new('LatticeObject', lat)

ob.location = origin ob.show_x_ray = True

# Привязка объекта к сцене

scn = bpy.context.scene

scn.objects.link(ob)

scn.objects.active = ob

scn.update()

# Установка атрибутов решётки

lat.interpolation_type_u = 'KEY_LINEAR'

lat.interpolation_type_v = 'KEY_CARDINAL'

lat.interpolation_type_w = 'KEY_BSPLINE'

lat.use_outside = False

lat.points_u = 2

lat.points_v = 2 lat.points_w = 2

# Расстановка точек решётки

s = 1.0

points = [

(-s,-s,-s), (s,-s,-s), (-s,s,-s), (s,s,-s),

(-s,-s,s), (s,-s,s), (-s,s,s), (s,s,s)

]

for n,pt in enumerate(lat.points):

for k in range(3):

pt.co_deform[k] = points[n][k]

pass

return ob

def run(origin):

sphere = createIcoSphere(origin)

lat = createLattice(origin)

# Создание модификатора решётки

mod = sphere.modifiers.new('Lat', 'LATTICE')

mod.object = lat

mod.vertex_group = 'Upper'

# Решётка в режиме редактирования для лёгкого деформирования

bpy.context.scene.update()

bpy.ops.object.mode_set(mode='EDIT')

return

if __name__ == "__main__":

run((0,0,0))

Кривая

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

File curvepy - фото 12

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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