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

ЖАНРЫ

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

Larsson Thomas

Шрифт:

return (mod.settings, None)

def run(origin):

domain = createDomain(origin)

fluid = createFluid(origin)

obst = createObstacle(origin)

inflow = createInflow(origin)

outflow = createOutflow(origin)

(settings, pset) = createFluidParticle('Drops',

origin+Vector((-2,7,0)), (True, False, False))

settings.particle_influence = 0.7

settings.alpha_influence = 0.3

(settings, pset) = createFluidParticle('Floats',

origin+Vector((0,7,0)), (False, True, False))

(settings, pset) = createFluidParticle('Tracer',

origin+Vector((2,7,0)), (False, False, True))

settings.particle_influence = 1.5

settings.alpha_influence = 1.2

return

if __name__ == "__main__":

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

bpy.ops.object.delete run(Vector((0,0,0)))

#bpy.ops.fluid.bake

Ноды

Эта

программа создаёт нодовую сеть.

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

# File nodes.py

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

import bpy, math

# Включение нодов

bpy.context.scene.use_nodes = True

tree = bpy.context.scene.node_tree

links = tree.links

# Удаление нодов по-умолчанию

for n in tree.nodes:

tree.nodes.remove(n)

# Создание входного нода Render layer

rl = tree.nodes.new('R_LAYERS')

rl.location = 0,200

# Создание нода SEP_RGBA

sep = tree.nodes.new('SEPRGBA')

sep.name = "Split"

sep.location = 200,200

links.new(rl.outputs[0],sep.inputs[0])
# image-image

# Создание нода VIEWER

viewer = tree.nodes.new('VIEWER')

viewer.label = "Alpha"

viewer.location = 400,400

links.new(sep.outputs[3],viewer.inputs[0])
# A-image

# Создание нода COMBRGBA

comb = tree.nodes.new('COMBRGBA')

comb.label = "Cyan"

comb.location = 400,200

links.new(sep.outputs[1],comb.inputs[2])
# G - B

links.new(sep.outputs[2],comb.inputs[1])
# B - G

#
Создание нода HUE_SAT

hs = tree.nodes.new('HUE_SAT')

hs.label = "Violet"

hs.location = 600,200

hs.color_hue = 0.75

hs.color_saturation = 1.5

links.new(comb.outputs[0],hs.inputs[1])
# image-image

# Создание нода вывода

comp = tree.nodes.new('COMPOSITE')

comp.location = 600,400

links.new(hs.outputs[0],comp.inputs[0])
# image-image

Так это всё стандартные ноды, их и так добавить можно... А где программируемые, PyNode???
– возмущение переводчика.

Пакетный запуск

Программа запускает все скрипты в каталогах object и simulation. Основной целью является проверить, что все скрипты выполняются правильно, или, по крайней мере, что они могут быть выполнены, не вызывая ошибок.

Большинство скриптов не смогут работать в более ранних версиях Блендера. Чтобы убедиться, что мы не застряли в устаревшем Блендере, мы сначала проверяем текущую версию Блендера, которая доступна как

bpy.app.version
.

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

# File batch.py

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

import bpy, sys, os, mathutils

from mathutils import Vector

# Проверка версии Блендера

version = [2, 57, 0]

(a,b,c) = bpy.app.version

if b < version[1] or (b == version[1] and c < version[2]):

msg = 'Blender too old: %s < %s' % ((a,b,c), tuple(version))

raise NameError(msg)

# Удаление всех старых объектов, так что мы начинаем с чистого листа.

scn = bpy.context.scene

for ob in scn.objects:

scn.objects.active = ob

print("Delete", ob, bpy.context.object)

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

scn.objects.unlink(ob)

del ob

# Путь к коду. Вы должны изменить его, если вы разместили

# папку примеров не в вашем домашнем каталоге

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