这篇文章主要介绍了Blender Python编程如何创建发光材质的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Blender Python编程如何创建发光材质文章都会有所收获,下面我们一起来看看吧。
正文
在 Blender 中,着色器通常是通过基于节点的图形编辑器(可以在 “Shading” 选项卡中找到)来编辑的,它可以让你根据想要构建或多或少复杂的着色流程来链接和组合尽可能多的内置节点。然而,在本文中,我们将制作一个超级简单的着色器,只有一个节点,所以我们将在 Python 脚本 ???? 中做所有的事情。
创建完材质之后会使用那些着色器,并应用到你的 3D 几何物体上。一个物体可能有几个 材质槽,例如,它可以为几何的不同部分使用不同的着色器,但我们今天不会讨论这种复杂的情况,我们将只考虑 每个物体一个材质槽 的情形。
以 发光材质 为例。你可以把它想象成一个有强度(strength 参数)和颜色的大灯泡。它将使你的 3D 对象发光(所以你的对象将成为你场景中的光源,将与其余的网格交互!) ????
PS: 选择 Shader 类型对于这个项目,我使用的 EEVEE 引擎,其也可以与着色器节点工作,即使它与 Cycles 引擎并不是所有节点类型都相同。
在 Python 脚本中创建一个着色器
为了完全通过脚本创建和分配一个着色器,我们必须:
让我们一步一步来做这件事。我们将从创建一个名为 create_emission_shader() 的新函数开始
它将接收一些 强度(Strength) 和 颜色(Color) 参数,并使用这些参数来设置一个基本的 2 节点图,其中有一个发光(Emission)节点和一个输出(Output)节点。
我们的想法
具体代码与注释
创建发光材质
def create_emission_shader(color, strength, mat_name):
# create a new material resource (with its
# associated shader)
mat = bpy.data.materials.new(mat_name)
# enable the node-graph edition mode
mat.use_nodes = True
# clear all starter nodes
nodes = mat.node_tree.nodes
nodes.clear()
# add the Emission node
node_emission = nodes.new(type="ShaderNodeEmission")
# (input[0] is the color)
node_emission.inputs[0].default_value = color
# (input[1] is the strength)
node_emission.inputs[1].default_value = strength
# add the Output node
node_output = nodes.new(type="ShaderNodeOutputMaterial")
# link the two nodes
links = mat.node_tree.links
link = links.new(node_emission.outputs[0], node_output.inputs[0])
# return the material reference
return mat
现在很容易使用这个方法来创建我们的材质资源,并将它们应用到我们的对象上。
例如,我们将需要一个白色的发光材质为光环,一个黄色的发光材质为太阳,为每个行星创建一个随机颜色的发光材质(尽管我将添加更多的蓝色,以更好的整体颜色平衡 ????):
具体调用代码
# ...
N_PLANETS = 6
ring_mat = create_emission_shader(
(1, 1, 1, 1), 1, "RingMat"
)
for n in range(N_PLANETS):
# ...
planet = create_sphere(r, d, "Planet-{:02d}".format(n))
planet.data.materials.append(
create_emission_shader(
(random(), random(), 1, 1),
2,
"PlanetMat-{:02d}".format(n)
)
)
# add the radius ring display
ring = create_torus(d, "Radius-{:02d}".format(n))
ring.data.materials.append(ring_mat)
# add the sun sphere
sun = create_sphere(12, 0, "Sun")
sun.data.materials.append(
create_emission_shader(
(1, 0.66, 0.08, 1), 10, "SunMat"
)
)如果你在 3D 视图中将阴影模式改为 “rendering”,并删除当前场景中的所有对象,然后运行以上脚本,你会看到它们现在有了漂亮的发光材质!


注意,在运行脚本后,你甚至可以进入 “Shading” 选项卡,选择一个带有着色器的对象并查看其着色器图。
它看起来像预期的那样: 两个节点,一个 Emission 和一个 Output,两者之间的链接,以及一些Strength 和 Color 属性的自定义值。
关于“Blender Python编程如何创建发光材质”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Blender Python编程如何创建发光材质”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注天达云行业资讯频道。