Blender自动化脚本,无人值守批量渲图/渲视频

 渲染视频是个非常耗时的大工程,如果要渲染多个视频或者每个视频还需要切换不同的贴图、颜色等,工作量就更离谱了,所以不得不用脚本实现自动化。

Blender的脚本是用Python编写,比PS的js要方便很多。再下载一套Blender对应版本的API,就可以拥有代码提示功能。

Blender API下载,选择Blender对应版本即可:

Releases · nutti/fake-bpy-module · GitHub

 例如我下载的是Blender 3.4的版本,下载后解压文件夹fake_bpy_modules_3.4-20230117,在该文件夹中创建Python脚本,并用VS Code打开fake_bpy_modules_3.4-20230117整个文件夹,VS Code需安装Python插件以支持代码提示。

首先在Blender中新建一个模型,Blender界面如图:

以通过脚本动态修改一个模型的贴图为例,可通过脚本Blender API  bpy.context.scene访问Scene面板的所有结点,例如我们要修改"猴头"模型的贴图,首先就需要获取到“猴头”节点,然后获取到名为"材质"的材质球,然后获取到材质球里的贴图节点,重新指定贴图文件路径:

1. 获取场景中名为"猴头"的节点:tNode:bpy.types.Object = bpy.context.scene.objects["猴头"]

2. 获取该节点的材质球:mat:bpy.types.MaterialSlot = tNode.material_slots["材质"]

3. 获取材质球中名为"图像纹理"的节点:texNode:bpy.types.ShaderNodeTexImage = mat.material.node_tree.nodes["图像纹理"]

4. 修改贴图文件:texNode.image.filepath = "newTexture.png"

5. 修改完贴图调用texNode.image.update()以刷新渲染

 

把同一模型,不同贴图,每张贴图为模型渲一张图:

1. 首先把需要动态切换的多张贴图放到指定文件夹下,以便用程序获取该文件夹下的所有贴图;

2. 遍历所有贴图,把当前贴图按照上述流程设置到模型材质球上,然后渲染出图片。这样就能得到不同贴图的渲染图;

3. 执行bpy.ops.render.render()开始渲染图片;

渲染视频的方式同理,在Blender如下面板可选择File Format属性以设置渲染视频还是图片。

 可以在代码中判断当前Blender中选择的File Format,如果为视频则开启动画渲染,否则按图片渲染。

代码如下:

import bpy
import os
import glob
import os.pathtexFolder = "C:/Users/Administrator/Desktop/Models/icons"outputPrefixName = "Image_"
outputVideoPrefixName = "Video_"
tNode:bpy.types.Object = bpy.context.scene.objects["猴头"]
if not tNode:print("找到目标节点")
else:mat:bpy.types.MaterialSlot = tNode.material_slots["材质"]texNode:bpy.types.ShaderNodeTexImage = mat.material.node_tree.nodes["图像纹理"]# colTex = mat.material.node_tree.nodes["Color"]try : texNode.image.unpack()except Exception as e:print("")# 根据给定贴图目录批量渲染texFiles:list[str] = glob.glob(os.path.join(texFolder, "*.png"))for texPath in texFiles:fileName = os.path.basename(texPath)texNode.image.filepath = texPathtexNode.image.update()fileNameNoExt = os.path.splitext(fileName)[0]if bpy.context.scene.render.image_settings.file_format.startswith("AVI") or bpy.context.scene.render.image_settings.file_format == "FFMPEG":# 渲染avi视频bpy.context.scene.render.filepath = "//OutputVideos/"+outputVideoPrefixName + fileNameNoExtbpy.context.scene.render.use_overwrite = Falsebpy.context.view_layer.update()bpy.ops.render.render(animation=True)else:# 渲染图片bpy.context.scene.render.filepath = "//OutputImages/"+outputPrefixName + fileNameNoExt# bpy.context.scene.render.image_settings.file_format = "PNG"bpy.context.scene.render.use_overwrite = Falsebpy.context.view_layer.update()bpy.ops.render.render(write_still=True)

运行脚本:

1. Blender中切换到脚本栏;

2. 选择打开已经写好的脚本文件;

3. 点击运行按钮,执行脚本;

 执行完毕后就会在模型所在目录输出渲染图片/视频:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24.实现线性拟合和相关系数(matlab程序)

1.简述 1. 基本语法 1.1 corr函数基本语法 语法 说明 rho corr(X) 返回输入矩阵X中每对列之间的两两线性相关系数矩阵。 rho corr(X, Y) 返回输入矩阵X和Y中每对列之间的两两相关系数矩阵。 [rho, pval] corr(X, Y) 返回pval,一个p值矩阵&#xff0c…

redis安装

安装redis 安装依赖环境 yum install -y gcc cd /opt tar -xf redis-5.0.7.tar cd redis-5.0.7/ make && make install PREFIX/usr/local/redis installvim /opt/redis-5.0.7/utils/install_server.shcd /opt/redis-5.0.7/utils ./install_server.sh Please select the…

极简并优雅的在IDEA使用Git远程拉取项目和本地推送项目

连接Git 搜索Git然后将你下载好的Git的文件目录位置给他弄进去就行 本地分支管理 分支管理通常是在IDEA的右下角找到 连接远程仓库 方法1本地项目推送到远程仓库 如果当前项目还没交给Git管理的则按照以下图所示先将项目交给Git管理 然后此时文件都会是红色的,这表…

C# 存在重复元素

217 存在重复元素 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums [1,2,3,1] 输出:true 示例 2: 输…

从小白到大神之路之学习运维第67天-------Tomcat应用服务 WEB服务

第三阶段基础 时 间:2023年7月25日 参加人:全班人员 内 容: Tomcat应用服务 WEB服务 目录 一、中间件产品介绍 二、Tomcat软件简介 三、Tomcat应用场景 四、安装配置Tomcat 五、配置目录及文件说明 (一)to…

zabbix钉钉报警

登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内. 然后点击群右上角 的"群机器人"->"添加机器人"->"自定义", 记录该机器人的webhook值。 添加机器人 在钉钉群中,找到只能群助手 添加机器人 选择自定义机…

IDEA+SpringBoot +ssm+ Mybatis+easyui+Mysql求职招聘管理系统网站

IDEASpringBoot ssm MybatiseasyuiMysql求职招聘管理系统网站 一、系统介绍1.环境配置 二、系统展示1. 登录2.注册3.首页4.公司5.关于我们6.我的简历7.我投递的简历8.修改密码9. 管理员登录10.我的信息11.用户信息12.职位类别13. 职位列表14. 公司列表15. 日志列表 三、部分代码…

Visual Studio 2022 cmake配置opencv开发环境

1. 环境与说明 这里我用的是 widnows 10 64位,Visual Studio 用的 Visual Studio Community 2022 (社区版) 对于Android开发工程师来说,为什么要使用Visual Studio 呢 ? 因为在Visual Studio中开发调试OpenCV方便,可以开发调试好后&#xf…

Transformer+医学图像最新进展【2023】

Transformer主要用于自然语言处理领域。近年来,它在计算机视觉(CV)领域得到了广泛的应用。医学图像分析(MIA,Medical image analysis)作为机器视觉(CV,Computer Vision)的一个重要分支,也极大地受益于这一最先进的技术。 机构:新加坡国立大学机械工程系、中山大学智能系…

安装nvm管理node

1.首先卸载已存在的node cmd输入node提示:‘node’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 2.安装nvm 安装地址 :Releases coreybutler/nvm-windows GitHub 本人选择1.1.7 输入nvm打印出了nvm的指令列表,说明…

IDEA+SpringBoot + Mybatis + Shiro+Bootstrap+Mysql资产设备管理系统

IDEASpringBoot Mybatis ShiroBootstrapMysql资产设备管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.用户新增3.用户设置4.岗位管理5. 审批节点6. 人员查询7. 组织设置8. 人员调整9.角色设置10.角色模块映射11.模块设置12.应用模块13.光纤交换机14.服务器15.网…

C++之文件操作

1.C文件操作 C中文件操作头文件:fstream。   文件类型:文件文件和二进制文件。 文件操作三大类:     ofstream 写操作     ifstream 读操作     fstream:读写操作 文件打开方式: 标志说明ios::in只读ios::out只写,文件不存在则…

大数据面试题:HBase读写数据流程

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 参考答案: 1、写数据流程 1)Client先访问zookeeper,获取hbase:meta表位于哪个Region Server。 2)访…

使用TensorFlow训练深度学习模型实战(上)

大家好,尽管大多数关于神经网络的文章都强调数学,而TensorFlow文档则强调使用现成数据集进行快速实现,但将这些资源应用于真实世界数据集是很有挑战性的,很难将数学概念和现成数据集与我的具体用例联系起来。本文旨在提供一个实用…

P1149火柴棒等式题解

P1149[NOIP2008 提高组] 火柴棒等式 题目描述 给你 n n n 根火柴棍,你可以拼出多少个形如 A B C ABC ABC 的等式?等式中的 A A A、 B B B、 C C C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0 0 0)。用…

详解Mybatis查询之resultType返回值类型问题【4种情况】

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 文章目录 引言一、查询单行数据返回单个对象二、查询多行数据返回对象的集合三、 查询单行数据返回Map[Key,…

STN:Spatial Transformer Networks

1.Abstract 卷积神经网络缺乏对输入数据保持空间不变的能力,导致模型性能下降。作者提出了一种新的可学习模块,STN。这个可微模块可以插入现有的卷积结构中,使神经网络能够根据特征图像本身,主动地对特征图像进行空间变换&#x…

Maven学习笔记

Maven学习笔记 一、MAVEN基础1.1、Maven作用1.2、Maven基础概念1.2.1、仓库1.2.2、坐标1.2.2、仓库配置 1.3、 手动写一个maven程序1.4、依赖管理1.5、生命周期与插件1.5.1、构建生命周期1.5.2、插件 一、MAVEN基础 1.1、Maven作用 Maven的本质是一个项目管理工具&#xff0c…

【计算机网络】socket编程基础

文章目录 1. 源IP地址和目的IP地址2. 理解MAC地址和目的MAC地址3. 理解源端口号和目的端口号4. PORT与PID5. 认识TCP协议和UDP协议6. 网络字节序7. socket编程接口7.1 socket常见API7.2 sockaddr结构 1. 源IP地址和目的IP地址 因特网上的每台计算机都有一个唯一的IP地址&#…

性能优化问题

提升首屏的加载速度,是前端性能优化中「最重要」的环节,这里笔者梳理出一些 常规且有效 的首屏优化建议 1、路由懒加载 SPA 项目,一个路由对应一个页面,如果不做处理,项目打包后,会把所有页面打包成一个文…