在这个使用 Blender 4.2 制作的视频中,我会向大家展示几个 Python 脚本,它们可以将一个 Blender 场景的内容导出为 FBX,并包含 Textures,而且会对文件夹中所有可用的 Blender 文件执行这个操作。
本教程不提供中文配音。您可以在下方观看英语配音的视频,并选择中文、英文或其他语言的字幕。视频下方提供了翻译成中文的文字稿。
视频文字稿
大家好!在这个使用 Blender 4.2 制作的视频中,我会向大家展示几个 Python 脚本,它们可以将一个 Blender 场景的内容导出为 FBX,并包含 Textures,而且会对文件夹中所有可用的 Blender 文件执行这个操作。
这里有两个脚本,因为第一个脚本负责导出它所执行的文件,而第二个脚本会对文件夹中的所有 Blender 文件运行第一个脚本。
我创建这些脚本是为了满足我自己的一个特定需求,我也知道这是一个非常特殊的案例。不过,这个教程也可以扩展到其他情况,因为它实际上展示了如何在甚至不需要打开 Blender 的情况下运行脚本,并向脚本提供参数。因此,你也可以把这种方法用于不同于本例的其他 operators 和 tools!
具体来说,可以使用 operators 模块中的 export scene fbx 函数,将 blend 场景的内容导出为 FBX 文件,并指定目标文件名和其他参数,就像 Blender 手册中该 operator 的文档所说明的那样。

我最感兴趣的是也导出模型材质的 Textures,使用 Embedded 选项并启用 Copy 模式,正如我在如何将模型连同纹理导出为 FBX 的教程中解释过的那样。
除了目标文件名之外,我们需要指定的两个参数是 Path Mode,它必须设置为 Copy,以及 embed textures,它必须设置为 True。
因此,在 export embedded fbx 脚本中的函数调用将是:bpy.ops.export_scene.fbx(filepath = sys argv -1, path mode='COPY', embed textures = True)。

在导入 bpy 和 sys 模块之后,这就是需要包含在 export_embedded_fbx.py 文件中的唯一指令。文件名是作为参数传递给脚本的,而 Path Mode 和 Embed Textures 允许你将作为 Textures 使用的图像存储在 FBX 文件内部。
如果我们想在单个 blend 文件上运行这个脚本,只需要在终端中写入以下命令:
blender filename.blend --background --python export_embedded_fbx.py -- filename.fbx

不过,我想对文件夹中的所有 Blender 文件运行这个脚本,而这些文件可能有很多,所以我不想每次都手动替换文件名!
因此,我们需要另一个脚本或 batch file,为它在当前文件夹中找到的每个 Blender 文件运行那条命令。
一个简单的解决方案是在另一个 Python 文件中写入以下指令,例如我们可以把它叫作 batch export embedded fbx。
在导入 os 和 subprocess 模块之后,我们需要用它们访问磁盘上的文件并启动另一个 Python 脚本,然后我们获取当前文件夹的路径,并将它存储在变量 script dir 中。
完成这一步后,我们获取当前文件夹中所有可用 Blender 文件的列表。
此时,我们开始一个循环,对列表中的每个 Blender 文件,运行 export embedded fbx Python 脚本,同时向它传递当前 Blender 文件名和输出文件名,输出文件名带有 EMBEDDED 后缀和 .fbx 扩展名。

将两个文件都保存到磁盘之后,剩下要做的就是运行 batch export embedded fbx Python 脚本,以获得所需的结果。
好了,希望这个简短的视频对你有所帮助!我们很快再见!