Merge branch 'release' into dev

This commit is contained in:
Syoyo Fujita
2026-01-07 06:58:28 +09:00
7 changed files with 375 additions and 56 deletions

View File

@@ -7,6 +7,10 @@ assignees: ''
---
**You should first investigate your issue using your coding agent, and prepare minimal reproducible codes/scenes**
**We don't provide free-of-charge issue investigation**
**Users must research issues thoroughly before posting a report, or they will have a chance to be blocked**
**Describe the bug**
A clear and concise description of what the bug is.

View File

@@ -7,6 +7,8 @@ assignees: ''
---
*Users outside of Light Transport Entertainment, Inc need to state your strong commitment of a feature request: either you'll contribute with adequate effort, or sponsor the project with the sufficient amount of sponsorship fees*
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

View File

@@ -10,6 +10,8 @@
</a>
</p>
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/lighttransport/tinyusdz)
[![npm version](https://img.shields.io/npm/v/tinyusdz.svg)](https://www.npmjs.com/package/tinyusdz)
## Releases
@@ -24,6 +26,28 @@
More on the status: https://github.com/lighttransport/tinyusdz/blob/release/doc/status.md
## Next release(Early 2026 planned)
* We plan to use C++17 by default: https://github.com/lighttransport/tinyusdz/issues/220
* Better JS/WASM binding
* MCP(ModelContextProtocol) support
* USDJ(JSON representation of USD)
* Scripting USD with JavaScript(using embedded JS runtime(QuickJS-ng))
* Various optimization, memory usage reduction
* Timesamples dedup support
* Better animation(TimeSamples) support https://github.com/lighttransport/tinyusdz/tree/skinning
* MaterialX support https://github.com/lighttransport/tinyusdz/tree/mtlx-2025
* USDC writer(experimental) https://github.com/lighttransport/tinyusdz/issues/261
* Subdivision surface https://github.com/lighttransport/tinyusdz/tree/subdiv-2025
* Curves(hairs) https://github.com/lighttransport/tinyusdz/tree/curves-2025
* PCP composition(experimental) https://github.com/lighttransport/tinyusdz/issues/262
* Documentation(w.i.p) https://lighttransport.github.io/tinyusdz/pcp.html
## Lab project
* LightUSD: https://github.com/lighttransport/tinyusdz/tree/lightusd/sandbox/lightusd
* USD for 3D genAI/VLM/LLM
## Branches
* `release` Release branch
@@ -34,7 +58,17 @@ More on the status: https://github.com/lighttransport/tinyusdz/blob/release/doc/
## High priority
* Support MCP interface for AI agents: https://github.com/lighttransport/tinyusdz/issues/243
* MaterialX https://github.com/syoyo/tinyusdz/issues/86
* Write our own MaterialX parser
* OpenPBR shading model support https://github.com/lighttransport/tinyusdz/issues/172
* USD + MateriralX + OpenPBR rendering verification using pbrlab? https://github.com/lighttransport/pbrlab
* Enhancement for wasm, webgpu https://github.com/syoyo/tinyusdz/issues/118
* Three.js loader addon(TinyUSDZLoader) https://github.com/lighttransport/tinyusdz/issues/185
* Improve Animation(timeSamples) support in JS/WASM
* Support rigid node animation(xformOp + timeSamples)
* Skinning support
* Convert USD animation data to Three.js friendly format.
## Mid-term todo
* USD import/export feature using TinyUSDZ for robotics/sim2real/digitalTwin/genAI tools https://github.com/lighttransport/tinyusdz/issues/226
@@ -43,13 +77,7 @@ More on the status: https://github.com/lighttransport/tinyusdz/blob/release/doc/
* For OpenGL + MaterialX example, please refer ASF MaterialXViewer fork to load USD model through TinyUSDZ https://github.com/lighttransport/materialx
* Support PLY and point primitive for Gaussian Splatting https://github.com/lighttransport/tinyusdz/issues/190
* Performace optimization https://github.com/syoyo/tinyusdz/issues/164
* MaterialX https://github.com/syoyo/tinyusdz/issues/86
* Write our own MaterialX parser
* OpenPBR shading model support https://github.com/lighttransport/tinyusdz/issues/172
* USD + MateriralX + OpenPBR rendering verification using pbrlab? https://github.com/lighttransport/pbrlab
* Nested variantSet https://github.com/lighttransport/tinyusdz/issues/94
* Enhancement for wasm, webgpu https://github.com/syoyo/tinyusdz/issues/118
* Three.js loader addon(TinyUSDZLoader) https://github.com/lighttransport/tinyusdz/issues/185
* better colorspace + wide-gamut support https://github.com/syoyo/tinyusdz/issues/142
* Better skinning + blendshapes support
* Write example using mediapipe for motion tracking and face tracking with rigged USDZ model.
@@ -438,24 +466,27 @@ Please see [tydra_api](examples/tydra_api/)
### Higher priority
* [ ] Built-in usdObj(wavefront .obj mesh) support.
* via tinyobjloader.
* [x] Support Crate(binary) version 0.8.0(USD v20.11 default)
* [ ] usdSkel utilities
* [ ] Joint hierachy reconstruction and compute skinning matrix(usdSkel)
* [ ] Blend shapes
* [x] Basic Blendshapes support
* [ ] In-between blend shapes
* [ ] Read USD data with bounded memory size. This feature is especially useful for mobile platform(e.g. in terms of security, memory consumption, etc)
* [x] Read USD data with bounded memory size. This feature is especially useful for mobile platform(e.g. in terms of security, memory consumption, etc)
* Mostly done
* [ ] USDC writer
* [ ] Support Nested USDZ
* [ ] UDIM texture support
* [ ] MaterialX support
* [ ] Parse XML file using tinyxml2
### Middle priority
* [ ] Support Nested USDZ
* [ ] UDIM texture support
* [ ] usdSkel utilities
* [ ] Joint hierachy reconstruction and compute skinning matrix(usdSkel)
* [ ] Blend shapes
* [x] Basic Blendshapes support
* [ ] In-between blend shapes
* [ ] Built-in usdObj(wavefront .obj mesh) support.
* via tinyobjloader.
* [ ] Composition arcs
* [x] Basic composition
* [ ] Advanced composition
* [ ] Code refactoring, code optimization
### Lower priority

View File

@@ -1024,6 +1024,7 @@ bool AsciiParser::ReadBasicType(nonstd::optional<value::uint4> *value) {
bool AsciiParser::ReadBasicType(uint32_t *value) {
std::stringstream ss;
constexpr uint32_t kMaxDigits = 100;
// head character
bool has_sign = false;
@@ -1058,7 +1059,13 @@ bool AsciiParser::ReadBasicType(uint32_t *value) {
return false;
}
uint32_t digits=0;
while (!Eof()) {
if (digits > kMaxDigits) {
return false;
}
char c;
if (!Char1(&c)) {
return false;
@@ -1066,19 +1073,22 @@ bool AsciiParser::ReadBasicType(uint32_t *value) {
if ((c >= '0') && (c <= '9')) {
ss << c;
digits++;
} else {
_sr->seek_from_current(-1);
break;
}
}
if (has_sign && (ss.str().size() == 1)) {
std::string str = ss.str();
if (has_sign && (str.size() == 1)) {
// sign only
PushError("Integer value expected but got sign character only.\n");
return false;
}
if ((ss.str().size() > 1) && (ss.str()[0] == '0')) {
if ((str.size() > 1) && (str[0] == '0')) {
PushError("Zero padded integer value is not allowed.\n");
return false;
}
@@ -1087,7 +1097,7 @@ bool AsciiParser::ReadBasicType(uint32_t *value) {
#if defined(__cpp_exceptions) || defined(__EXCEPTIONS)
try {
(*value) = uint32_t(std::stoull(ss.str()));
(*value) = uint32_t(std::stoull(str));
} catch (const std::invalid_argument &e) {
(void)e;
PushError("Not an 64bit unsigned integer literal.\n");
@@ -1101,10 +1111,12 @@ bool AsciiParser::ReadBasicType(uint32_t *value) {
#else
// use jsteemann/atoi
int retcode = 0;
const char* start = str.c_str();
const char* end = str.c_str() + str.size();
auto result = jsteemann::atoi<uint32_t>(
ss.str().c_str(), ss.str().c_str() + ss.str().size(), retcode);
DCOUT("sz = " << ss.str().size());
DCOUT("ss = " << ss.str() << ", retcode = " << retcode
start, end, retcode);
DCOUT("sz = " << str.size());
DCOUT("ss = " << str << ", retcode = " << retcode
<< ", result = " << result);
if (retcode == jsteemann::SUCCESS) {
(*value) = result;
@@ -1175,13 +1187,15 @@ bool AsciiParser::ReadBasicType(int64_t *value) {
}
}
if (has_sign && (ss.str().size() == 1)) {
std::string str = ss.str();
if (has_sign && (str.size() == 1)) {
// sign only
PushError("Integer value expected but got sign character only.\n");
return false;
}
if ((ss.str().size() > 1) && (ss.str()[0] == '0')) {
if ((str.size() > 1) && (str[0] == '0')) {
PushError("Zero padded integer value is not allowed.\n");
return false;
}
@@ -1191,7 +1205,7 @@ bool AsciiParser::ReadBasicType(int64_t *value) {
// TODO(syoyo): Use ryu parse.
#if defined(__cpp_exceptions) || defined(__EXCEPTIONS)
try {
(*value) = std::stoull(ss.str());
(*value) = std::stoull(str);
} catch (const std::invalid_argument &e) {
(void)e;
PushError("Not an 64bit unsigned integer literal.\n");
@@ -1206,8 +1220,10 @@ bool AsciiParser::ReadBasicType(int64_t *value) {
#else
// use jsteemann/atoi
int retcode;
const char* start = str.c_str();
const char* end = str.c_str() + str.size();
auto result = jsteemann::atoi<int64_t>(
ss.str().c_str(), ss.str().c_str() + ss.str().size(), retcode);
start, end, retcode);
if (retcode == jsteemann::SUCCESS) {
(*value) = result;
return true;
@@ -1279,13 +1295,15 @@ bool AsciiParser::ReadBasicType(uint64_t *value) {
}
}
if (has_sign && (ss.str().size() == 1)) {
std::string str = ss.str();
if (has_sign && (str.size() == 1)) {
// sign only
PushError("Integer value expected but got sign character only.\n");
return false;
}
if ((ss.str().size() > 1) && (ss.str()[0] == '0')) {
if ((str.size() > 1) && (str[0] == '0')) {
PushError("Zero padded integer value is not allowed.\n");
return false;
}
@@ -1295,7 +1313,7 @@ bool AsciiParser::ReadBasicType(uint64_t *value) {
// TODO(syoyo): Use ryu parse.
#if defined(__cpp_exceptions) || defined(__EXCEPTIONS)
try {
(*value) = std::stoull(ss.str());
(*value) = std::stoull(str);
} catch (const std::invalid_argument &e) {
(void)e;
PushError("Not an 64bit unsigned integer literal.\n");
@@ -1310,8 +1328,10 @@ bool AsciiParser::ReadBasicType(uint64_t *value) {
#else
// use jsteemann/atoi
int retcode;
const char* start = str.c_str();
const char* end = str.c_str() + str.size();
auto result = jsteemann::atoi<uint64_t>(
ss.str().c_str(), ss.str().c_str() + ss.str().size(), retcode);
start, end, retcode);
if (retcode == jsteemann::SUCCESS) {
(*value) = result;
return true;

View File

@@ -2351,7 +2351,7 @@ std::vector<const GeomSubset *> GetGeomSubsets(
if (familyName.valid()) {
if (pv->familyName.authored()) {
if (pv->familyName.get_value().has_value()) {
const value::token &tok = pv->familyName.get_value().value();
const value::token tok = pv->familyName.get_value().value();
if (familyName.str() == tok.str()) {
result.push_back(pv);
}
@@ -2386,7 +2386,7 @@ std::vector<const GeomSubset *> GetGeomSubsetChildren(
if (familyName.valid()) {
if (pv->familyName.authored()) {
if (pv->familyName.get_value().has_value()) {
const value::token &tok = pv->familyName.get_value().value();
const value::token tok = pv->familyName.get_value().value();
if (familyName.str() == tok.str()) {
result.push_back(pv);
}

View File

@@ -13,14 +13,15 @@
"lil-gui": "^0.19.2",
"stats.js": "^0.17.0",
"three": ">=0.177.0",
"tinyusdz": "0.9.0-rc.2",
"vite-plugin-compression2": "^2.2.0"
"tinyusdz": "^0.9.1",
"vite-plugin-compression2": "^2.2.0",
"vite-plugin-static-copy": "^3.1.0"
},
"devDependencies": {
"@types/bun": "latest",
"@types/bun": "*",
"@types/three": ">=0.177.0",
"typescript": "^5.8.3",
"vite": "^6.1.6"
"vite": "^6.3.6"
}
},
"node_modules/@dimforge/rapier3d-compat": {
@@ -33,7 +34,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -69,7 +69,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -81,7 +80,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -108,7 +106,7 @@
},
"node_modules/@types/node": {
"version": "24.0.4",
"dev": true,
"devOptional": true,
"license": "MIT",
"dependencies": {
"undici-types": "~7.8.0"
@@ -143,6 +141,55 @@
"dev": true,
"license": "BSD-3-Clause"
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/anymatch/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/bun-types": {
"version": "1.2.17",
"dev": true,
@@ -151,9 +198,32 @@
"@types/node": "*"
}
},
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/esbuild": {
"version": "0.25.5",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
@@ -197,7 +267,6 @@
},
"node_modules/fdir": {
"version": "6.4.6",
"dev": true,
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@@ -213,14 +282,126 @@
"dev": true,
"license": "MIT"
},
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/fs-extra": {
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz",
"integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=14.14"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/fzstd": {
"version": "0.1.1",
"license": "MIT"
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"license": "ISC"
},
"node_modules/gsap": {
"version": "3.13.0",
"license": "Standard 'no charge' license: https://gsap.com/standard-license."
},
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/jsonfile": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
"integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
"license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/lil-gui": {
"version": "0.19.2",
"license": "MIT"
@@ -232,7 +413,6 @@
},
"node_modules/nanoid": {
"version": "3.3.11",
"dev": true,
"funding": [
{
"type": "github",
@@ -247,9 +427,29 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/p-map": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
"integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
@@ -264,7 +464,6 @@
},
"node_modules/postcss": {
"version": "8.5.6",
"dev": true,
"funding": [
{
"type": "opencollective",
@@ -289,9 +488,32 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/readdirp/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/rollup": {
"version": "4.44.0",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.8"
@@ -329,7 +551,6 @@
},
"node_modules/source-map-js": {
"version": "1.2.1",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -350,7 +571,6 @@
},
"node_modules/tinyglobby": {
"version": "0.2.14",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.4.4",
@@ -364,9 +584,10 @@
}
},
"node_modules/tinyusdz": {
"version": "0.9.0-rc.2",
"resolved": "https://registry.npmjs.org/tinyusdz/-/tinyusdz-0.9.0-rc.2.tgz",
"integrity": "sha512-LI7u34iKok36HIq5jm3PQFHLX4zaTFZJzo77hbDBbQ3TEIPEy97Cz6Ycb6neZbg0W2LGpJkH9KK8+r37xEP+bg==",
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/tinyusdz/-/tinyusdz-0.9.1.tgz",
"integrity": "sha512-QpJn+o3Zi9siaEhib8if3wfR7ApyauhpfkMz5vMdglgYQh5gYKnfixer8Me+PHFJgWT3urrbm/CJQqnFPh4DyA==",
"license": "Apache 2.0 and MIT",
"dependencies": {
"three": ">=0.177.0"
},
@@ -375,6 +596,18 @@
"url": "https://github.com/sponsors/lighttransport"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/typescript": {
"version": "5.8.3",
"dev": true,
@@ -389,12 +622,22 @@
},
"node_modules/undici-types": {
"version": "7.8.0",
"dev": true,
"devOptional": true,
"license": "MIT"
},
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/vite": {
"version": "6.3.5",
"dev": true,
"version": "6.3.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz",
"integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==",
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
@@ -473,6 +716,25 @@
"@rollup/pluginutils": "^5.1.0",
"tar-mini": "^0.2.0"
}
},
"node_modules/vite-plugin-static-copy": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.1.2.tgz",
"integrity": "sha512-aVmYOzptLVOI2b1jL+cmkF7O6uhRv1u5fvOkQgbohWZp2CbR22kn9ZqkCUIt9umKF7UhdbsEpshn1rf4720QFg==",
"license": "MIT",
"dependencies": {
"chokidar": "^3.6.0",
"fs-extra": "^11.3.0",
"p-map": "^7.0.3",
"picocolors": "^1.1.1",
"tinyglobby": "^0.2.14"
},
"engines": {
"node": "^18.0.0 || >=20.0.0"
},
"peerDependencies": {
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
}
}
}
}

View File

@@ -12,7 +12,7 @@
"@types/bun": "latest",
"@types/three": ">=0.177.0",
"typescript": "^5.8.3",
"vite": "^6.1.6"
"vite": "^6.3.6"
},
"dependencies": {
"fzstd": "^0.1.1",