aardio 文档

process.blender 库模块帮助文档

process.blender 成员列表 #

用 Blender 内置 Python 执行 bpy 脚本;不依赖 Autos、MCP、外部 Python 或插件。

process.blender.checkPath() #

找不到 Blender 时读取官网下载页并调用 inet.installer.asInvoker 安装;失败返回 null,错误信息。

process.blender.connect(sessionOrInfo,timeoutMs=30000) #

仅连接已存在会话。参数为会话名称(默认 default)或客户端的 connection 纯表。
在新线程/执行上下文中重新创建客户端;不传递客户端实例。

返回对象:processBlenderClientObject

process.blender.exec(code,options) #

新建后台 Blender 执行 Python 代码,返回 process.popen 对象。
options:blendFile、factoryStartup=false、args;默认不载入用户启动配置、禁止 .blend 内嵌自动脚本。
args 经 JSON 传入,Python 中用全局变量 args 读取(省略为 None);路径等数据放 args,不拼进代码。
脚本通过 stdin 完整传入,脚本错误退出码为 1。用 readAll 读取输出并等待结束。

返回对象:processPopenObject

process.blender.execfile(file,options) #

新建后台 Blender 执行 Python 文件。options 与 exec 相同。
指定 args 时经 runpy 运行(保留 file、name=='main'),脚本用全局变量 args 读取。

返回对象:processPopenObject

process.blender.findPath() #

只查找 blender.exe,不下载安装。成功返回完整路径。

process.blender.findPythonPath() #

只读查找当前 Blender 安装目录下的 python.exe,不硬编码版本、不安装 Python。
找不到或有多个候选返回 null,错误信息。内置 python.exe 不是 bpy 宿主。

process.blender.jsonRpc(options) #

启动或重连可见 Blender 会话。
options:session(默认 default)、timeoutMs(默认30000)、startupTimeoutMs(默认30000)、blendFile、factoryStartup。
已有描述时只尝试重连,失败不自动新建进程;需要新场景可显式使用另一个 session。
只接管本库启动的实例。长时间 Python/渲染会占用 Blender 主线程。

返回对象:processBlenderClientObject

process.blender.path #

可指定 blender.exe 路径;默认从运行进程、历史记录、App Paths、快捷方式发现。

process.blender.python(arguments,startInfo) #

运行 Blender 自带的普通 Python 解释器,不启动 Blender GUI、不提供 bpy。
适合纯 Python 测试、AST/JSON/文件处理。内部复用 process.python.start,自动使用 UTF-8、无缓冲输出、禁止 .pyc 写入。
arguments 是命令行字符串或数组;startInfo 同 process.python.start。
返回原生 process.popen,用 readAll 排空输出并等待;不重复设置 codepage,不修改 process.python.path。

返回对象:processPopenObject

process.blender.sessionPath(session="default") #

获取本机会话描述路径,不启动 Blender。描述含连接口令,不应共享到网络或发布包。

process.blender.version #

库版本。

processBlenderClientObject 成员列表 #

processBlenderClientObject.bridgeInfo #

connect 握手时的 ping 结果,可检查 capabilities;场景摘要是连接时快照,实时状态请再调用 ping。

processBlenderClientObject.call(method,args) #

调用公开方法 ping、exec、eval、quit;通常使用对应便捷方法。

processBlenderClientObject.close() #

仅断开客户端,不关闭 Blender,不保存场景;可重复调用。

processBlenderClientObject.connection #

可序列化的会话描述,含本机连接口令;跨线程传此表,不传客户端。

processBlenderClientObject.eval(expression) #

在相同上下文求值。成功直接返回 JSON 值(可为 false、0、null);失败返回 null,错误信息,detail。

processBlenderClientObject.exec(code,args,options) #

在 Blender 主线程执行整段 Python,保留本进程 Python 全局变量。
Python 中用 args 读取 JSON 参数,以 result 指定结果。
bridge2 成功返回 {result,stdout,stderr,logs};日志默认每流保留前1 MiB,options.logLimitBytes 可设0到1048576。
logs 含 limitBytes 及 stdout/stderr 的 totalBytes、keptBytes、truncated;完整日志请显式写文件。业务结果不截断,超16 MiB帧明确报错。
失败返回 null,错误信息,detail;Python 控制异常也返回错误,不代表回滚。
旧会话基本调用仍支持,第三参数会在发送前拒绝。超时不代表取消,不自动重发;应显式 connect 后回读状态。

processBlenderClientObject.ping() #

返回进程ID、版本、是否主线程、当前场景和对象数。
bridge2 另含 bridgeRevision=2、capabilities、日志上限;bridgeVersion 仍为协议1。

processBlenderClientObject.quit() #

明确退出此会话 Blender,不自动保存;请先用 bpy.ops.wm.save_as_mainfile 保存。

processBlenderClientObject.rpc #

底层 rpc 对象,可调整 timeoutMs;勿并发使用。

返回对象:wsockRpcJsonClientObject.rpc

Markdown 格式