gpt4 book ai didi

python - 如何创建 Material 、选择它、使用该 Material 创建新节点并对它们进行动画处理?

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:22 28 4
gpt4 key购买 nike

我正在寻找一种方法来创建新 Material 并选择它,以在此 Material 中创建节点并对这些节点中的值进行动画处理。这是我实际拥有的代码:

mat = bpy.ops.material.new()
mat_nodes = bpy.data.materials['USDiscoMaterial'].node_tree.nodes

但实际上,使用此代码,Blender 会将当前 Material 重命名为“USDiscoMaterial”,并创建一个新 Material 但不选择它。如果我想在这个 Material 中创建一个节点?

最佳答案

您可以创建一种使用节点(用于循环)的新 Material -

mat = bpy.data.materials.new(name='USDiscoMaterial')
mat.use_nodes = True
mat_nodes = mat.node_tree.nodes
mat_links = mat.node_tree.links
# a new material node tree already has a diffuse and material output node
output = mat_nodes['Material Output']
diffuse = mat_nodes['Diffuse BSDF']

要添加新节点,请使用node_tree.nodes.new('type'),其中可以找到可用节点类型的列表 on this page 。大多数节点将其可编辑值存储在用于连接节点的输入套接字中。如果节点具有没有输入连接的值,您可以在每个节点的 api 引用中找到属性名称。

noise = mat_nodes.new('ShaderNodeTexNoise')
noise.inputs['Detail'].default_value = 5.0
cur_frame = bpy.context.scene.frame_current
noise.inputs['Detail'].keyframe_insert('default_value', frame=cur_frame)

要使 Material 正常工作,您还需要在节点之间添加链接 -

mat_links.new(noise.outputs['Color'], diffuse.inputs['Color'])

检查对象中是否有可用的 Material 槽后,您可以将 Material 分配给该对象。

obj = bpy.context.active_object
if len(obj.material_slots) == 0:
bpy.ops.object.material_slot_add()

obj.material_slots[0].material = mat

关于python - 如何创建 Material 、选择它、使用该 Material 创建新节点并对它们进行动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36185377/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com