首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python脚本添加新的Principled材料

使用python脚本添加新的Principled材料
EN

Stack Overflow用户
提问于 2020-07-26 17:32:56
回答 1查看 942关注 0票数 0

我正在尝试使用以下代码添加一个新的原则性bsdf材料:

代码语言:javascript
运行
复制
import bpy

newmat = bpy.data.materials.new("VertCol")
newmat.use_nodes = True
node_tree = newmat.node_tree
nodes = node_tree.nodes

bsdf = nodes.get("Principled BSDF") 

bsdf.inputs['Base Color'].default_value
bpy.data.materials['Material'].node_tree.nodes["Principled BSDF"].inputs[0].default_value
bsdf.inputs['Base Color'].default_value[:]
(0.800000011920929, 0.800000011920929, 0.800000011920929, 1.0)

bsdf.inputs['Base Color'].default_value = (1, 0, 0, 1)
bsdf.inputs['Base Color'].keyframe_insert("default_value", frame=80)
True

bsdf.inputs['Base Color'].default_value = (0,  0, 1, 1)
bsdf.inputs['Base Color'].keyframe_insert("default_value", frame=81)
True

但是我得到了一个错误:第11行的KeyError: 'bpy_prop_collection[key]: key "Material" not found'。第11行是bpy.data.materials['Material'].node_tree.nodes["Principled BSDF"].inputs[0].default_value

有什么建议吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-26 19:58:18

bpy.data.materials包含材质,每个材质都有一个名称。在脚本中,您使用bpy.data.materials.new("VertCol")创建了一个新材质,请求名称为VertCol。因此,新材质将被命名为VertCol,或者如果已经存在,则命名为VertCol.NNN,其中NNN是一个001或更高的数字。然后,您尝试使用bpy.data.materials['Material']访问名为Material的材质。这可能来自于录制来自动作的脚本。

要清理脚本,请将类似的显式命名引用替换为变量引用:

代码语言:javascript
运行
复制
bpy.data.materials['Material'] = newmat
bpy.data.materials['Material'].node_tree.nodes["Principled BSDF"] = bsdf

此外,像bsdf.inputs['Base Color'].default_valueTrue这样的代码行读取值,但不对其执行任何操作。它们可以简单地删除。该脚本似乎包含来自交互式控制台的输入和输出的混合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63098407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档