SuperAPI AI 工具集

blender-scene-setup

设计与创作

查看项目

更新于 10-16 19:37

技能介绍

该技能用于按工作室标准搭建和审计 Blender 场景,重点在于单位与真实世界比例、集合布局、命名规范、原点设置,以及链接与追加等资产组织方式。执行模型与验证步骤位于 blender-core。

【审计流程】 运行 scripts/scene_audit.py(仅在自有文件上附加 --fix purge scale paths)。该脚本会报告:单位、未应用/负缩放、默认名称、位于场景根目录的对象、缺失图像、孤立数据以及偏移过远的原点。

【单位设置】 采用公制(Metric),单位缩放 1.0,长度单位米。即使面向 Unreal 或 Roblox 也保持 1.0,因为导出器会处理单位转换(参见 blender-export-pipelines)。

【集合布局】 每个 .blend 一个资产,或每个资产一个集合。示例结构: ASSET_Crate ├── Crate_high # 雕刻/细分源(导出时排除) ├── Crate_low # 游戏网格 SM_Crate、SM_Crate_LOD1.. ├── Crate_bake # 笼体、烘焙辅助对象 ├── Crate_collision # UCX_SM_Crate_00(UE)/ Crate-col(Godot) └── Crate_ref # 参考图/白模(hide_render) 每个对象必须位于具名集合中,不得放在场景根目录。

【命名规范】 使用 Unreal 风格,各引擎均接受,例如:静态网格 SM_<Name>[LOD#](SM_Crate_LOD1)、骨骼网格/绑定 SK<Name> / RIG_<Name>(骨架对象名为 Armature 或 root)、材质 M_<Name> / 实例 MI_<Name>(M_Wood_Oak)、贴图 T_<Name>_<Suffix>(_BC 基础色、_N 法线、ORM(R=AO G=Rough B=Metal)、E 自发光、M 遮罩,如 T_Crate_ORM)、碰撞 UE UCX<Mesh>## 或 Godot 后缀 -col/-colonly/-convcolonly、骨骼/侧向 .L/.R(如 upper_arm.L)、动作 <Rig><Clip>(如 Hero_Run)。仅使用 ASCII、无空格,PascalCase 或 snake_case 在项目内保持一致。每次复制或合并后重命名,确保没有 .001 后缀残留。

【原点设置】 道具放在底部中心(在 Z=0 的地面上),角色放在世界原点双脚之间,门/铰链放在枢轴处。对网格应用旋转和缩放(Ctrl+A),除非资产应在原点导出,否则保留位置。

【真实世界比例参考(米)】 门 2.0–2.1 × 0.9;天花板 2.4–2.7;桌 0.75;椅面 0.45;柜台 0.9;楼梯踏步高 0.18 / 深 0.28;成人 1.7–1.8(眼睛 1.6);汽车 4.5 × 1.8 × 1.5。Roblox:1 stud ≈ 0.28 m,默认角色约 5 studs 高。比例错误会破坏物理、光照衰减、景深和纹理密度,因此先检查 ob.dimensions。

【集合导出器(4.2+)】 可为每个集合定义一次导出,之后用一次调用重新导出: with bpy.context.temp_override(collection=col): bpy.ops.collection.exporter_add(name="IO_FH_gltf2") ex = col.exporters[-1]; ex.export_properties.filepath = "//export/SM_Crate.glb" with bpy.context.temp_override(collection=col): bpy.ops.collection.exporter_export(index=len(col.exporters) - 1) bpy.ops.wm.collection_export_all() 会重新运行所有集合导出器。

【链接、追加与覆盖】 追加(libraries.load(link=False))生成本地副本,用于一次性复用。链接(link=True)为只读,随源更新,是流水线采用的方式。要编辑已链接的集合,添加库覆盖:ob.override_hierarchy_create(scene, view_layer, do_fully_editable=False)。仅可覆盖的属性(变换、姿态,以及任何标记为可覆盖的属性)可以更改。保持库路径为相对路径(//),检查 bpy.data.libraries 中是否存在断开的路径。

【资产库】 标记:ob.asset_mark(); ob.asset_generate_preview()。元数据存入 ob.asset_data(作者、描述、许可证、tags.new("wood")、catalog_id)。目录位于库根目录的 blender_assets.cats.txt,每行一个目录:UUID:Path/Sub:Simple Name。使用 prefs.filepaths.asset_libraries.new(name=..., directory=...) 注册库。5.2+ 通过 use_remote_url + remote_url 支持远程库。在 5.2 中 active_asset_library 的索引偏移为 2("All"、"Essentials")。每个库的导入方式:LINK、APPEND、APPEND_REUSE(默认,复用已追加的数据)。

【卫生规则】 发布前清除孤立数据(bpy.data.orphans_purge(do_recursive=True)),仅在有意为之的时候使用假用户。图像路径使用相对路径(file.make_paths_relative),或为单文件交付打包(file.pack_all)。绝不要交付带未应用逐对象缩放的多人共享网格数据;实例可以,但导出前要烘焙缩放。用 hide_render=True 隐藏辅助对象,并将其排除出导出集合;仅视口隐藏不够。交付时每个文件只保留一个活动场景,多余场景会使导出器混淆(use_active_scene)。

重新运行审计,当问题为空或每个剩余问题都是有意为之且有说明时,即告完成。