c/3d/models/CREDITS.md · 6829 字节 · 下载原文
# `Examples/c/3d/` 第三方 3D 资产 —— 出处与许可(CREDITS)
> ⚠ **这个目录里的文件会进 `vml_lib.zip`(= 进 APK / IPA)**(2026-10-08 起 `scripts/make-vml-lib.sh`
> 显式收本目录;同级的 `3d/*.glb` 也在收 —— 第 3 层)。
> ⇒ **往这里放任何资产之前,先查清许可、写进本文件**,否则就是"随包分发了一个来路不明的文件"。
本文件对应 `docs/VML3D对标浏览器.md` 的 **F7「许可与署名」** —— 它此前记的是
「🅿️ 未量(待查:仓内有没有随包分发的第三方资产许可清单)……夹具许可出自任务书,**本轮在仓内找不到出处**」。
2026-10-09 逐份**读了文件自身的 glTF `asset` 块**(`asset.copyright` / `asset.generator`),
并核了 Khronos glTF-Sample-Assets 每个模型 README 的许可,结论如下。
## 现在随包分发的(全部 CC0 或无第三方权利)
⚠ **2026-10-10 整批换过**:用户口径「**例子不需要大文件,打包太大**」——
删掉 5 个 >5 MB 的(AntiqueCamera 17.5 / BoomBox 10.6 / Lantern 9.5 / WaterBottle 8.9 /
Avocado 8.1 MB)外加两个**许可本来就不该随包**的(DamagedHelmet CC BY-**NC** 禁商用、
BoxTextured 要署名且带 Cesium 商标限制 —— 两者下面那张"已删"表里早就记过),
换成 Khronos 的 **CC0** 小样例。`models/` 目录 **~69 MB → ~450 KB**。
| 文件 | 大小 | 许可 | 证据 |
|---|---|---|---|
| `AnimatedColorsCube.glb` | 15 KB | **CC0 1.0** | Khronos README(`© 2017, Public`)+**文件内自带**(`asset.copyright` = `CC0: This work has been marked as dedicated to the public domain. Model by Ed Mackey.`) |
| `TextureLinearInterpolationTest.glb` | 13 KB | **CC0 1.0** | Khronos README(CC0);文件内**无** `copyright` 字段 |
| `InterpolationTest.glb` | 8 KB | **CC0 1.0** | Khronos README(`© 2017, Public`);文件内无 `copyright` |
| `SimpleInstancing.glb` | 7 KB | **CC0 1.0** | Khronos README(`© 2023, Public`);文件内无 `copyright` |
| `AnimatedMorphCube.glb` | 7 KB | **CC0 1.0** | Khronos README(`© 2017, Public`);文件内无 `copyright` |
| `BoxVertexColors.glb` | 2 KB | **CC0 1.0** | Khronos README(`© 2023, Public`);文件内无 `copyright` |
| `3d/rover_cutout.glb` | 163 KB | **本仓库自制** | 文件内 `asset.generator` = `make-rover-cutout-glb.py (WayCoder/Dolaima)`;该脚本从世界常量**程序化构造** glTF,不读任何外部素材 |
⚠ CC0 **不要求**署名 —— 上面这份名单是为了"每个随包资产都能追到一条许可",不是履行署名义务。
### 两条**实测**筛子(许可之外)
① **读文件自己的 `asset.copyright`,不能只信 README** —— 2026-10-10 就是这么揪出两处冲突的:
· `Duck.glb`:README 写 **SCEA Shared Source License**(`© 2006, Sony`),而本仓一直记成 CC0;
· `TextureCoordinateTest.glb`:README 写 CC0,文件内却写 **CC-BY 4.0**。
两处口径不一致 = **不知道到底适用哪一条** ⇒ 都出局(换成了上面这几份:README CC0
**且**文件内要么无声明、要么明写 CC0)。
② **装得出来才算数**:`MetalRoughSpheresNoTextures.glb`(CC0、285 KB)**装不上** ——
引擎上限 64 个网格、它有 102 个(`gltf 装载:解析失败 —— 网格数 102 超过引擎上限 64`)⇒ 没进包。
**加完模型必须真跑一次**(`vmlcli … glb_view.c --arg <模型>`,看 `GLTF_LOAD=1`)。
✅ **`Duck.glb` 与 `TextureCoordinateTest.glb` 已于 2026-10-10 移出**(许可两处口径冲突,
见上面那条与下面的"已删"表)—— 现在随包这 7 份**每一份都能追到一条一致的 CC0 / 自制依据**。
## 2026-10-09 / 2026-10-10 删掉的(都不满足"无版权问题",或纯因体积)
| 文件 | 许可 | 为什么删 |
|---|---|---|
| `Fox.glb` | **CC-BY 4.0**(PixelMannen / @tomkranis / @AsoboStudio with @scurest) | **要署名**,而仓里四处把它记成 CC0 ⇒ 一直**无署名**随包分发 |
| `DamagedHelmet.glb` | **CC BY-NC 4.0**(© 2016 theblueturtle_ 那一版;ctxwing 2018 的重建那层是 CC BY 4.0) | **NC = 禁商用** —— 本 App 是**收费**的(有内购),随包分发**违反 NC 条款** |
| `BoxTextured.glb` | **CC-BY 4.0**(© 2017 Cesium,另带商标限制) | 要署名(且带 `LicenseRef-LegalMark-Cesium`) |
| `AntiqueCamera.glb` | CC0 **但内嵌 UX3D logo**(须署名 + 商标限制,聚合 SPDX = `CC0-1.0 AND LicenseRef-LegalMark-UX3D`) | 保守起见不用;它同时是最大的一份(17.5 MB) |
| `BoomBox.glb` / `Lantern.glb` / `WaterBottle.glb` / `Avocado.glb` | 都是 **CC0**(许可没问题) | **纯体积**:各 8–10 MB,占 `vml_lib.zip` 的绝大部分(2026-10-10 换小模型时一并删) |
| `ToyCar.glb` | CC0 | 上面表里曾列过它,但**本机磁盘上从来没有这份**(Khronos 那份实测 5.4 MB,>5 MB 线)⇒ 本次不动;要它进包再说 |
| `Duck.glb` | 实为 **SCEA Shared Source License**(`© 2006, Sony`) | 2026-10-10:本仓四处把它记成 **CC0** —— **记错了**。许可两处口径不一致就不再随包分发(用户:「换掉那些版权可能有问题的文件」)。**别再把它当 CC0 用** |
| `TextureCoordinateTest.glb` | README 写 CC0、**文件内写 CC-BY 4.0** | 2026-10-10:同上 —— 口径冲突 ⇒ 出局 |
**判据(一手证据)**:`unzip -p vml_lib.zip … | python -c "读 GLB 的 JSON chunk.asset"`
(`Fox.glb` 的 `asset.copyright` 里逐字写着 `CC-BY 4.0`)。
`DamagedHelmet` / `BoxTextured` / `AntiqueCamera` 文件内**没有** `copyright` 字段 ⇒ 许可只能从
Khronos 各模型 README 核 —— 这四份都**不是** CC0,所以都出局。
⚠ **这些是"随包"的,不只是"在磁盘上"**:它们此前只存在于**打包那台机器的 `models/` 目录**里
(被本目录的 `.gitignore` 挡在仓库外),所以光看工作树**发现不了** —— 必须**解 `vml_lib.zip` 逐份查**。
本条就是这么发现的:工作树里只有 3 个模型,包里却有 9 个。
## 代价与恢复
- 删掉这四个后,`vml_lib.zip` 从 **65.6 MB → 62.4 MB**。
- 需要某个被删的模型做本地试验时:**只在本机放**,并**别提交、别让它进包**
(`models/.gitignore` 是 `*` + 白名单,白名单里现在**只有 `CREDITS.md`**)。
更好的一条:`adb push` 到设备的
`/storage/emulated/0/waycoder/workspace/examples/c/3d/models/` —— **那条路不进包**。
- ⚠ 要加回 Fox(CC-BY 允许分发)也可以,**前提是先在本文件里写下完整署名**(作者 + 链接)。