mirror of
https://github.com/lighttransport/tinyusdz.git
synced 2026-01-18 01:11:17 +01:00
Merge branch 'release' into dev
This commit is contained in:
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
4
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -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.
|
||||
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -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 [...]
|
||||
|
||||
|
||||
65
README.md
65
README.md
@@ -10,6 +10,8 @@
|
||||
</a>
|
||||
</p>
|
||||
|
||||
[](https://deepwiki.com/lighttransport/tinyusdz)
|
||||
|
||||
[](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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
306
web/demo/package-lock.json
generated
306
web/demo/package-lock.json
generated
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user