【问题标题】:How I can Create a material, select it, create new nodes with this material and Animate them?如何创建材质、选择它、使用该材质创建新节点并为它们设置动画?
【发布时间】:2016-03-24 14:46:05
【问题描述】:

我正在寻找一种创建新材质并选择它的方法,以在此材质中创建节点并为这些节点中的值设置动画。 这是我实际拥有的代码:

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

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

【问题讨论】:

  • 对于搅拌机的具体问题,您应该在blender.stackexchange 获得更多反馈 - 您可能还会发现那里存在您的一些问题。

标签: python nodes blender


【解决方案1】:

您可以创建一个使用节点(用于循环)的新材料 -

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)

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

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

检查对象中有可用的材质槽后,您可以将材质分配给对象。

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

obj.material_slots[0].material = mat

【讨论】:

  • 如果我想添加噪声修饰符?
  • 和我评论你的other one一样
猜你喜欢
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2021-02-13
  • 2018-05-12
  • 2014-12-01
  • 1970-01-01
相关资源
最近更新 更多