Repository navigation
Add UO_Model3D v13 by Levy (shared with the artist's permission) - #22
Conversation
The canonical body (model/, pipeline/, vdtool/, READMEs) under third_party/UO_Model3D_v13, with .blend/.fbx/.glb in git LFS. Nothing extracted from the UO client is included: no client/, no .vd files, no original-frame atlas (the .blend is the stripped copy). The repository test checks the model files against provenance.json hashes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f81f5973ec
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| elif rel.startswith('third_party/UO_Model3D_v13/') and rel.removeprefix('third_party/UO_Model3D_v13/') in model_approved: | ||
| data = path.read_bytes() # a git-lfs pointer carries the sha256 of the real file | ||
| pointer = re.search(rb'^oid sha256:([0-9a-f]{64})$', data, re.MULTILINE) if data.startswith(b'version https://git-lfs') else None | ||
| digest = pointer.group(1).decode() if pointer else hashlib.sha256(data).hexdigest() | ||
| assert digest == model_approved[rel.removeprefix('third_party/UO_Model3D_v13/')], rel |
There was a problem hiding this comment.
Require provenance for every bundled binary asset
Add the newly bundled PNG and NPZ assets to the provenance allowlist and reject unapproved binaries in this subtree. Currently only the three LFS model paths enter this hash check; replacing one of the six albedo PNGs—or adding another PNG/NPZ containing client-derived data—falls through to the permissive branch, and the later checks reject neither extension unless an exact client/extract directory component is present. Thus the privacy guard can pass content it claims to exclude.
AGENTS.md reference: AGENTS.md:L3-L6
Useful? React with 👍 / 👎.
| `third_party/UO_Model3D_v13/` holds UO_Model3D v13 by Levy, shared with the | ||
| artist's permission (the model, its fitting pipeline and `vdtool`). It is not | ||
| under the MIT license. It contains no data extracted from the Ultima Online | ||
| client; see its [NOTICE](third_party/UO_Model3D_v13/NOTICE.md). |
There was a problem hiding this comment.
Update onboarding to use the bundled model
Update the primary README now that this model is included. Its “Start with Content Studio” section still says users need a separately obtained UO_Model3D folder, and “What you download” explicitly says the canonical body scene is not included. A fresh user following those instructions will overlook this bundled, audited source instead of running git lfs pull and passing third_party/UO_Model3D_v13 to the existing setup command.
Useful? React with 👍 / 👎.
Adds UO_Model3D v13 by Levy, SpriteMotion's canonical body, under
third_party/UO_Model3D_v13/. Levy gave permission to share it.model/:.blend(the stripped copy),.fbxand.glbin git LFS, plus the albedo PNGs. Rungit lfs pullafter cloning.pipeline/,vdtool/,README_EN.md/README.md,NOTICE.md,provenance.json(license: shared with permission of the artist (Levy)).client/, every.vd, the original-frame atlas, fit targets built from original silhouettes,*.pklcaches).NOTICE.mdexplains how to rebuild them from your own client.THIRD_PARTY_NOTICES.mdnames the exception.tests/integration/test_repository.pychecks the model files against the provenance hashes (LFS pointer oids) and rejects client-derived file types orclient/extractfolders under the model.Verification:
tests/integration/test_repository.pypasses (4 passed, 1 skipped). The full test suite was not run in this worktree.🤖 Generated with Claude Code