Blender3.2使用python脚本命令的三种方式, 以及后台渲染调用源码示例及说明

news2024/11/28 4:52:07

本文环境系统OS(Win10)

方式一,在Script(脚本)功能里面的Console(控制台输入python代码)。

如下图:

对应的三句代码是:

print("Hi, blender.")

import bpy

bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0,0, 0), scale=(1, 1, 1))

 按下回车键,代码立刻执行,如果有打印信息则直接显示在这个控制台(Console)中。

方式二,在Script(脚本)功能里面的代码文本写代码,然后执行。

        第一步, 打开代码执行的控制台窗口,方便查看代码执行过程中的输出信息:

         下图就是输出窗口

注意,有时候由于debug或者出错导致脚本代码指定卡主,只需要在这个窗口执行Ctrl + C快捷键就能解决问题,以免整个Blender软件卡死。

        第二步        

        第三步:

         第四步,写入代码:

对应的代码:

import bpy
import mathutils
# 创建一个cube
bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0,0, 0), scale=(1, 1, 1))
# 获取这个cube
cube = bpy.data.objects["Cube"]
print("a cube: ", cube)
v0 = mathutils.Vector((2.0, 0.0, 0.0))
# 设置这个cube的坐标(X轴坐标为2.0,Y轴和轴为0.0), 移动这个cube
cube.location = v0

        第五步,运行代码:

也可以按下 Ctrl + P 快捷键执行脚本代码

执行结束,可以看到创建了一个cube,并且移动了。

控制台中,也可以看到输出信息:

可以接着再用下面的这段代码让blender渲染出一张图(关于这个cube的),保存在指定路径下:

import bpy
renderer = bpy.context.scene.render
renderer.image_settings.file_format='JPEG'
renderer.filepath = "D:/dev/blender/renderingImg/cube.jpg"
renderer.resolution_x = 512 #perhaps set resolution in code
renderer.resolution_y = 512
bpy.ops.render.render(write_still=True)

加载一个obj格式的模型:

import bpy
obj_filePath = "D:/dev/blender/modules/box01.obj"
imported_object = bpy.ops.import_scene.obj(filepath=obj_filePath)
obj_object = bpy.context.selected_objects[0]
print('Imported obj name: ', obj_object.name)

开启Scripting脚本的即时运行(编辑后立刻自动运行)

方式三,直接在CMD或者其他程序中调用blender.exe,并将python脚本文件当做参数传入。

        1. 将上述python代码写到一个.py类型的文本文件里面,这里明明为createCube.py

        2. 打开 window cmd命令行控制台窗口

         3. 然后再window cmd命令行控制台窗口里面执行,如下图:

注意blender.exe的路径和createCube.py的路径要写成自己的。 

blender通过的python script示例源码:your path \blender\3.2\scripts\templates_py

以下是后台调用blender.exe加载obj格式的模型文件并渲染以及保存渲染PNG图片的代码示例:

import sys
import bpy
import time

def renderAObj() :
    obj_file = "D:/dev/webProj/xblender/models/box02.obj"
    output_file = "D:/dev/webProj/xblender/renderingImg/rendering01.png"

    print("bpy.data.objects: ", bpy.data.objects)
    print("lsit(bpy.data.objects): ", list(bpy.data.objects))

    cube01 = bpy.data.objects["Cube"]
    if cube01:
        bpy.data.objects.remove(cube01)
    else:
        print("has not the default Cube.")

    print("###  ###  ###  ###  ###")
    # 加载OBJ模型
    imported_object = bpy.ops.import_scene.obj(filepath=obj_file)
    print("list(bpy.context.selected_objects): ", list(bpy.context.selected_objects))
    obj_object = bpy.context.selected_objects[0]
    print("obj_object: ", obj_object)

    # 设置渲染引擎
    bpy.context.scene.render.engine = 'BLENDER_EEVEE'

    # 设置输出路径和文件格式
    bpy.context.scene.render.filepath = output_file
    bpy.context.scene.render.image_settings.file_format = 'PNG'
    bpy.context.scene.render.resolution_x = 512
    bpy.context.scene.render.resolution_y = 512

    # 等待1秒钟, 这一句代码是故意操作,不是必须的
    time.sleep(0.5)

    # 渲染并保存图片
    bpy.ops.render.render(write_still=True)
    print("rendering task end ...")

# 命令调用方式: D:\programs\blender\blender.exe -b -P  .\loadAndRendering.py
if __name__ == "__main__":
    # 获取命令行参数
    argv = sys.argv
    print("argv: \n", argv)
    # argv = argv[argv.index("--") + 1:]
    print("rendering task init ...")
    renderAObj()

通过命令行(Shell)blender.exe调用python代码的一些其他方式

        1. blender.exe -b your_blend_file.blend -P rep.py

        2.  PATH_TO_/blender.exe BLENDER_FILE.blend --python-expr "import bpy ; bpy.data.scenes[\"Scene\"].cycles.samples = VALUE"

Blender 执行程序的命令行参数:

        1. 可以通过 blender.exe -h获得详细信息

        2. 命令行参数文档: 命令行参数 — Blender Manual

关于blender的API:

        1. Quickstart — Blender Python API

        https://docs.blender.org/api/blender_python_api_current/info_quickstart.html

        2. Blender 3.5 Python API Documentation — Blender Python API

        3. https://docs.blender.org/api/current/bpy.ops.wm.html

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

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

相关文章

Vue3.0性能提升主要是通过哪几方面体现的(了解)

文章目录 一、编译阶段diff算法优化静态提升事件监听缓存SSR优化二、源码体积响应式系统 一、编译阶段 回顾Vue2,我们知道每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把用到的数据property记录为依赖,当依赖发生改变&#…

【ICML 2023】Hiera详解:一个简单且高效的分层视觉转换器

【ICML 2023】Hiera详解:一个简单且高效的分层视觉转换器 0. 引言1. 模型介绍2. Hiera介绍2.1 为什么提出Hiera?2.2 Hiera 中的 Mask2.3 空间结构的分离和填充到底如何操作2.4 为什么使用Mask Unit Attn 3. 简化版理解4. 总结 0. 引言 虽然现在各种各样…

Docker 安装Tomcat、实现Tomcat集群

文章目录 1、寻找Tomcat镜像2、下载tomcat镜像(下载最近版本)(1) docker pull tomcat 下载(2) 查看镜像是否安装成功 3、启动容器(跟安装Nginx一样)4、 测试tomcat(报错解决)5、 搭建Tomcat集群 1、寻找Tom…

访问修饰符private,default,protected,public访问等级区别

private:private是最严格的访问修饰符,它将成员声明为私有的。私有成员只能在声明它们的类内部访问,其他类无法直接访问私有成员。这样可以确保数据的封装性和安全性。 default(默认):如果没有明确指定访问…

Pytest 分组测试

有时候需要针对不同的测试环境跑不同的测试用例,如:冒烟测试、sit、uat、prd,所以给自动化测试用例做标记分组是很有必要的,pytest.mark 可以轻松实现这个功能。首先需要注册自定义标记。 注册marks 有3中方法注册marks&#xf…

【Apache Pinot】浅析 Pinot 的 Table,Index 和 Tenant 原理

本文属于基础篇幅,不会涉及过深入的原理,主要还是如何用好 Pinot 背景 单独讲 Table 概念可能有些许单薄,本文会扩展场景,讲解表的部分原理,表与表之间的相互影响,租户是怎么作用到表的,增加字…

一位年薪35W的测试被开除,回怼的一番话,令人沉思

一位年薪35W测试工程师被开除回怼道:“反正我有技术,在哪不一样” 一技傍身,万事不愁,当我们掌握了一技之长后,在职场上说话就硬气了许多,不用担心被炒,反过来还可以炒了老板,这一点…

基于深度学习的高精度袋鼠检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度袋鼠检测识别系统可用于日常生活中或野外来检测与定位袋鼠目标,利用深度学习算法可实现图片、视频、摄像头等方式的袋鼠目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

活跃主机发现技术指南

活跃主机发现技术指南 1.活跃主机发现技术简介2.基于ARP协议的活跃主机发现技术3.基于ICMP协议的活跃主机发现技术4.基于TCP协议的活跃主机发现技术5.基于UDP协议的活跃主机发现技术6.基于SCTP协议的活跃主机发现技术7.主机发现技术的分析 1.活跃主机发现技术简介 在生活中有这…

继电保护名词解释三

第三章:电网的相间电流、电压保护和方向性相间电流、电压保护 1. 瞬时电流速断保护:对于仅反应于电流增大而瞬时动作的电流保护。 2. 保护装置的起动电流:能够使保护装置起动的最小电流值。 3. 系统最大运行方式:通过保护装置的…

了解服务级别协议(SLA)在 ITSM 中的重要性

什么是服务级别协议 根据ITIL 4,SLA是服务提供商和客户之间的书面协议,用于确定所需的服务和预期的服务水平。这些协议可以是正式的,也可以是非正式的。 在 ITSM 的上下文中,SLA 有助于设置和管理最终用户在提出请求时的期望 或…

如何导出Axure原型设计中的图片?零基础入门教程

Axure 是一款广为人知的原型设计工具,特别适用于新手产品经理或产品设计初学者。然而,如果用户想要在浏览器中预览 Axure 原型图,需要安装插件才能实现。而安装完 Axure RP Chrome 插件后,还需要在扩展程序中选择 "允许访问文…

类和对象【5】日期类的实现

全文目录 引言实现日期类概述默认成员函数构造函数析构函数拷贝构造赋值重载 功能运算符重载日期间的比较日期与天数日期-与-天数日期前置与后置日期前置- -与后置- -日期 - 日期 输入输出重载(友元) 代码总览头文件源文件main函数 总结 引言 类和对象1…

详解Java异常和异常面试题(上)

1.异常的体系结构 2.从程序执行过程,看编译时异常和运行时异常 编译时异常:执行javac.exe命名时,可能出现的异常 运行时异常:执行java.exe命名时,出现的异常 1.运行时异常  是指编译器不要求强制处置的异常。一般是…

网络安全:信息收集专总结【社会工程学】

前言 俗话说“渗透的本质也就是信息收集”,信息收集的深度,直接关系到渗透测试的成败,打好信息收集这一基础可以让测试者选择合适和准确的渗透测试攻击方式,缩短渗透测试的时间。 一、思维导图 二、GoogleHacking 1、介绍 利用…

HVV常问的Web漏洞(护网蓝初面试干货)

目录 1、SQL注入 (1)原理 (2)分类 (3)防御 2、XSS (1)原理 (2)分类 3、中间件(解析漏洞) (1)IIS6.X …

【AI实战】开源大语言模型LLMs汇总

【AI实战】开源大语言模型LLM汇总 大语言模型开源大语言模型1、LLaMA2、ChatGLM - 6B3、Alpaca4、PandaLLM5、GTP4ALL6、DoctorGLM (MedicalGPT-zh v2)7、MedicalGPT-zh v18、Cornucopia-LLaMA-Fin-Chinese9、minGPT10、InstructGLM11、FastChat12、Luot…

在线原型设计工具推荐

原型设计是每个产品经理必备的基本技能。 本文从即时设计原型设计的步骤开始,帮助您快速使用即时设计制作高还原度、丰富互动的产品原型。 利用即时设计进行原型设计的优势 快速启动原型设计工作 借助即时设计内置设计系统和社区资源,包括大量原型设…

Hive执行计划之什么是hiveSQL向量化模式及优化详解

目录 文章目录 1.什么是hive向量化模式2.Hive向量化模式支持的使用场景2.1 hive向量化模式使用前置条件2.2 向量模式支持的数据类型2.3 向量化模式支持的函数 3.如何查看hiveSQL向量化运行信息3.1 explain vectorization only只查询向量化描述信息内容3.2 explain vectorizati…

javaScript蓝桥杯---JSON 生成器

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 JSON 已经是大家必须掌握的知识点,JSON 数据格式为前后端通信带来了很大的便利。在开发中,前端开发工程师可以借助于 JSON 生成器快速构建一个 JSON 用来模拟数据。 本题请你开发一个简易的 J…