用途
blender-pipeline 是一套基于 Blender Python API(bpy)的无头游戏资产流水线技能,用于自动化游戏开发所需的 3D 资产制作与加工。触发场景包括 3D 建模、资产转换、精灵图集、绑定、Mixamo、FBX/glTF 转换,以及程序化资产生成相关的请求。
安装
Linux(MiniPC / 服务器)提供多种方式:
Snap(推荐 — 最新版本)
sudo snap install blender --classic
APT(可能是旧版本)
sudo apt install blender
直接下载(最灵活)
wget https://download.blender.org/release/Blender4.4/blender-4.4.0-linux-x64.tar.xz tar xf blender-4.4.0-linux-x64.tar.xz sudo ln -s $(pwd)/blender-4.4.0-linux-x64/blender /usr/local/bin/blender
macOS:
Homebrew
brew install --cask blender
或直接下载
CLI 路径:/Applications/Blender.app/Contents/MacOS/Blender
安装确认:
blender --version blender -b --python-expr "import bpy; print('bpy OK:', bpy.app.version_string)"
主要能力与使用方式
无头运行模式
基本结构包括:执行脚本(新场景)、加载 .blend 后执行脚本、在 -- 之后传参、使用工厂设置忽略用户配置,以及启用插件:
blender -b --python script.py blender -b scene.blend --python script.py blender -b --python script.py -- --arg1 value1 --arg2 value2 blender --factory-startup -b --python script.py blender -b --addons "rigify,io_scene_gltf2" --python script.py
参数顺序很重要,正确顺序为:先加载 blend,再设置输出,最后渲染:
blender -b scene.blend -o /tmp/output -F PNG -f 1
GPU 渲染(headless)
在无头模式下需手动启用 GPU,示例脚本 gpu_setup.py 中设置 prefs.compute_device_type(可选 CUDA、OPTIX、HIP、METAL),调用 prefs.get_devices() 并为每个设备设置 device.use = True,再将 bpy.context.scene.cycles.device 设为 'GPU'。运行示例:
blender -b scene.blend -E CYCLES -P gpu_setup.py -f 1 -- --cycles-device CUDA
提供的脚本
- 格式转换(convert_format.py):支持 FBX→glTF、OBJ→FBX、glTF→OBJ,以及按目录批量转换。例如 FBX→glTF:
blender -b --python scripts/convert_format.py -- --input model.fbx --output model.glb --format GLB
批量转换示例:
blender -b --python scripts/convert_format.py -- --input-dir ./models/ --output-dir ./converted/ --input-ext .fbx --format GLB
- 精灵图集渲染(render_sprite_sheet.py):支持 8 方向精灵图集、等距视图(指定相机角度)、动画精灵图集(所有帧)。例如:
blender -b character.blend --python scripts/render_sprite_sheet.py -- --angles 8 --size 128 --output sprites/character.png
- 程序化道具生成(procedural_props.py):生成树、岩石、箱子/木箱、建筑外观等。示例:
blender -b --python scripts/procedural_props.py -- --type tree --style low-poly --seed 42 --output props/tree.glb
- 简单绑定(simple_rig.py):支持用 Rigify 元绑定自动绑定,以及面向 2D 游戏的简单骨骼绑定。示例:
blender -b character.blend --python scripts/simple_rig.py -- --target CharacterMesh --type rigify --output rigged_character.blend
- Mixamo 导入(mixamo_import.py):支持单个 Mixamo FBX 导入并转 glTF、合并多个 Mixamo 动画、整理为 NLA 轨道。示例:
blender -b --python scripts/mixamo_import.py -- --input mixamo_character.fbx --output character.glb --fix-scale --fix-rotation
适用场景与工作流
工作流 1:Mixamo → Blender → 游戏引擎。步骤为:从 Mixamo 下载绑定与动画(FBX);用 mixamo_import.py 导入并做缩放/旋转校正;必要时整理动画 NLA 轨道;用 convert_format.py 转为 glTF/GLB;在游戏引擎(Godot/Unity)中导入。
工作流 2:程序化资产 → 精灵图集。步骤为:用 procedural_props.py 生成 3D 资产,或使用现有 .blend 中的模型;用 render_sprite_sheet.py 生成多方向精灵图集;在 2D 游戏中使用该图集。
工作流 3:资产批量流水线,提供 batch_pipeline.sh 示例,先批量将 FBX 转为 glTF,再对每个模型生成精灵图集。
在 MiniPC 上执行(nodes.run)的示例:
nodes.run(node="MiniPC", command=[ "blender", "-b", "--factory-startup", "--python", "/path/to/script.py", "--", "--arg1", "value1" ])
MiniPC 安装 Blender 及文件传输(MiniPC→Mac Studio 的 HTTP 服务器方式)也有示例说明。
限制与注意事项
渲染引擎方面:Cycles 完全支持无头模式,GPU 可选,CPU/GPU 均可,为默认选择;EEVEE 仅 Linux 支持无头,需要 GPU,Linux 3.4+ 且必须有 GPU,macOS/Windows 无头不可用;Workbench 同样仅 Linux 支持无头,需要 GPU,与 EEVEE 限制相同。
已知限制包括:EEVEE 无头需要 Linux + GPU + display 环境,可用 Xvfb 创建虚拟显示;无头模式下 GPU 不会自动检测,需手动启用;bpy 在 Python 中每个进程只能导入一次,多个任务需拆分为子进程;复杂场景需要大量 RAM,MiniPC(8GB)上建议以低模为主;Grease Pencil 在无 GPU 的无头环境中无法渲染;Snap 安装时 pip install 路径受限,需额外包时建议用 tarball 安装;bpy API 在不同 Blender 版本间可能变化,脚本以 Blender 4.x 为准。
性能提示:使用 --factory-startup 避免加载不必要的用户设置;--threads N 指定 CPU 线程数(0 为全部);低模资产用 Workbench 比 Cycles 更快;批量任务可用 xargs/parallel 并行化。
参考文档包括 references/bpy-api.md、references/rigging.md、references/procedural.md、references/rendering.md。