# 节点资产 生产节点组由脚本构建到 `src/anyimage/assets/O_AnyImage.blend`;运行时只加载,不创建节点组。 ## 构建 在项目根目录执行: ```bash uv run build_node ``` 脚本依次构建资产、运行三项 Blender 验证和完整测试,任一步失败即退出。 脚本按 `--blender`、环境变量 `BLENDER_BIN`、项目 `.env`、`PATH` 的顺序查找 Blender。无法自动找到时,在项目根目录的 `.env` 中配置: ```dotenv BLENDER_BIN="/absolute/path/to/blender" ``` `.env` 已被 Git 忽略。临时指定路径或跳过 Python 测试: ```bash uv run build_node --blender "/path/to/blender" uv run build_node --skip-tests ``` ## 资产清单 | 节点组 | 构建模块 | | --- | --- | | `O Mesh Plane` | `build_mesh_plane.py` | | `O Image Depth Plane` | `build_depth_plane.py` | | `O Image Layer`、`O Image Depth Layer` | `build_material_layers.py` | | `O Shadeless` | `build_shadeless.py` | | `O Image Cutout` | `build_cutout.py` | | `O Image Surface`、`O Image Balloon` | `build_cutout.py` | | `O Image Depth Balloon`、`O Image Depth Surface` | `build_cutout.py` | 构建从空 Factory 文件生成全部节点组,关闭 `.blend1` 备份,并覆盖唯一发布资产。 `O Image Cutout` 在四个 Shape 分支与平滑之后统一处理 **Inward Axis**。Shape 子节点保持内部 `+X` 朝向;默认 `-Z` 分支执行一次轴转换,`+X` 分支保留内部坐标。运行时对象矩阵与该接口配对,保证两种模式落在相同世界空间位置。 ## 修改节点组 1. 修改 `tools/node_assets/build_*.py`; 2. 更新对应验证; 3. 运行一键构建脚本; 4. 搜索并清理旧名称、接口和路径; 5. 检查 `.blend`、代码、测试和文档差异。 接口、节点、连线、默认值或布局变化时必须重建。只修改运行时 Python、Markdown 或打包逻辑时无需重建。 `O_AnyImage.blend1` 等备份不应提交或打包。