Blender> Добавление узлов к источнику света Python - PullRequest
1 голос
/ 21 марта 2020

Я новичок в Python и сценарии для Blender. До сих пор у меня работал метод «копирования с консоли», но я врезался в стену.

Я сделал надстройку для Blender 2.8, которая добавляет и размещает три области света в сцене , Я хотел бы добавить конвертер Blackbody к каждому источнику света, установить значение 5000 и подключить его к шейдерному излучению, но я продолжаю получать ошибки в соответствии с

AttributeError: 'AreaLight' У объекта нет атрибута 'add_node'

со всеми вариантами пути, которые я пробовал.

Вот скрипт basi c для каждого используемого мной источника света:

import bpy

bpy.ops.object.light_add(type='AREA', radius=10, location=(5, 1.5, 5))
bpy.context.active_object.data.use_nodes = True
bpy.context.active_object.data.node.add_node(type="ShaderNodeBlackbody", use_transform=True)
bpy.context.active_object.name = "Area_Right"
bpy.context.active_object.data.shape = 'RECTANGLE'
bpy.context.active_object.data.energy = 300
bpy.context.active_object.data.size = 1
bpy.context.active_object.data.size_y = 3

bpy.context.active_object.data.node.add_node (type = "ShaderNodeBlackbody", use_transform = True)

- это строка, которая блокировала меня последние несколько недель.

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 22 марта 2020

Итак, я нашел решение, и OF! КУРС! это заняло у меня менее 20 минут поиска в Google. 100

Вот решение:

light   = bpy.context.active_object.data
nodes   = light.node_tree.nodes
node_bb = nodes.new(type="ShaderNodeBlackbody")
node_bb.inputs[0].default_value = 5000
node_bb.location = -200,300
node_ox = nodes.get('Emission')
links   = light.node_tree.links
link    = links.new(node_bb.outputs[0], node_ox.inputs[0])`

Я настроил код из этих двух сообщений:

Циклы управления узлами и свойствами материала в Python

Добавление узлов к материалу с помощью Python

Если вы хотите использовать сценарий или просмотреть его и предложить улучшения, я опубликованная версия 1.2 Аддона к Github:

Blender QLE

...