问题标签 [bpy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何通过搅拌机或 bpy 加载纹理?
我无法通过 bpy 或 blender 加载 tuxture 文件,输出为空。在此处输入图像描述
blender - Blender 在渲染之间冻结
我目前正在使用 blender 3.0,但在运行某些渲染时遇到问题(blender 2.93 也会发生这种情况)。
我的团队有一个场景,我们通过 python 生成一些对象(40-50)(它们是某个集合中对象的副本),然后我们将其渲染并保存到一个文件中。每次渲染后,我们都会运行一些清理代码以避免内存问题(我们需要大约 10k 次渲染)。要执行清理代码并准备下一次渲染,一开始大约需要 0.05 秒,但在 1.5/2k 次渲染之后需要超过 5 分钟(随着渲染次数的增加,我们会在当前渲染和下一次渲染之间冻结更长的时间) )。重新启动搅拌机“将冻结持续时间”重置为 0 秒。
整体代码如下:
我们用来创建副本的代码:
我们用来清理生成对象的代码:
我们目前正在通过运行该程序 10 次来“解决”这个问题,每次都以 1k 渲染为上限,然后我们将它们合并到一个目录中。关于我们为什么会冻结或为什么我们制作的渲染越多它变得越长的任何想法?
python - 在 google colab 中使用搅拌机脚本进行渲染
我正在尝试使用 google colab pro 提供的 GPU 在搅拌机中运行脚本。
我使用以下代码来安装和配置 Blender:
之后,我按如下方式运行我的脚本:
但它给出了以下错误:
脚本 generate_images.py 包含一系列操作(相机和灯光被创建,相机沿着预定义位置的轨迹移动),并且在相机的每个位置渲染图像。我注意到当到达以下行时会出现错误:
该脚本在我的笔记本电脑上本地完美运行。你对这个问题有任何线索吗?
python - Blender完全加载后执行脚本
Blender完全加载后如何自动执行python脚本?
语境
我的脚本基于种子生成场景。我想创建几千张图像,但由于 Blender 在一百代左右后泄漏内存,所以一切都变得明显变慢并最终崩溃。我想通过每个会话只创建 x 个图像并在每次会话后完全重新启动 Blender 来缓解这个问题。
问题
如果我手动加载混合文件并单击脚本编辑器中的播放按钮,一切都会按预期工作。当我在启动后尝试调用脚本时,它在add_curve_spirals.py
第 184 行崩溃,因为context.space_data
is None
.
由于手动启动脚本工作正常,问题在于 Blender 处于某种错误状态。使用或不使用 GUI ( --background
) 启动它都不会影响这一点。
失败的解决方案
blender myfile.blend --python myscript.py
在上下文完全准备好之前执行脚本,从而产生错误。- 使用处理程序延迟执行 (
bpy.app.handlers.load_post
) 在完全加载文件后调用我的脚本,但上下文仍未准备好并产生错误。 - 将 Blender 中的脚本设置为在启动时自动执行(文本/寄存器)也会产生错误。
- 按照此处的建议,使用套接字稍后将命令发送到 Blender。等待传入命令的服务器脚本会在启动期间阻止 Blender 并阻止它完全加载,因此效果与直接执行脚本相同。
- 使用定时事件 (
bpy.app.timers.register(render_fun, first_interval=10)
.
这些都是我发现的自动执行脚本的所有方法。在每种情况下,脚本似乎都执行得太早/处于错误状态,并且都以相同的方式失败。
我想强调脚本不是这里的问题。即使我可以解决特定的行,也可能会出现许多类似的问题,我不想重写我的整个脚本。那么在正确状态下自动调用它的最佳方法是什么?