面向读者
验证等级
配置编译与完整性验证通过。 程序解析三个本地资源,检查依赖 DAG 与 SHA-256,写入 临时 Lock 并验证全部三个资源。它不会在 PyBullet 中加载 OBJ,也不宣称原生渲染或 物理验收通过。
文件说明
run.yaml创建一个资源包对象实例。main.py通过公开 API 检查资源并验证 Lock。../catalog/resource_bundle.yaml声明资源职责、格式、摘要与依赖。../catalog/assets/bundle/保存极小的演示 OBJ/MTL 文件。
理解 Manifest
yaml
resources:
material:
uri: assets/bundle/visual.mtl
format: model/mtl
role: material
sha256: ...
visual:
uri: assets/bundle/visual.obj
format: model/obj
role: visual
sha256: ...
dependencies: [material]
collision:
uri: assets/bundle/collision.obj
format: model/obj
role: collision
sha256: ...
资源名称是稳定的局部键。role 告诉使用者资源用途;format 明确声明格式,而不是靠
扩展名猜测。dependencies 引用同组件中的其他资源,并且必须形成无环图。本例是
visual → material,collision 独立。每个 SHA-256 都固定准确文件内容。
理解 Run
yaml
bundled_prop:
use: object://fastsim/component-demo-resource-bundle
Run 选择逻辑产品,而不是逐个选择文件。编译会在 Project 可信根内解析所选 Variant 的完整资源包,并把准确资源写入不可变计划。
运行
bash
fastsim config validate run.yaml --json
mkdir -p output
fastsim config lock run.yaml --output output/component-bundle.lock.yaml
fastsim config verify-lock output/component-bundle.lock.yaml --json
python main.py
预期 Python 输出列出 collision、material 和 visual,且只有 visual 依赖
material。最后输出:
text
Lock valid: True
Checked resources: 3
Python 程序使用临时目录,因此不会在源码旁留下生成的 Lock。
常见错误
- 依赖名称不是同组件中的资源:编译会拒绝。
- 创建依赖环:资源顺序必须构成 DAG。
- 修改资产却不更新 Manifest 和 Registry 摘要:加载或 Lock 验证会按设计失败。
- 对带凹结构的视觉物品直接共用一个模型、却没有设计碰撞资产:视觉几何与碰撞几何 职责不同。
- 把有效 Lock 当成原生验收:它证明身份和字节内容,不证明仿真器行为。