Blender程序化设置材质Python
Posted 新缸中之脑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Blender程序化设置材质Python相关的知识,希望对你有一定的参考价值。
本文介绍如何使用 Python 创建新材质、添加着色器、创建新对象并将材质分配给 Blender 中的对象。
首先,创建一种新材质。该函数将字符串作为新材质的名称:
import bpy
def newMaterial(id):
mat = bpy.data.materials.get(id)
if mat is None:
mat = bpy.data.materials.new(name=id)
mat.use_nodes = True
if mat.node_tree:
mat.node_tree.links.clear()
mat.node_tree.nodes.clear()
return mat
然后为材质添加着色器。输入着色器的类型(即漫反射、发射、光泽)和 rgb 颜色:
def newShader(id, type, r, g, b):
mat = newMaterial(id)
nodes = mat.node_tree.nodes
links = mat.node_tree.links
output = nodes.new(type='ShaderNodeOutputMaterial')
if type == "diffuse":
shader = nodes.new(type='ShaderNodeBsdfDiffuse')
nodes["Diffuse BSDF"].inputs[0].default_value = (r, g, b, 1)
elif type == "emission":
shader = nodes.new(type='ShaderNodeEmission')
nodes["Emission"].inputs[0].default_value = (r, g, b, 1)
nodes["Emission"].inputs[1].default_value = 1
elif type == "glossy":
shader = nodes.new(type='ShaderNodeBsdfGlossy')
nodes["Glossy BSDF"].inputs[0].default_value = (r, g, b, 1)
nodes["Glossy BSDF"].inputs[1].default_value = 0
links.new(shader.outputs[0], output.inputs[0])
return mat
然后创建对象,分配材质并调用函数:
def drawObject():
mat = newShader("Shader1", "diffuse", 1, 1, 1)
bpy.ops.mesh.primitive_cube_add(size=2, align='WORLD', location=(0, 0, 0))
bpy.context.active_object.data.materials.append(mat)
drawObject()
以上是关于Blender程序化设置材质Python的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL ES - 如何在 Blender Cycles Render 中实现光泽着色器?
python 对于当前Blender场景中的所有对象,搜索名为MATERIAL.001,MATERIAL.002 ...的材质,并替换为母版