首页 > 编程语言 >blender python api 使用脚本批量对obj物体进行渲染(obj所在目录要有与之对应的mtl文件才行)

blender python api 使用脚本批量对obj物体进行渲染(obj所在目录要有与之对应的mtl文件才行)

时间:2024-04-18 13:55:17浏览次数:30  
标签:文件 OBJ ops python 才行 导入 bpy obj

 

代码:

import bpy  # 导入Blender的Python API接口
import pathlib  # 导入pathlib模块,用于操作文件路径

# 设置OBJ文件所在的目录路径
obj_root = pathlib.Path('D:\\ceshi')  # 注意Windows路径中的斜杠需要转义

# 取消选择场景中的所有物体,以便导入时不会与已选择的物体冲突
bpy.ops.object.select_all(action='DESELECT')  # 取消选择所有物体
render = bpy.context.scene.render  # 获取当前场景的渲染设置

for obj_fname in obj_root.glob('*.obj'):  # 遍历指定目录下所有的OBJ文件
    print("jin ru ")  # 打印信息,表明开始导入某个OBJ文件
    
    # 导入OBJ文件
    bpy.ops.wm.obj_import(filepath=str(obj_fname))  # 执行OBJ文件导入操作
    
    # 设置渲染输出的文件路径,使用OBJ文件的名称(不包含扩展名)作为基础
    render.filepath = f'//renders/obj-{obj_fname.stem}'  # 使用f-string简化字符串格式化
    bpy.ops.render.render(write_still=True)  # 执行静态图像渲染
    
    # 记住刚刚导入的网格,以便稍后从内存中删除它们
    meshes_to_remove = []
    for ob in bpy.context.selected_objects:  # 遍历所有被选择的对象
        meshes_to_remove.append(ob.data)  # 将对象的数据(网格)添加到待删除列表
    
    # 删除场景中的物体,注意use_global=False表示仅在当前场景删除物体
    bpy.ops.object.delete(use_global=False)
    
    # 从内存中删除这些网格,以避免内存泄漏
    for mesh in meshes_to_remove:  # 遍历待删除的网格列表
        bpy.data.meshes.remove(mesh)  # 从Blender的数据存储中移除网格

    # 如果需要测试单个文件处理,可以在此处取消注释break语句
    # break  # 仅在测试时使用,用于中断循环

    # 如果需要导出OBJ文件,可以取消注释以下语句
    # bpy.ops.wm.obj_export(filepath=obj_path)  # 导出OBJ文件

 

请注意,我使用了原始字符串(r'D:\ceshi')来表示Windows路径,这是因为在字符串前面加上了r,表示这是一个原始字符串,其中的反斜杠不会被当作转义字符。

另外,我使用了f-string来简化字符串的格式化,这是一种更现代和更简洁的字符串格式化方法。

此外,我还保留了breakbpy.ops.wm.obj_export操作符的注释,因为它们可能在测试或导出OBJ文件时有用,但在当前的代码中它们被注释掉了,以避免在运行时执行。

如果你不需要这些操作,可以完全删除这些行。

标签:文件,OBJ,ops,python,才行,导入,bpy,obj
From: https://www.cnblogs.com/jingzaixin/p/18143368

相关文章

  • 利用python脚本对邮箱密码进行批量爆破
    利用python脚本对邮箱密码进行批量爆破importpoplib#导入POP3库fromemailimportparser#导入邮件解析器fromgetpassimportgetpass#导入密码输入函数pop_server='mail.test.com'#设置POP3服务器地址,改成需要爆破的目标邮箱pop3服务器地址pop_port=995......
  • Python-统计和微积分研讨会(三)
    Python统计和微积分研讨会(三)原文:zh.annas-archive.org/md5/6cbaed7d834977b8ea96cc7aa6d8a083译者:飞龙协议:CCBY-NC-SA4.0第五章:用Python进行更多数学概述在本章结束时,你将能够掌握序列和级数的基本概念,并编写实现这些概念的Python函数。你将了解基本三角函数及其应......
  • 精通-Python-金融第二版(三)
    精通Python金融第二版(三)原文:zh.annas-archive.org/md5/8b046e39ce2c1a10ac13fd89834aaadc译者:飞龙协议:CCBY-NC-SA4.0第六章:时间序列数据的统计分析在金融投资组合中,其组成资产的回报取决于许多因素,如宏观和微观经济条件以及各种金融变量。随着因素数量的增加,建模投资组......
  • 精通-Python-网络编程第二版(五)
    精通Python网络编程第二版(五)原文:zh.annas-archive.org/md5/dda7e4d1dd78bc5577547014ce9b53d1译者:飞龙协议:CCBY-NC-SA4.0第十二章:使用Jenkins进行持续集成网络触及技术堆栈的每个部分;在我工作过的所有环境中,它总是一个零级服务。它是其他服务依赖的基础服务。在其他......
  • 精通-Python-网络安全(一)
    精通Python网络安全(一)原文:zh.annas-archive.org/md5/2fd2c4f6d02f5009e067781f7b1aee0c译者:飞龙协议:CCBY-NC-SA4.0前言最近,Python开始受到越来越多的关注,最新的Python更新添加了许多可用于执行关键任务的包。我们的主要目标是帮助您利用Python包来检测和利用漏洞,......
  • 对大量ip进行批量ping检测的python脚本
    对大量ip进行批量ping检测的python脚本importsubprocessdefping_host(host,is_windows):"""发送一个ping请求到指定的主机,并返回ping的结果。"""#根据操作系统类型选择ping命令和参数ifis_windows:params=['ping','-n',&......
  • Python量化交易系统实战--设计交易策略:选股策略
     作者:麦克煎蛋  出处:https://www.cnblogs.com/mazhiyong/转载请保留这段声明,谢谢! 这一节主要是了解基于“动量因子”的选股策略。动量因子指的是股票在一段周期内的涨跌幅度,其本质是追涨杀跌。而选股策略,指的是基于这个因子的表现进行股票筛选,以及买入、卖出的操作。该......
  • 使用Python实时监控服务系统资源
    使用Python实时监控服务系统资源本文介绍如何使用Python的psutil库和matplotlib库来实时监控服务系统资源(CPU、内存、磁盘和网络),并将监控数据以图形化报表的形式展示。第一步:安装必需库首先,我们需要安装所需的库。可以通过pip安装psutil和matplotlib:pipinstallpsutilmatplo......
  • Python 解决控制台输出颜色时出现乱码的问题 (windows平台)
    简介在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做一些简单的设置。不......
  • 【python】使用r+模式先读后写和先写后读的区别
    最近学习python时,发现r+(读写)模式先读和先写,写入的位置不一致,经过测试发现:1、先写后读,写从文件开头开始写(覆盖原文),读从写入末尾开始读;2、先读后写,读从文件开头开始读,写从文件末尾开始写。点击查看代码'''test.txt#####随便写点啥######'''#先写后读withopen('test.txt......