BAM资产管理器
Refactoring linked blend-files is a common practice in a production environment.While some basic operations can be accomplished within Blender,sometimes it is more practical to perform them on the command line or via a script.During the production of Cosmos Laundromat (Gooseberry Open Movie Project)the BAM Asset Manager (BAM) was developed. The original scope of BAM includedclient-server asset management tools going beyond Blender,but it was later refocused on core utilities to perform two operations:
- Blender文档打包
- 依赖关系的自动映射下面重点介绍如何使用BAM。
资产管理器。
安装BAM
BAM是一个独立的Python安装包,不需要特殊的设置即可在任何系统中运行,唯一的要求是Python 3(以及pip,即Python安装包管理器,以便更容易的安装BAM)。
在Windows,Linux及macOS中安装Python 3和pip的方法各不相同,可查看在线文档来了解针对具体平台的相关事项。
安装好Python 3和pip以后,可通过命令行来安装BAM,指令如下:
- pip3 install blender-bam
安装成功后,就可以使用 bam 指令了。输入此指令并回车后,会列出所有可用的子命令。
bam pack
此命令用来把 .blend
文档和所有相关的依赖文件打包为一个 .zip
文档以便于重新分发。:
- usage: bam pack [-h] [-o FILE] [-m MODE] [-e PATTERNS] [-a] [-q] [-c LEVEL]
- paths [paths ...]
可以像这样把blend文档打包,并创建一个同名zip压缩文件。
- bam pack /path/to/scene.blend
也可以指定一个明确的输出目录。这个例子显示了如何把blend文件最大程度的压缩以供在线下载。
- bam pack /path/to/scene.blend --output my_scene.zip --compress=best
此指令提供了几种适用于不同工作流程的选项(如最终分发,部分提取,渲染等等)。
-o
,—output
<FILE>
- 输出文档,或在多重输入时输出目录。
-m
,—mode
<MODE>
- 输出文档,或在多重输入时输出目录。可选项为:
ZIP
,FILE
。 -e
,—exclude
<PATTERN(S)>
打包时有选择性的排除一些文件。
—exclude="*.png"
- 采用Unix shell方式的通配符(不区分大小写)。
—exclude=".txt;.avi;*.wav"
- 可以使用多重类型,以“;”为分隔符。
-a
,—all-deps
- 采用所有的依赖关系(未使用的非直接的依赖关系也包括在内)。
-q
,—quiet
- 不作状态输出。
-c
,—compress
<LEVEL>
- 结果文档的压缩等级。可选项为:
default
,fast
,best
,store
。 —repo
<DIR PATH>
- 为压缩所选文件指定根路径。这样可以不进行重映射即创建一个作品树结构的稀疏拷贝。
—warn-external
- 报告外部库的错误(丢失路径)。
示例
考虑下列目录布局,其中 01_01_A.lighting.blend 文档带有关联库。
- ~/agent327/
- └─ lib/
- ├─ chars/
- | ├─ agent.blend ------------->|
- | ├─ boris.blend ------------->|
- | └─ barber.blend |
- └─ scenes/ |
- ├─ 01-opening |
- ├─ 01_01_A.lighting.blend <--| < BAM pack this file
- └─ 01_01_A.anim.blend ------>|
运行 bam pack /scenes/01-opening/0101_A.lighting.blend
命令后,会得到 _01_01_A.lighting.zip 文档,此文档内部结构如下所示。
- ~/01_01_A.lighting
- ├─ 01_01_A.lighting.blend
- └─ __/
- ├─ 01_01_A.anim.blend
- └─ __/
- └─ lib/
- └─ chars/
- ├─ agent.blend
- └─ boris.blend
请注意此输出结果中所有路径是如何以 01_01_A.lighting.blend 为根重映射的。如果运行 bam pack /scenes/01-opening/01_01_A.lighting.blend —repo ~/agent327
命令,输出结果就会不同了。
- ~/01_01_A.lighting
- ├─ lib/
- | └─ chars/
- | ├─ agent.blend
- | └─ boris.blend
- └─ scenes
- └─ 01-opening/
- ├─ 01_01_A.lighting.blend < The BAM packed file
- └─ 01_01_A.anim.blend
此处未进行重映射,仅仅简单地提取出所有文档而没有给出相对于 01_01_A.lighting.blend 的直接或间接的依赖关系。这实际上是原始作品树结构的稀疏拷贝。
bam remap
重映射blend文档的路径:
- usage: bam remap [-h] {start,finish,reset} ...
此命令有三个步骤:
- 首先运行
bam remap start .
来(递归地)储存项目的当前状态。 - 然后在文件系统中重新安置文档(重命名,更改放置位置)。
- 最后运行
bam remap finish
来应用修改,并更新.blend
文档内部路径。
- cd /my/project
- bam remap start .
- mv photos textures
- mv barbershop_v14_library.blend barberhop_libraray.blend
- bam remap finish
Note
在当前目录下重映射创建一个名为 bam_remap.data
的文档。可以把整个项目重新放置到新的地方,但在执行 finish
的时候此文档必须是在当前目录内。
Note
此命令依赖文档的独占内容,故一旦开始重映射后要注意不要修改文档。
子命令
remap start
开始重映射blend文档:
- usage: bam remap start [-h] [-j] [paths [paths ...]]
-j
,—json
- 生成JSON输出。
remap finish
结束重映射blend文档:
- usage: bam remap finish [-h] [-r] [-d] [-j] [paths [paths ...]]
-r
,—force-relative
- 所有重映射路径采用相对路径(即使源文档采用绝对路径也改为采用相对路径)。
-d
,—dry-run
- 如同路径正在运行一样打印输出结果。
-j
,—json
- 生成JSON输出。
remap reset
取消路径重映射:
- usage: bam remap reset [-h] [-j]
-j
,—json
- 生成JSON输出。