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

Blender Python材质处理入门

本文介绍在 Blender 中如何使用 Python API 获取材质及其属性。

在这里插入图片描述

推荐:用 NSDT场景设计器 快速搭建3D场景。

1、如何获取材质

方法1、 获取当前激活的材质

激活材质是当前在材质槽中选择的材料。 如果你选择一个面,则活动材料将更改为分配给选定面的材质。
在这里插入图片描述

以下是获取名为“Cube”的对象的活动材质的Python脚本:

import bpy
obj = bpy.data.objects["Cube"]
material = obj.active_material
print(material)
# output => <bpy_struct, Material("Material3")>

方法2、获取材质槽并选择其中之一

import bpy
obj = bpy.data.objects["Cube"]
material_slots = obj.material_slots
for m in material_slots:material = m.materialprint("slot", m, "material", material)# output is material slot and material
# slot <bpy_struct, MaterialSlot("Material")> material <bpy_struct, Material("Material")>
# slot <bpy_struct, MaterialSlot("Material2")> material <bpy_struct, Material("Material2")>
# slot <bpy_struct, MaterialSlot("Material3")> material <bpy_struct, Material("Material3")>

你可以获得带有索引或键(材质名称)的插槽。 插槽的顺序遵循材质插槽 UI 上的顺序。

import bpy
obj = bpy.data.objects["Cube"]
material_slots = obj.material_slotsmaterial1 = material_slots[0].material
print(material1)
# output => <bpy_struct, Material("Material")>
material2 = material_slots["Material2"].material
print(material2)
# output => <bpy_struct, Material("Materia2")>

方法3:从 bpy.data.materials 获取

可以通过其键(材质名称)获取现有材质。

import bpy
material = bpy.data.materials["Material2"]

2、如何获得材质属性

可以在材料属性选项卡中查看材料属性。 根据渲染器的不同,获取属性值的方式也不同。

渲染器:工作台

在这里插入图片描述

可以使用 Material 类的属性获取属性值,如下所示。

import bpy
material = bpy.data.materials["Material.001"]color = material.diffuse_color
print(color[0], color[1], color[2], color[3])
# output => 0.20000000298023224 0.800000011920929 0.5 1.0metallic = material.metallic
print(metallic)
# output => 0.30000001192092896

其他渲染器

例如,Principled BSDF 是 Eevee 中基于节点的材料之一。
在这里插入图片描述

访问 Material 对象的 node_tree。 并获取节点“Principled BSDF”并获取节点的输入。

在这里插入图片描述

你可以通过 material.node_tree.nodes[“Principled BSDF”].inputs 查看输入列表:

import bpy
#obj = bpy.data.objects["Cube"]
#material = obj.active_material
material = bpy.data.materials["Material3"]inputs = material.node_tree.nodes["Principled BSDF"].inputs
for i in inputs:print(i)
# output
# <bpy_struct, NodeSocketColor("Base Color")>
# <bpy_struct, NodeSocketFloatFactor("Subsurface")>
# <bpy_struct, NodeSocketVector("Subsurface Radius")>
# <bpy_struct, NodeSocketColor("Subsurface Color")>
# <bpy_struct, NodeSocketFloatFactor("Metallic")>

可以获得带有索引或键(输入名称)的节点套接字。 未连接输入的值可以通过属性“default_value”获得:

import bpy
material = bpy.data.materials["Material3"]inputs = material.node_tree.nodes["Principled BSDF"].inputs
color = inputs["Base Color"].default_value
print(color[0], color[1], color[2], color[3])
# output => 0.15000000596046448 0.800000011920929 0.10000000149011612 1.0subsurface = inputs["Subsurface"].default_value
print(subsurface)
# output => 0.0

3、如何改变材料属性

替换属性的值。

import bpy
material = bpy.data.materials["Material3"]inputs = material.node_tree.nodes["Principled BSDF"].inputs
color = inputs["Base Color"].default_value
color[0] = 1.0

颜色会改变。
在这里插入图片描述

你可以使用 python 数组作为颜色的值。

import bpy
material = bpy.data.materials["Material.001"]
material.diffuse_color = [1.0, 0.2, 0.2 ,1.0]

原文链接:Blender Python材质处理 — BimAnt

相关文章:

Blender Python材质处理入门

本文介绍在 Blender 中如何使用 Python API 获取材质及其属性。 推荐&#xff1a;用 NSDT场景设计器 快速搭建3D场景。 1、如何获取材质 方法1、 获取当前激活的材质 激活材质是当前在材质槽中选择的材料。 如果你选择一个面&#xff0c;则活动材料将更改为分配给选定面的材质…...

ChatGPT后劲很大,问题也是

ChatGPT亮相即封神&#xff0c;最初的访客是程序员、工程师、AI从业者、投资人&#xff0c;最后是无数懵懂又好奇的普通人&#xff1a;ChatGPT是什么&#xff1f;自己会被ChatGPT取代吗&#xff1f;看待ChatGPT的立场也是两个极端&#xff1a; 快乐&#xff0c;是因为ChatGPT太…...

世界那么大,你哪都别去了,来我带你了解CSS3 (二)

文章目录‍❤️‍&#x1f525;CSS文档流‍❤️‍&#x1f525;CSS浮动‍❤️‍&#x1f525;CSS定位‍❤️‍&#x1f525;CSS媒体查询‍❤️‍&#x1f525;CSS文档流 文档流是文档中可显示对象在排列时所占用的位置/空间。 例如&#xff1a;块元素自上而下摆放&#xff0c;内…...

2023年再不会Redis,就要被淘汰了

目录专栏导读一、同样是缓存&#xff0c;用map不行吗&#xff1f;二、Redis为什么是单线程的&#xff1f;三、Redis真的是单线程的吗&#xff1f;四、Redis优缺点1、优点2、缺点五、Redis常见业务场景六、Redis常见数据类型1、String2、List3、Hash4、Set5、Zset6、BitMap7、Bi…...

Java SPI机制了解与应用

1. 了解SPI机制 我们在平时学习和工作中总是会听到Java SPI机制&#xff0c;特别是使用第三方框架的时候&#xff0c;那么什么是SP机制呢&#xff1f;SPI 全称 Service Provider Interface&#xff0c;是 Java 提供的一套用来被第三方实现或者扩展的接口&#xff0c;它可以用来…...

vue实现输入框中输完后光标自动跳到下一个输入框中

前言 最近接到这么一个需求&#xff0c;做一个安全码的输入框&#xff0c;限制为6位数&#xff0c;但是每一个写入的值都是一个输入框&#xff0c;共计6个输入框&#xff0c;当前输入框写入值后&#xff0c;光标自动跳到下一个输入框中&#xff0c;删除当前输入框写入的值后再自…...

如何构建 C 语言编译环境?

C语言是一种通用的编程语言&#xff0c;它是由Dennis Ritchie于20世纪70年代初在贝尔实验室开发的。C语言的设计目标是提供一种结构化、高效、可移植的编程语言&#xff0c;以支持系统编程和应用程序开发。C语言广泛用于开发操作系统、网络设备、游戏、嵌入式系统、桌面应用程序…...

电子台账:模板制作之一——列过滤(水平过滤)

1 简介列过滤即水平过滤。一般情况下&#xff0c;企业数据源文件中有很多数据列&#xff0c;其中大部分数据列中的数据对电子台账来说是没有用的。列过滤就是确定企业数据文件的哪几列有用&#xff0c;以及有用的列分别对应到台账&#xff08;模板&#xff09;的哪一列。列过滤…...

【java】Java连接mysql数据库及mysql驱动jar包下载和使用

文章目录JDBCJDBC本质&#xff1a;JDBC作用&#xff1a;跟数据库建立连接发送 SQL 语句返回处理结果操作流程和具体的连接步骤如下&#xff1a;操作步骤&#xff1a;需要导入驱动jar包 mysql-connector-java-8.0.22.jar注册驱动获取数据库连接对象 Connection定义sql获取执行sq…...

Mysql八股文

Mysql八股文 数据库的三范式是什么 第一范式&#xff1a;列不可再分第二范式&#xff1a;行可以唯一区分&#xff0c;主键约束第三范式&#xff1a;表的非主属性不能依赖与 其他表的非主属性 外键约束且三大范式是一级一级依赖的&#xff0c;第二范式建立在第一范式上&#x…...

解析Android ANR问题

一、ANR介绍 ANR 由消息处理机制保证,Android 在系统层实现了一套精密的机制来发现 ANR,核心原理是消息调度和超时处理。ANR 机制主体实现在系统层,所有与 ANR 相关的消息,都会经过系统进程system_server调度,具体是ActivityManagerService服务,然后派发到应用进程完成对…...

ESP32设备驱动-MicroSD Card驱动

MicroSD Card驱动 1、SDCard介绍 SD卡是Secure Digital Card卡的简称,直译成汉语就是“安全数字卡”,是由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器…...

XC7K160T-1FBG484I、XC7A100T-2CSG324I FPGA可编程门阵列 PDF规格书

1、XC7K160T-1FBG484I说明&#xff1a;Kintex-7 FPGA有-3、-2、-1、-1L和-2L速度等级&#xff0c;其中-3具有最高的性能。-2L器件被筛选为较低的最大静态功率&#xff0c;并且可以在较低的核心电压下运行&#xff0c;以获得比-2器件更低的动态功率。-2L工业(I)温度器件仅在VCCI…...

基于HD-RK3568-IO评估板的读写速度测试报告

1. 测试对象HD-RK3568-IOT 底板基于HD-RK3568-CORE工业级核心板设计&#xff08;双网口、双CAN、5路串口&#xff09;&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff0c;亦方便用户评估核心板及CPU的性能。适用于工业自动化控制、人机界面、中小型医疗分析器…...

jconsole远程linux下的tomcat

修改Tomcat的配置 进去 Tomcat 安装目录下的 bin 目录&#xff0c;编辑 catalina.sh vi catalina.sh定位到 ----- Execute The Requested Command ----------------------------------------- vi 编辑模式下&#xff0c;点击 Esc&#xff0c;输入 / &#xff0c;然后粘贴 -…...

Redis和MySQL如何保持数据一致性?

在高并发的场景下&#xff0c;大量的请求直接访问MySQL很容易造成性能问题。所以&#xff0c;我们都会用Redis来做数据的缓存&#xff0c;削减对数据库的请求。但是&#xff0c;MySQL和Redis是两种不同的数据库&#xff0c;如何保证不同数据库之间数据的一致性就非常关键了。1.…...

频谱分析仪的工作原理

频谱分析仪是一种专门用于测量电信号频谱特征的精密仪器。它采用了一种将信号转换成频谱的方法&#xff0c;使得用户可以直观地了解信号的频谱密度&#xff0c;并通过分析频率分布来进行信号分析。频谱分析仪的工作原理基于傅里叶变换。傅里叶变换是一种将时间域信号转换为频率…...

docker项目自动化部署脚本(认真排版、工作积累)

要解决什么问题&#xff1f; 把日益复杂化、工程化的开发环境&#xff0c;以及生产环境&#xff0c;变得简单&#xff0c;自动化部署。 达到什么效果&#xff1f; 环境处处一致&#xff0c;并且自动化部署&#xff0c;提升生产力&#xff0c;又快又好。 当您更换电脑、更换…...

【经验分享】使用了6年的实时操作系统,是时候梳理一下它的知识点了 | 文末赠书4本

使用了6年的实时操作系统&#xff0c;是时候梳理一下它的知识点了 摘要&#xff1a; 本文简单介绍了博主学习操作系统的心路历程&#xff0c;同时还给大家总结了一下当下流行的几种实时操作系统&#xff0c;以及在工程中OSAL应该如何设计。希望对大家有所启发和帮助。 文章目录…...

蓝桥杯C/C++程序设计 往届真题汇总(进阶篇)

文章目录1. 最短路2. 数字三角形3. 递增序列4. 杨辉三角形5. 跳跃6. 路径7. 迷宫8. 装饰珠9. 明码10. 字串分值11. 作物杂交12. 承压计算13. 全球变暖14. 直线15. 平面切分1. 最短路 题目描述&#xff1a; 如下图所示&#xff0c;G是一个无向图&#xff0c;其中蓝色边的长度是…...

开源AI助手插件:为HuluNote笔记软件集成智能文本处理与知识管理

1. 项目概述&#xff1a;一个为HuluNote设计的开源AI助手最近在GitHub上看到一个挺有意思的项目&#xff0c;叫openclaw-hulunote-assistant。光看这个名字&#xff0c;可能很多人会有点懵&#xff0c;这到底是干嘛的&#xff1f;简单来说&#xff0c;这是一个专门为笔记应用Hu…...

杰理之AutoDuck 闪避节点参数更新结构体【篇】

struct autoduck_update_parm{ int duck_amount; //背景音乐闪避的音量值&#xff08;dB) int attack; //启动时间(ms) int release; //释放时间(ms) int hold_time; //闪避之后的保持时间 (ms) }; typedef struct AutoDuckParam_TOOL_SET { int is_bypass; struct aut…...

3分钟告别Armoury Crate:华硕笔记本轻量化控制终极指南

3分钟告别Armoury Crate&#xff1a;华硕笔记本轻量化控制终极指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, E…...

ssm基于Java的试题库管理系统(10030)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

声明式工作流编排框架:从计划到执行的自动化实践

1. 项目概述&#xff1a;从“计划清单”到“框架”的蜕变如果你和我一样&#xff0c;在职业生涯中经历过从零到一构建复杂应用&#xff0c;或者维护过多个技术栈各异、需求多变的项目&#xff0c;那你一定对“计划”和“清单”这两个词深有感触。我们每天都在做计划&#xff0c…...

别再傻傻分不清了!一张图看懂CRT、PEM、PFX、P7B证书格式的区别与应用场景

数字证书格式全解析&#xff1a;CRT、PEM、PFX、P7B的核心差异与实战选择 当你第一次在服务器上配置SSL证书时&#xff0c;面对CRT、PEM、PFX、P7B这些后缀名&#xff0c;是不是感觉像在解密码&#xff1f;上周我帮一个创业团队迁移服务器&#xff0c;他们的CTO拿着五个不同格式…...

Obsidian Projects:开源文本项目管理的终极解决方案

Obsidian Projects&#xff1a;开源文本项目管理的终极解决方案 【免费下载链接】obsidian-projects Plain text project planning in Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-projects 在当今信息爆炸的时代&#xff0c;高效的项目管理工具已成…...

Midjourney V6树胶重铬酸盐输出崩溃?紧急修复指南(含--sref自定义光敏响应曲线参数实测数据)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney V6树胶重铬酸盐输出崩溃现象与本质溯源 现象复现与触发条件 Midjourney V6 在启用 --style raw 且 prompt 中包含化学术语&#xff08;如“重铬酸盐”、“树胶”、“potassium dichromate”…...

AutoHotkey V2扩展库:从脚本小子到全能开发者的进化之路

AutoHotkey V2扩展库&#xff1a;从脚本小子到全能开发者的进化之路 【免费下载链接】ahk2_lib 项目地址: https://gitcode.com/gh_mirrors/ah/ahk2_lib 你是否曾因AutoHotkey的功能局限而感到束手束脚&#xff1f;&#x1f914; 当简单的热键脚本无法满足复杂的业务需…...

【C语言之 CJson】从零到一:构建与解析JSON的实战指南

1. 为什么C语言需要处理JSON数据 在物联网设备和嵌入式系统开发中&#xff0c;JSON已经成为事实上的数据交换标准。我去年参与的一个智能家居项目就深有体会&#xff1a;设备配置、状态上报、控制指令全都采用JSON格式传输。用C语言处理这些数据时&#xff0c;手动拼接字符串不…...