首页 > 编程语言 >blender python api 使用脚本对所有帧 进行全方位渲染

blender python api 使用脚本对所有帧 进行全方位渲染

时间:2024-04-17 23:55:20浏览次数:17  
标签:render 渲染 python frame scene api context bpy blender

代码:

import bpy

# 定义要使用的物体
placement_ob = bpy.context.scene.objects['Sphere']  # 'Sphere' 是要渲染的物体名称
camera_ob = bpy.context.scene.objects['Camera']  # 'Camera' 是摄像机的名称

render = bpy.context.scene.render  # 获取渲染场景的引用


# 设置渲染路径
render_path = 'renders\\frame-{:04d}-{:03d}'  # 使用反斜杠作为Windows路径分隔符,使用4位数表示帧编号

# 获取动画的起始和结束帧
start_frame = bpy.context.scene.frame_start
end_frame = bpy.context.scene.frame_end

# 遍历动画的所有帧
for frame in range(start_frame, end_frame + 1):
    
    bpy.context.scene.frame_set(frame)  # 设置当前帧
    for index, vert in enumerate(placement_ob.data.vertices):
        # 应用物体的世界矩阵到顶点的局部坐标以获取世界坐标
        vcoord = placement_ob.matrix_world @ vert.co
        
        # 移动摄像机到顶点的世界位置
        camera_ob.location = vcoord

        # 设置当前帧的渲染文件路径
        render.filepath = render_path.format(frame,index)  #将帧数与点的索引值作为渲染图片的名字
        
        # 渲染当前帧
        bpy.ops.render.render(write_still=True)
    
    # 确保渲染完一帧后,将摄像机移回原位,或者根据需要进行其他操作

print('动画渲染完成!')

请注意以下几点:

  1. frame_start 和 frame_end 分别代表动画的起始帧和结束帧。
  2. bpy.context.scene.frame_set(frame) 用于将时间轴设置到当前遍历的帧。
  3. 渲染路径中的 {:04d} 表示使用4位数的零填充格式来格式化帧编号。
  4. 这个脚本将对每个顶点的位置都渲染一帧,如果顶点数量很多,这可能会生成非常多的图像。通常在动画渲染中,你不会对每个顶点都进行单独的渲染,而是可能只对关键帧或者特定帧进行渲染。
  5. 如果你的动画非常长,渲染所有帧可能需要相当长的时间和大量的磁盘空间。

确保在运行此脚本之前,Blender项目中的 'renders' 文件夹已经存在,或者更改脚本中的路径以指向一个存在的文件夹。此外,根据你的具体需求,你可能需要对脚本进行进一步的调整。

 

标签:render,渲染,python,frame,scene,api,context,bpy,blender
From: https://www.cnblogs.com/jingzaixin/p/18142074

相关文章

  • blender python api 使用脚本对一个静帧 进行全方位渲染
     代码:importbpy#Definewhichobjectstouseplacement_ob=bpy.context.scene.objects['Sphere']camera_ob=bpy.context.scene.objects['Camera']render=bpy.context.scene.render#Settherenderpathrender_path='renders\......
  • Python案例:输出公元后到目前为止全部回文日期
    一、回文日期一个日期,如果顺读和倒读都一样,那么就称之为回文日期,比如今天:20211202,就是一个神奇的回文日期。二、提出任务输出公元后的全部回文日期要求每行输出五个回文日期统计总共有多少个回文日期三、完成任务(一)涉及知识点1、time模块time模块有两个常用函数time()......
  • drf序列化用APIView写编写5个接口并校验数据
    步骤:写一个类,继承Serialier在类中写字段,字段就是要序列化的字段在视图函数中,序列化类,实例化得到对象,传入该传的参数调用序列化类对象的serializer.data方法完成序列化【一】写序列化类serializer.pyfromrest_frameworkimportserializersfromrest_framework.e......
  • xxx,一个神奇的 Python 库
    前几天,我在《技术周刊的转变:如何平衡热爱与现实?》一文里写过国内Python自媒体圈在近几年的两个现象(仅个人观感,无科学数据支撑):Python广告投放出现断崖式萎缩Python大号出现很多改名/转行本文想继续分享我观察到的另一个挺有意思的现象。如果你能从中受到一些启发,进而为自......
  • Effective Python:第5条 用辅助函数取代复杂的表达式
    初始代码: 第一次优化:多次使用:  ......
  • 【python之DRF学习】三大方法之认证
    title:【python之DRF学习】三大方法之认证date:2024-04-1721:00:56星期三updated:2024-04-1721:01:00星期三description:cover:内置三大方法:drf之APIView内部的必须会经过的三大认证/方法:认证、权限、频率一、认证组件1、简介登录认证的限制​认证组件......
  • Python量化交易系统实战_学习笔记(更新中)
    作者:麦克煎蛋  出处:https://www.cnblogs.com/mazhiyong/转载请保留这段声明,谢谢!此系列的文章主要是基于慕课网的课程做的学习笔记,算是量化交易的入门级课程。这个系列的课程,好处是通俗易懂,适合刚上手的小白。但感觉数据部分限制见多,后面再更新下对于数据源的文章吧。 课......
  • openGauss plpython-fenced模式
    PLPythonFenced模式在fenced模式中添加plpython非安全语言。在数据库编译时需要将python集成进数据库中,在configure阶段加入--with-python选项。同时也可指定安装plpython的python路径,添加选项--with-includes='/python-dir=path'。在启动数据库之前配置GUC参数unix_socket_dir......
  • 【Azure APIM】列举几种在APIM 策略中的主动生产的错误语句
    问题描述在为APIM服务配置了诊断日志(DiagnosticSetting),把日志收集在LogAWorkspace中,需要验证日志中是否能查看到请求的错误信息。所以想人为的来制造一些错误。经过网络搜索,参考Policy的文档介绍后,完成了以下3种错误 第一种:使用 return-response返回指定错误码retu......
  • Java API之查询文档
    1、查询指定id文档importorg.elasticsearch.action.get.GetRequest;importorg.elasticsearch.action.get.GetResponse;importorg.elasticsearch.client.RequestOptions;importorg.util.ConnectElasticsearch;publicclassGetDoc{publicstaticvoidmain(Strin......