SimReady 打包规范完整指南:解析 simready-assets 的 packaging.json、BOM 与 sha256 哈希校验原理
- 数据集
- 3D建模
- 数字孪生
【免费下载链接】simready-assets
本文以 simready-assets 仓库中的 11 个家电资产为例,用大白话讲清 SimReady 打包规范:packaging.json 如何充当包清单、BOM 台账如何登记每个文件,以及 sha256 哈希校验如何保证每个资产包的完整性与可追溯。新手零前置知识也能看懂。
一个包 = 一个文件夹:simready-assets 的标准布局 📦
仓库按"一个产品一个包"组织,每个包都遵循相同的三段式结构:
| 部分 | 示例路径 | 职责 |
|---|---|---|
| 包清单 | com.nvidia.simready.packaging.json | 记录包 ID、许可证与三级哈希"指纹" |
| 资产主体 | simready_usd/ | 根 USD、材质(mdl)、贴图 |
| 元数据报告 | .metadata/ | BOM、conformance 报告、validation、benchmark |
11 个包覆盖空气净化器、烤箱、洗碗机、洗烘机和笔记本等品类,如air-purifier_as25gcbz0、cooking_mser1130b、laundry_wm9900hba。资产主体中,cooking_mser1130b.usd 是场景入口,材质放在materials/(如 pbr.mdl),贴图放在textures/。
packaging.json:SimReady 包的"身份证"
每个包目录根部都有一个com.nvidia.simready.packaging.json,文件名采用反向域名风格,方便在海量目录中快速识别。以空气净化器包为例,关键字段如下:
| 字段 | 示例值 | 作用 |
|---|---|---|
format_version | "1.0" | 清单格式版本 |
package_id | simready.hf.LGElectronics.simready-assets.air-purifier_as25gcbz0.2026.10.13_00 | 全局唯一包编号 |
license | cc-by-4.0 | 开源许可证,与 README.md 声明一致 |
metadata | 3 项数组 | 登记 3 个元数据文件的名称与 sha256 |
content_hash | sha256 值 | 资产内容的整体"指纹" |
package_hash | sha256 值 | 整个包最终指纹 |
两个值得注意的细节:
- package_id 命名有固定约定:
simready.<来源>.<所有者>.<仓库>.<资产名>.<构建日期>,从编号就能看出这是哪个资产、哪一天构建的,跨包绝不冲突。 metadata引用的三个文件:conformance 报告、BOM 台账(com.nvidia.simready.packaging.bom.json)与根 USD 索引(com.nvidia.simready.root_usds.json)。清单里只存它们的哈希、不存内容,这是"防止台账被篡改"的关键设计。
BOM 台账:给每个文件登记"名字、重量、指纹"
BOM(Bill of Materials,物料清单)在 SimReady 包里就是一份逐文件登记表。以 com.nvidia.simready.packaging.bom.json 为例,items数组列出simready_usd/下的每一个文件:
relative_path:文件相对路径,如simready_usd/textures/Image_5.pngsize:文件字节数hash:一到多个 sha256 指纹
有意思的是,不同文件配备的哈希组合不一样。以 cooking_mser1130b 包的根 USD(约 4.2MB)为例,它同时带了三种指纹:
| 哈希名 | 计算对象 | 典型用途 |
|---|---|---|
sha256 | 整个文件 | 最终完整性校验(权威) |
sha256-flat-1mb | 按 1MB 块展平后计算 | 大文件分块校验,适合断点续验、分布式校验 |
sha256-first1m | 仅文件前 1MB | 快速预检:不读完整文件就能确认"是不是这份文件" |
也就是说:小文件只做整文件 sha256;大文件额外增加"快检 + 分块检"两条通道,几 KB 的 I/O 就能定位损坏位置,不必反复读完整文件。
四层哈希校验:SimReady 资产完整性的信任链 🔍
把前面两部分拼起来,SimReady 实际用的是一个四层"套娃"校验结构,从内到外依次是:
- 文件层:对照 BOM 逐个文件校验 sha256,任何一个不匹配,就能立刻定位到损坏或被篡改的具体文件;
- 元数据层:packaging.json 的
metadata字段用各自 sha256 锁住被引用的三个文件——先信任清单,才能信任 BOM 台账; - 内容层:
content_hash概括全部资产内容,贴图像素级改一个字节,指纹就会变化; - 包层:
package_hash是整个包(内容 + 元数据)的最终指纹,平台只需存这一个值就能标识一份资产版本。
这个结构的好处是:下层校验上层,上层只信任下层的哈希值。清单在最外层且只需被信任一次,其余全部可以机械验证、不依赖人工判断。这正是 SimReady 生态做资产版本比对、完整性校验与防篡改的工程基础。
conformance 与 validation:报告里的"passed"是怎么判定的 ✅
.metadata/目录还存放一组质量报告,各管一件事:
- conformance 报告(com.nvidia.simready.conformance.Package@1.0.0.json):逐项记录包通过的 feature 项。例如
FET_030_STANDARD(打包标准)与依赖它的FET_032_STANDARD均为passed: true; - validation 报告(cooking_mser1130b_validation.json):根 USD 的逐项功能校验,如
FET_003_PHYSX(PhysX 支持)通过,并给出每个 feature 的版本、依赖链(dependencies)与可选要求(optional requirements); - benchmark 报告(cooking_mser1130b_benchmark.json):Isaac Sim 引擎上的实测结果,例如
culling_xz测试最大像素偏差仅 6e-06,报告整体passed: true。
新手可以这样记:conformance 回答"包的形式合不合法",validation 回答"资产内容合不合格",benchmark 回答"实测表现如何"。
新手快速校验资产包的四步清单
想自己动手核对一个资产包(以空气净化器包为例)时,可以按这四步走:
- 克隆仓库并拉取 Git LFS 大文件(.usd 和贴图都走 LFS 存储):
git clone https://gitcode.com/hf_mirrors/LGElectronics/simready-assets cd simready-assets && git lfs pull- 打开对应包的 packaging.json,用
sha256sum对metadata[].hash.sha256逐一核对元数据文件; - 打开 BOM,抽查根 USD 和最大贴图,比对
items[].hash.sha256; - 将逐层核对结果与
content_hash、package_hash对照,全部一致即可信任整个包。
总结
simready-assets 的 SimReady 打包规范可以浓缩成三句话:packaging.json 是身份证,BOM 是台账,四级 sha256 链是信任链。配合 package_id 的固定命名和元数据哈希锁,任何一份资产都能被快速定位、版本化管理和机器校验——这也是 SimReady 生态做大规模高质量 3D 资产分发与协作的底层基础。
- 数据集
- 3D建模
- 数字孪生
【免费下载链接】simready-assets
相关推荐
从glTF到SimReady的终极转换秘籍:simready-assets中lg_gltf.mdl材质实现原理实战解析
从glTF到SimReady的终极转换秘籍:simready assets中lg_gltf.mdl材质实现原理实战解析 在 3D 资产进入机器人仿真领域时,如何
数据集3D建模数字孪生使用 IHP DataSync 构建实时单页应用:React 混合架构实战指南
使用 IHP DataSync 构建实时单页应用:React 混合架构实战指南 导读 本文讲解如何在 IHP(Integrity Haskell Platfor
数据集3D建模数字孪生Wabbajack:如何用自动化技术彻底改变游戏模组安装体验?
Wabbajack:如何用自动化技术彻底改变游戏模组安装体验? 你是否曾经为了安装心仪的游戏模组而花费数小时手动下载、配置和排序?是否因为模组冲突而不得不反复调
桌面应用游戏开发后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考