WolfDavid commited on
Commit
d096a92
Β·
1 Parent(s): d3359f1

feat(01-01): add the VRM tutor character and record its license facts

Browse files

- avatar/assets/tutor.vrm: VRM1_Constraint_Twist_Sample by pixiv Inc.,
VRM 1.0, 10,776,032 bytes, committed through Git LFS
- License flags read from the file's own VRMC_vrm.meta, not from a README:
allowRedistribution=true, avatarPermission=everyone,
modification=allowModificationRedistribution, creditNotation=unnecessary
- All five visemes (aa/ih/ou/ee/oh) and blink confirmed present among the
18 preset expressions, so AVTR-01 and AVTR-02 are both satisfiable
- Marked a temporary dev asset; plan 01-10 must re-raise the sourcing gate
- Records that AvatarSample_A/B/C are NOT CC0

Files changed (2) hide show
  1. avatar/assets/tutor.vrm +3 -0
  2. docs/ASSETS.md +140 -0
avatar/assets/tutor.vrm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:12c2b97e95e700783a6a550dc0eee2d7880aeedccef9ae67bc4c5a2f0f2631a2
3
+ size 10776032
docs/ASSETS.md ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Shipped Assets β€” provenance and license facts
2
+
3
+ > Source of truth for LICENSES.md (written in plan 01-10). Every row must be
4
+ > traceable to a document that was actually read, not inferred.
5
+
6
+ ## VRM character β€” avatar/assets/tutor.vrm
7
+
8
+ > **STATUS: TEMPORARY DEV ASSET.** This is a properly-licensed placeholder chosen to unblock the
9
+ > avatar pipeline (plans 01-03, 01-06, 01-08, 01-09). The decision to author a bespoke character was
10
+ > deferred, **not cancelled**. **Plan 01-10 MUST re-raise the VRM sourcing checkpoint before the
11
+ > phase-exit licensing audit.** See "Open item for plan 01-10" below.
12
+
13
+ | Field | Value |
14
+ |---|---|
15
+ | Character name | VRM1_Constraint_Twist_Sample (embedded `meta.name`), model version `v1.0.1` |
16
+ | Author | pixiv Inc. (embedded `meta.authors` = `['pixiv Inc.']`) |
17
+ | Copyright | (c) 2022 pixiv Inc. (embedded `meta.copyrightInformation`) |
18
+ | Source | Official VRM specification sample repository, `vrm-c/vrm-specification`, path `samples/VRM1_Constraint_Twist_Sample/vrm/VRM1_Constraint_Twist_Sample.vrm` β€” https://github.com/vrm-c/vrm-specification/tree/master/samples/VRM1_Constraint_Twist_Sample (HTTP 200, verified 2026-08-27) |
19
+ | Download URL used | https://raw.githubusercontent.com/vrm-c/vrm-specification/master/samples/VRM1_Constraint_Twist_Sample/vrm/VRM1_Constraint_Twist_Sample.vrm (HTTP 200, verified 2026-08-27) |
20
+ | Terms URL | https://vrm.dev/licenses/1.0/ β€” VRM Public License 1.0 (HTTP 200, verified 2026-08-27) |
21
+ | VRM spec version | **VRM 1.0** (`extensions.VRMC_vrm.specVersion` = `1.0`), glTF binary container version 2 |
22
+ | Embedded meta (read from the file) | name=VRM1_Constraint_Twist_Sample authors=['pixiv Inc.'] licenseUrl=https://vrm.dev/licenses/1.0/ commercialUsage=corporation creditNotation=unnecessary avatarPermission=everyone allowRedistribution=true modification=allowModificationRedistribution copyrightInformation=(c) 2022 pixiv Inc. |
23
+ | Permissions relied on | `allowRedistribution: true` (this repo redistributes the file), `avatarPermission: everyone` (used as an avatar by any visitor), `modification: allowModificationRedistribution` (headroom to retarget or adjust and still redistribute), `commercialUsage: corporation` (the broadest tier β€” covers a public portfolio Space unambiguously) |
24
+ | Required credit string | **none required** β€” `creditNotation: unnecessary`. Credited voluntarily anyway as: `VRM1_Constraint_Twist_Sample (c) 2022 pixiv Inc. β€” VRM Public License 1.0` |
25
+ | File size | 10,776,032 bytes (10.28 MiB) |
26
+ | SHA-256 | `12c2b97e95e700783a6a550dc0eee2d7880aeedccef9ae67bc4c5a2f0f2631a2` |
27
+ | Git LFS | yes β€” `git check-attr filter` reports `filter: lfs`, and the LFS pointer's `oid sha256` equals the hash above |
28
+
29
+ ### Why the embedded flags are the license answer, and the README is not
30
+
31
+ VRM Public License 1.0 is a **template, not a fixed grant.** It confers "Model Utilization" rights
32
+ unconditionally, but redistribution, avatar use, modification and commercial use are **per-file
33
+ flags set by the licensor inside the model's own `VRMC_vrm.meta` block.** Two files can both cite
34
+ `https://vrm.dev/licenses/1.0/` and grant materially different rights.
35
+
36
+ So the facts above were extracted by parsing this specific file's glTF JSON chunk, not read off a
37
+ repository README. Every flag this project relies on is explicit and permissive in the file itself.
38
+
39
+ The complete embedded `meta`, verbatim, for the record:
40
+
41
+ ```
42
+ allowAntisocialOrHateUsage : False
43
+ allowExcessivelySexualUsage : True
44
+ allowExcessivelyViolentUsage : True
45
+ allowPoliticalOrReligiousUsage: True
46
+ allowRedistribution : True
47
+ authors : ['pixiv Inc.']
48
+ avatarPermission : everyone
49
+ commercialUsage : corporation
50
+ copyrightInformation : (c) 2022 pixiv Inc.
51
+ creditNotation : unnecessary
52
+ licenseUrl : https://vrm.dev/licenses/1.0/
53
+ modification : allowModificationRedistribution
54
+ name : VRM1_Constraint_Twist_Sample
55
+ thumbnailImage : 18
56
+ version : v1.0.1
57
+ ```
58
+
59
+ `allowAntisocialOrHateUsage: False` is the one restriction. It is not a constraint this project can
60
+ plausibly violate β€” a Japanese-language tutor has no such use path β€” but plan 01-10's `LICENSES.md`
61
+ should carry it so the restriction is stated rather than silently dropped.
62
+
63
+ ### Capability check β€” this asset can actually satisfy AVTR-01 and AVTR-02
64
+
65
+ Verified by parsing `extensions.VRMC_vrm.expressions`: **18 preset expressions, 0 custom.**
66
+
67
+ ```
68
+ aa, angry, blink, blinkLeft, blinkRight, ee, happy, ih, lookDown, lookLeft,
69
+ lookRight, lookUp, neutral, oh, ou, relaxed, sad, surprised
70
+ ```
71
+
72
+ | Requirement | Needs | Present |
73
+ |---|---|---|
74
+ | AVTR-02 lip-sync | `aa`, `ih`, `ou`, `ee`, `oh` | **all five present** |
75
+ | AVTR-01 idle life | `blink` (plus `blinkLeft` / `blinkRight`) | **present** |
76
+ | Expression range (later phases) | `happy`, `angry`, `sad`, `relaxed`, `surprised`, `neutral` | present |
77
+ | Gaze (later phases) | `lookUp` / `lookDown` / `lookLeft` / `lookRight` | present |
78
+
79
+ This was measured, not assumed. Both avatar requirements in Phase 1 are satisfiable with this file.
80
+
81
+ Also present, and relevant to plan 01-03's renderer wiring:
82
+
83
+ - `extensionsUsed`: `VRMC_springBone`, `VRMC_vrm`, `KHR_materials_unlit`, `VRMC_materials_mtoon`,
84
+ `VRMC_node_constraint`
85
+ - **54 humanoid bones** defined, including `hips`, `head`, `leftEye`, `rightEye`. There is **no
86
+ `jaw` bone** β€” which is fine and expected: VRM lip-sync is driven by the `aa`/`ih`/`ou`/`ee`/`oh`
87
+ blendshape expressions listed above, never by a jaw bone.
88
+ - This sample exists specifically to exercise **twist constraints** (`VRMC_node_constraint`) and
89
+ spring bones. That makes it a slightly heavier load path than a plain character, which is useful:
90
+ if plan 01-03's transport seam holds for this file, it holds for simpler ones.
91
+
92
+ ## Not used, and why
93
+
94
+ **`AvatarSample_A`, `AvatarSample_B` and `AvatarSample_C` are NOT CC0.** Copyright is retained and
95
+ VRoid Hub conditions apply; VRoid's own FAQ prohibits redistributing them under a CC0 designation.
96
+ This is a widespread misconception, repeated confidently in many tutorials and blog posts. It is
97
+ recorded here so it is not reintroduced later in this repository.
98
+
99
+ Two further traps worth stating once, since they are the reason sourcing a VRM is a human decision
100
+ rather than a download:
101
+
102
+ - CC0 **cannot be set** on VRoid Hub, so any "CC0 on VRoid Hub" claim is false by construction.
103
+ - Enabling "Allow third-party usage" on VRoid Hub **overwrites** a model's embedded license with
104
+ VRoid Hub's own conditions β€” so the embedded flags on a Hub-sourced model may not say what the
105
+ original author intended.
106
+
107
+ ## Open item for plan 01-10
108
+
109
+ `avatar/assets/tutor.vrm` is a **temporary dev asset.** Plan 01-10 must re-raise the VRM sourcing
110
+ checkpoint before the phase-exit licensing audit and decide one of:
111
+
112
+ 1. **Keep this file.** Legally clean as recorded above and requires no further action beyond the
113
+ `LICENSES.md` entry. Costs the project its own character identity β€” it ships a spec sample named
114
+ `VRM1_Constraint_Twist_Sample`, which is a visible tell on a flagship portfolio piece.
115
+ 2. **Author a bespoke character in VRoid Studio** (the original RESEARCH recommendation, estimated
116
+ 2-4 hours). Converts DPLY-04 from "read someone else's terms and hope" into "state your own
117
+ terms", and gives the tutor a real identity. The embedded `vrm.meta` must be set deliberately at
118
+ export time, because plan 01-09 has an automated test asserting `vrm.meta` matches `LICENSES.md`.
119
+
120
+ Whichever is chosen, `LICENSES.md` must carry the VRM entry and
121
+ `tests/e2e/test_avatar_loop.py::test_vrm_meta_matches_licenses` must assert against the file that
122
+ actually ships.
123
+
124
+ **Fallback already vetted, if this file ever fails verification:** `Seed-san.vrm` by VirtualCast,
125
+ Inc., in the sibling samples path of the same repository β€” same permission flags and the same 18
126
+ presets, except `creditNotation: required`, which would make a visible credit string mandatory.
127
+
128
+ ## Voice β€” VOICEVOX / γšγ‚“γ γ‚‚γ‚“
129
+
130
+ **Already recorded in full by plan 01-04. See `docs/VOICEVOX-SETUP.md`**, which carries all three
131
+ licence layers, the exact `VOICEVOX:γšγ‚“γ γ‚‚γ‚“` credit string, the placement standard, the flow-down
132
+ obligation, the Nemo pre-cleared swap, and the Open JTalk dictionary's BSD-3-Clause notice with its
133
+ dual Nara/Nagoya attribution. Not duplicated here; `LICENSES.md` (plan 01-10) should read that file
134
+ directly.
135
+
136
+ ## Runtime libraries β€” to be filled by plan 01-10
137
+
138
+ three.js, `@pixiv/three-vrm`, transformers.js, and the Open JTalk dictionary. Note that this VRM
139
+ additionally exercises `VRMC_springBone`, `VRMC_node_constraint` and `VRMC_materials_mtoon`, all of
140
+ which are handled by `@pixiv/three-vrm` itself and add no separate licence entry.