当前位置: 首页 > news >正文

oeasy blender 014 颜色材质的应用

blender014材质Material

  • 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。

颜色设置_color_Material_材质_diffuse_color

开始

  • ​​配套视频​​
  • 上次做了很多c919
  • 每个飞机都有自己的机身、机翼...

  • 如何修改物体的颜色呢?🤔
修改颜色
  • 选择Script工作区
  • 选择3d视图中的立方体
  • 选择Material 材质调板
  • 修改颜色

  • 选择着色器
  • Material Preview
  • 材质预览
效果
  • 立方体对应颜色修改
  • 信息调板观察到操作所对应的代码

  • 粘贴到游乐场
import bpy bpy.data.materials["Material"].node_tree.nodes["Principled BSDF"].inputs[0].default_value = (0, 1, 0, 1)
  • input[0] 怎么理解?
输入端口
  • Blender Principled BSDF节点输入项
  • 索引与命名对应表

索引(inputs[X])

命名标识(inputs['名称'])

说明(简要)

inputs[0]

Base Color

完全等同,均指向基础颜色输入项

inputs[1]

Subsurface

次表面散射强度

inputs[2]

Subsurface Radius

次表面散射半径(红、绿、蓝)

inputs[3]

Subsurface Color

次表面散射颜色

inputs[4]

Metallic

金属度(0~1)

inputs[5]

Specular

镜面反射强度

inputs[6]

Specular Tint

镜面反射色调

inputs[7]

Roughness

粗糙度(0~1)

inputs[8]

Anisotropic

各向异性强度

inputs[9]

Anisotropic Rotation

各向异性旋转角度

inputs[10]

Sheen

光泽强度

inputs[11]

Sheen Tint

光泽色调

inputs[12]

Clearcoat

清漆强度

inputs[13]

Clearcoat Roughness

清漆粗糙度

inputs[14]

IOR

折射率

inputs[15]

Transmission

透射强度(透明度相关)

inputs[16]

Transmission Roughness

透射粗糙度

总结
  1. ​inputs[0]​​和​​Base Color​完全等同,前者是按顺序的索引访问,后者是按名称的标识访问。
  2. Principled BSDF节点的所有输入项都支持索引访问命名访问,表格中列出了常用的对应关系。
  3. 命名访问更具可读性(如​​Base Color​​),索引访问更简洁,但索引顺序固定,若节点更新调整顺序会失效,实际开发中建议优先使用命名访问。
新对象属性总结
  • 在原来基础属性基础上
  • 添加了 数据、材质

属性名

所属类别

说明(简要)

​location​

空间变换

坐标,格式为(x,y,z)浮点三元组

​rotation_euler​

空间变换(旋转)

欧拉角,弧度制(x,y,z)

​scale​

空间变换

缩放比例

​name​

基础标识

定义对象名称

​parent​

层级关系

设置父对象,子对象继承父对象变换

​data​

几何/材质关联

指向几何数据块,空对象为None

​data.materials​

材质管理

存储对象材质列表,可append添加材质

选择颜色

修改材质名称
  • 把材质名称修改为green

代码修改材质名称

渐变的球
import bpy # 清除场景中所有对象 bpy.ops.object.select_all(action="SELECT") bpy.ops.object.delete() # 循环创建10x10的ico球体并赋予颜色材质 for i in range(10): for j in range(10): # 添加ico球体,设置半径和位置 bpy.ops.mesh.primitive_ico_sphere_add(radius=0.5, location=(i, j, 0)) # 获取当前激活的小球对象 icosphere = bpy.context.active_object # 新建材质数据,命名为mat_i_j mat_name = f"mat_{i}_{j}" mat = bpy.data.materials.new(name=mat_name) # 启用材质的节点树(Blender新建材质默认关闭节点树) mat.use_nodes = True # 获取材质的Principled BSDF节点 principled_bsdf = mat.node_tree.nodes["Principled BSDF"] # 根据i和j计算颜色(红随i变化,绿随j变化,蓝为0) red = i / 10.0 # 用10.0确保浮点运算,避免整数除法 green = j / 10.0 blue = 0.0 alpha = 1.0 color = (red, green, blue, alpha) # 设置Principled BSDF的基础颜色 principled_bsdf.inputs['Base Color'].default_value = color # 将材质赋予小球对象(先清空原有材质,再添加) if icosphere.data.materials: icosphere.data.materials[0] = mat else: icosphere.data.materials.append(mat)
  • 渐变效果

随机的球
import bpy import random # 导入随机数模块 # 清除场景中所有对象 bpy.ops.object.select_all(action="SELECT") bpy.ops.object.delete() # 循环创建10x10的ico球体并赋予随机颜色材质 for i in range(10): for j in range(10): # 添加ico球体,设置半径和位置 bpy.ops.mesh.primitive_ico_sphere_add(radius=0.5, location=(i, j, 0)) # 获取当前激活的小球对象 icosphere = bpy.context.active_object # 新建材质数据,命名为mat_i_j mat_name = f"mat_{i}_{j}" mat = bpy.data.materials.new(name=mat_name) # 启用材质的节点树(Blender新建材质默认关闭节点树) mat.use_nodes = True # 获取材质的Principled BSDF节点 principled_bsdf = mat.node_tree.nodes["Principled BSDF"] # 生成随机的RGB颜色(范围0.0到1.0),alpha固定为1.0 red = random.random() # 随机生成0.0~1.0的浮点数 green = random.random() blue = random.random() alpha = 1.0 color = (red, green, blue, alpha) # 设置Principled BSDF的基础颜色 principled_bsdf.inputs['Base Color'].default_value = color # 将材质赋予小球对象(先清空原有材质,再添加) if icosphere.data.materials: icosphere.data.materials[0] = mat else: icosphere.data.materials.append(mat)
  • 效果

  • 如何查看目前所有的颜色呢?
打开大纲视图

  • 找到blender文件

  • 所有的Materials都在这里了
  • 能用python遍历吗?
遍历颜色
import bpy for material in bpy.data.materials: print(material)
  • 出现了好多种颜色

  • 为什么?
删除颜色
  • 每次运行都添加100种材质

  • 如何删除材质?
删除材质
import bpy for material in bpy.data.materials: bpy.data.materials.remove(material)
  • 先删材质

再添加材质
import bpy # 清除场景中所有对象 bpy.ops.object.select_all(action="SELECT") bpy.ops.object.delete() # 循环创建10x10的ico球体并赋予颜色材质 for i in range(10): for j in range(10): # 添加ico球体,设置半径和位置 bpy.ops.mesh.primitive_ico_sphere_add(radius=0.5, location=(i, j, 0)) # 获取当前激活的小球对象 icosphere = bpy.context.active_object # 新建材质数据,命名为mat_i_j mat_name = f"mat_{i}_{j}" mat = bpy.data.materials.new(name=mat_name) # 启用材质的节点树(Blender新建材质默认关闭节点树) mat.use_nodes = True # 获取材质的Principled BSDF节点 principled_bsdf = mat.node_tree.nodes["Principled BSDF"] # 根据i和j计算颜色(红随i变化,绿随j变化,蓝为0) red = i / 10.0 # 用10.0确保浮点运算,避免整数除法 green = j / 10.0 blue = 0.0 alpha = 1.0 color = (red, green, blue, alpha) # 设置Principled BSDF的基础颜色 principled_bsdf.inputs['Base Color'].default_value = color # 将材质赋予小球对象(先清空原有材质,再添加) if icosphere.data.materials: icosphere.data.materials[0] = mat else: icosphere.data.materials.append(mat) for material in bpy.data.materials: print(material)
  • 后添加

  • 总共100种材质
  • 可以看看材质的详细信息吗?
遍历材质细节
import bpy for mat in bpy.data.materials: for v in mat.node_tree.nodes["Principled BSDF"].inputs['Base Color'].default_value : print(v, end=",") print()
  • 输出结果

  • 除了材质之外
  • 对象也可以这样控制吗?
总结 🤔
  • 这次我们制作了
  • 渐变颜色的球
  • 随机颜色的球
import bpy for material in bpy.data.materials: bpy.data.materials.remove(material)
  • 对象也可以像材质一样remove吗?🤔
  • 我们下次再说!👋
  • ​​配套视频​​
  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。
http://www.jsqmd.com/news/420664/

相关文章:

  • 让 Claude 成为你的 Obsidian 助手:Claudian 插件一键安装指南
  • 【ROS/ROS2与实时Linux系列】第三十篇 ROS 2 `lifecycle_nodes`:工业机器人部署实践
  • 2026黑龙江中低压电气评测,口碑厂商大盘点,电气自动化/施耐德电气/工控产品/中低压电气,中低压电气品牌推荐 - 品牌推荐师
  • 聊聊上海一站式婚礼机构,诺丁山口碑怎么样 - 工业品牌热点
  • 徽科特露点仪灵敏度怎么样,用于酿酒行业费用大概多少钱? - myqiye
  • 聊聊岳阳科技职院师资力量,它的口碑怎么样? - 工业设备
  • 说说杭州诚信女士西装定制品牌,哪家口碑好且性价比高? - 工业推荐榜
  • 2026年广州商标注册代理口碑排名,这些机构值得推荐 - 工业品网
  • 一天一个Python库:rich - 美观地输出内容到终端
  • 启程旅行社介绍,它在北京地接服务方面表现如何 - 工业设备
  • 说说全国口碑好的化妆品礼盒定制厂家,米兰包装值得推荐吗? - 工业品牌热点
  • 广州专利申请代理性价比高的有哪些 - mypinpai
  • Claude Code 使用与部署全指南
  • 流片失败不是你一个人的锅,但焦虑是你一个人在受罪
  • 裁员了,我公司的技术部10个人,年底全裁了,只留了一个
  • 1995-2026.2人民法院案例库
  • 技术面试复盘:为什么面试表现好却拿不到offer?
  • 2026年2月最新优化算法——牛顿下山优化算法
  • OpenClaw,你可能搞错了一大半
  • 你就是主角——NOI2025 游记
  • 如何获取直播源(失败版)
  • 跨境贸易新引擎:多语言货运管理系统开发案例与源码分享
  • [AI提效-84] - AI智能体编程的本质:搭建自然语言与机器语言之间的“翻译桥梁”
  • SaaS化货运平台:多租户架构与核心模块源码逐行分析
  • 大模型推理优化核心技术解析:从Softmax到MLA
  • 中电金信:新的一年,这些“AI同事”陪你高效前行
  • python一行可以包含多个语句吗
  • 当C盘空间不足时,可以通过清理非系统关键文件来释放空间
  • 如何选择经适房转让补偿纠纷律师,北京信誉好的有哪些? - mypinpai
  • 基于视觉的园区公共安全风险监测与预警系统毕业设计