blender给模型添加材质 您所在的位置:网站首页 blender怎么导入素材 blender给模型添加材质

blender给模型添加材质

#blender给模型添加材质| 来源: 网络整理| 查看: 265

使用脚本为物体添加材质

在本篇文章中为大家介绍使用脚本为物体添加材质的方式。这篇文章中将介绍两种类型的材质:一个是简单的颜色材质,由rgb三原色和Alpha(透明度)组成,但是修改Alpha似乎看不出效果。另一个则是添加图片纹理作为材质。 在blender中,材质库与物体库都是独立的,即便将物体删除之后,材质还是存在的。所以可以把基本思路定为,建立好需要的材质,然后与物体进行绑定即可,也可以在材质创立好之后就将其与物体绑定,再对该材质进行修改。

新建材质

两种类型的材质都需要首先声明一个材质,声明材质的方式可以有两种:

#使用ops新建 bpy.ops.material.new() #在材质库中使用new方法新建 bpy.data.materials.new('mat')

这两种方法的差异在于,第一个方法的new不能添加参数,也就是不能给定材质的名称,系统会自动生成一个叫做“材质”的材质。如果需要更改名称可以再通过方法来实现。并且第一个方式没有返回,值。第二种方法是有返回值的,也就是说你可以在第二种方法的前面添加“mat=”那么此时“mat”就表示了当前的这个材质,它等价于bpy.data.materials[“mat”]。并且可以看到,第二种方法可以直接为材质赋予名称。和第一种方式相反,使用这种方式声明的材质没有自动选择“使用节点”,因为可能出现找不到“nodes”的错误,即“‘nonetype’ object has no attribute ‘nodes’”。当然,我们可以使用代码打开。

物体绑定材质

该部分只需按照如下方法为物体添加材质即可,在blender中一个物体可以添加多个材质。

bpy.data.objects[object.name].data.materials.append(bpy.data.materials['材质']) 颜色材质

颜色材质像上面说的一样,只需要选择rgb三原色即可,这里的rgb都是0-1的数值,透明度可以直接设置为1。可以看到这里是直接对材质本身进行操作。

bpy.data.materials[colorname].node_tree.nodes["Principled BSDF"].inputs[0].default_value=(r, g, b, a) 图片材质

添加图片纹理相对是比较复杂的,而且我也是花了好些天才找到可以使用的代码,因此写下这段也是本文产生的一个重要动机。这里需要将blender的渲染引擎设置为“CYCLES”。原因在国外一个网站上有网友进行了说明(https://blender.stackexchange.com/questions/95530/how-can-i-connect-a-texture-node-to-a-material-with-python),大体意思是说blender默认引擎是“BLENDER_EEVEE”,但是想要使用节点树时,需要将引擎设置为“CYCLES”。因此便有了下段中的第一行代码。

bpy.context.scene.render.engine = 'CYCLES' mat=bpy.data.materials[colorname] #这里就是上一段的打开“使用节点”开关 mat.use_nodes = True matnodes = mat.node_tree.nodes #新建图片节点 tex = matnodes.new('ShaderNodeTexImage') tex.image = bpy.data.images.load(filepath = "C:\\Users\\ldd\\Desktop\\textures\\buildings\\day\\TexturesCom_Shops0208_S.jpg") # 将图片节点与目标相连 disp=bpy.data.materials[colorname].node_tree.nodes["Principled BSDF"].inputs['Base Color'] mat.node_tree.links.new(disp, tex.outputs[0])

本段的最后一行代码是可以进行拓展的,这段是将原理化bsdf的基础色与图片节点相连,你也可以选择其他节点进行连接。打开blender中的着色编辑器可以非常直观地看到上面代码的执行原理。如图: 在这里插入图片描述

此外,本次使用的图片是我在材质网上下载的图片,大家如果有需要也可以去尝试一下,不充值每周也可以下载几张图片。https://www.textures.com/premiumaccess1?photoId=116858&imageSize=3XL

学习到了本次的编辑方法,那么就可以在导入类似于shp数据时,将纹理信息直接作为一个属性,导入的时候读取该属性,就可以自动生成纹理。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有