@jfk-solutions/demo3d-file-format 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +289 -1
- package/dist/examples/export-embedded-viewer-standalone.html +193 -0
- package/dist/examples/three-render-smoke-standalone.html +4997 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +20 -3
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +89 -11
- package/dist/model.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +135 -9
- package/dist/parser.js.map +1 -1
- package/dist/raw3d-animation.d.ts +63 -0
- package/dist/raw3d-animation.d.ts.map +1 -0
- package/dist/raw3d-animation.js +200 -0
- package/dist/raw3d-animation.js.map +1 -0
- package/dist/raw3d-effects.d.ts +66 -0
- package/dist/raw3d-effects.d.ts.map +1 -0
- package/dist/raw3d-effects.js +172 -0
- package/dist/raw3d-effects.js.map +1 -0
- package/dist/raw3d-skinning.d.ts +8 -0
- package/dist/raw3d-skinning.d.ts.map +1 -0
- package/dist/raw3d-skinning.js +37 -0
- package/dist/raw3d-skinning.js.map +1 -0
- package/dist/raw3d.d.ts +84 -4
- package/dist/raw3d.d.ts.map +1 -1
- package/dist/raw3d.js +111 -9
- package/dist/raw3d.js.map +1 -1
- package/dist/rigid-interpolation.d.ts +16 -0
- package/dist/rigid-interpolation.d.ts.map +1 -0
- package/dist/rigid-interpolation.js +52 -0
- package/dist/rigid-interpolation.js.map +1 -0
- package/dist/three/backend.d.ts +13 -0
- package/dist/three/backend.d.ts.map +1 -0
- package/dist/three/backend.js +9 -0
- package/dist/three/backend.js.map +1 -0
- package/dist/three/effects.d.ts +7 -0
- package/dist/three/effects.d.ts.map +1 -0
- package/dist/three/effects.js +127 -0
- package/dist/three/effects.js.map +1 -0
- package/dist/three/index.d.ts +5 -1
- package/dist/three/index.d.ts.map +1 -1
- package/dist/three/index.js +35 -1
- package/dist/three/index.js.map +1 -1
- package/dist/three/native-lighting.d.ts +5 -0
- package/dist/three/native-lighting.d.ts.map +1 -0
- package/dist/three/native-lighting.js +86 -0
- package/dist/three/native-lighting.js.map +1 -0
- package/dist/three/parallax.d.ts +5 -0
- package/dist/three/parallax.d.ts.map +1 -0
- package/dist/three/parallax.js +63 -0
- package/dist/three/parallax.js.map +1 -0
- package/dist/three/presentation.d.ts +31 -0
- package/dist/three/presentation.d.ts.map +1 -0
- package/dist/three/presentation.js +137 -0
- package/dist/three/presentation.js.map +1 -0
- package/dist/three/raw3d.d.ts +27 -0
- package/dist/three/raw3d.d.ts.map +1 -1
- package/dist/three/raw3d.js +536 -25
- package/dist/three/raw3d.js.map +1 -1
- package/dist/three/renderer.d.ts.map +1 -1
- package/dist/three/renderer.js +3 -0
- package/dist/three/renderer.js.map +1 -1
- package/dist/three/skinning.d.ts +11 -0
- package/dist/three/skinning.d.ts.map +1 -0
- package/dist/three/skinning.js +92 -0
- package/dist/three/skinning.js.map +1 -0
- package/dist/three/tsl.d.ts +60 -0
- package/dist/three/tsl.d.ts.map +1 -0
- package/dist/three/tsl.js +3 -0
- package/dist/three/tsl.js.map +1 -0
- package/dist/three/webgpu-native.d.ts +3 -0
- package/dist/three/webgpu-native.d.ts.map +1 -0
- package/dist/three/webgpu-native.js +58 -0
- package/dist/three/webgpu-native.js.map +1 -0
- package/dist/three/webgpu-relief.d.ts +3 -0
- package/dist/three/webgpu-relief.d.ts.map +1 -0
- package/dist/three/webgpu-relief.js +61 -0
- package/dist/three/webgpu-relief.js.map +1 -0
- package/dist/xml.d.ts +4 -1
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +14 -3
- package/dist/xml.js.map +1 -1
- package/package.json +6 -2
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,cAAc,EAEf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EAGf,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAoC,MAAM,UAAU,CAAC;AAOtE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAkB,EAAE,OAAO,GAAuB,EAAE;IACpF,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5G,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,CAAC;IACrG,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;IACpE,MAAM,YAAY,GAAG,CAAC,KAAe,EAA2B,EAAE;QAChE,IAAI,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5B,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpG,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,gBAAgB;QAChB,cAAc;QACd,gBAAgB;KACjB,CAAC,CAAC;IAEH,OAAO,IAAI,aAAa,CACtB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAChC,UAAU,CAAC,IAAI,EACf,QAAQ,EACR,KAAK,EACL,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAA4B;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,KAAK,GAAG,SAAS;WAClB,YAAY,CAAC,CAAC,CAAC;WACf,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,CAAC;IAE/E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,cAAc,CAAC,mFAAmF,CAAC,CAAC;IAChH,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,sBAAsB,CAAC,gBAAgB,KAAK,CAAC,IAAI,aAAa,EAAE,oBAAoB,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,OAA2B;IAC/D,OAAO,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;QACpD,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAA4B,EAC5B,OAA2B;IAE3B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,sBAAsB,CAC9B,mDAAmD,IAAI,CAAC,IAAI,IAAI,EAChE,kCAAkC,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACnF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7G,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QACzG,IAAI,UAAU,EAAE,CAAC;YACf,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,aAAa,CAAC,GAAG,CAAC,WAAW,YAAY,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QAChE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAChG,MAAM,eAAe,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/D,MAAM,WAAW,GAAG,YAAY,KAAK,SAAS;YAC5C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,YAAY,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAA2B;YACvC,UAAU,EAAE,cAAc;YAC1B,YAAY;YACZ,WAAW;YACX,QAAQ;YACR,OAAO;YACP,SAAS,EAAE,OAAO,IAAI,WAAW;gBAC/B,CAAC,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;gBACrE,CAAC,CAAC,SAAS;SACd,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAwC;IACpE,MAAM,MAAM,GAAG,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC;SAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;SACtD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5B,OAAO,uBAAuB,CAAC;IACjC,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAoB;IAChD,OAAO,YAAY,KAAK,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAoB,EACpB,eAAuB,EACvB,WAAmB;IAEnB,MAAM,SAAS,GAAG,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,SAAS,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrF,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqC,EAAE,IAAY;IAC3E,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,OAAqC,EAAE,IAAY;IACpE,OAAO,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,CACL,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAClC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAe;IACvC,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Raw3DProject } from "./raw3d.js";
|
|
2
|
+
import type { Demo3DXmlElement } from "./xml.js";
|
|
3
|
+
import { Raw3DEffects, type Raw3DEffectState } from "./raw3d-effects.js";
|
|
4
|
+
import { type Raw3DQuaternion } from "./rigid-interpolation.js";
|
|
5
|
+
/** Values verified against the Emulate3D 2026 Raw SDK enum. */
|
|
6
|
+
export declare enum Raw3DInterpolationMode {
|
|
7
|
+
Default = 0,
|
|
8
|
+
None = 1,
|
|
9
|
+
Linear = 2,
|
|
10
|
+
DualQuaternion = 3
|
|
11
|
+
}
|
|
12
|
+
export type Raw3DAnimationValue = number | boolean;
|
|
13
|
+
export interface Raw3DAnimationTrack {
|
|
14
|
+
readonly kind: string;
|
|
15
|
+
readonly nodeIndex: number;
|
|
16
|
+
readonly name?: string;
|
|
17
|
+
readonly materialIndex: number;
|
|
18
|
+
readonly times: readonly number[];
|
|
19
|
+
readonly values: readonly Raw3DAnimationValue[];
|
|
20
|
+
readonly xml: Demo3DXmlElement;
|
|
21
|
+
}
|
|
22
|
+
export interface Raw3DAnimationWarning {
|
|
23
|
+
readonly code: string;
|
|
24
|
+
readonly message: string;
|
|
25
|
+
readonly xml: Demo3DXmlElement;
|
|
26
|
+
}
|
|
27
|
+
export interface Raw3DNodeState {
|
|
28
|
+
location: [number, number, number];
|
|
29
|
+
rotation: [number, number, number];
|
|
30
|
+
quaternion: Raw3DQuaternion;
|
|
31
|
+
scale: [number, number, number];
|
|
32
|
+
visible: boolean;
|
|
33
|
+
deleted: boolean;
|
|
34
|
+
parentIndex?: number;
|
|
35
|
+
meshIndex?: number;
|
|
36
|
+
layerIndex?: number;
|
|
37
|
+
interpolationMode: Raw3DInterpolationMode;
|
|
38
|
+
interactionMode?: number;
|
|
39
|
+
highlight: number;
|
|
40
|
+
hasBeenOptimized: boolean;
|
|
41
|
+
userData?: string;
|
|
42
|
+
clientOwner?: string;
|
|
43
|
+
isBillboard: boolean;
|
|
44
|
+
isDecal: boolean;
|
|
45
|
+
readonly materialProperties: Record<number, Record<string, number>>;
|
|
46
|
+
}
|
|
47
|
+
/** Pure, seekable animation data. No renderer, clock, DOM or Three.js dependency. */
|
|
48
|
+
export declare class Raw3DAnimation {
|
|
49
|
+
readonly tracks: readonly Raw3DAnimationTrack[];
|
|
50
|
+
readonly warnings: readonly Raw3DAnimationWarning[];
|
|
51
|
+
readonly duration: number;
|
|
52
|
+
readonly effects: Raw3DEffects;
|
|
53
|
+
private readonly byNode;
|
|
54
|
+
private readonly rigidTimes;
|
|
55
|
+
private readonly nodes;
|
|
56
|
+
constructor(project: Raw3DProject);
|
|
57
|
+
sample(time: number): ReadonlyMap<number, Raw3DNodeState>;
|
|
58
|
+
sampleFrame(time: number): Raw3DEffectState & {
|
|
59
|
+
readonly nodes: ReadonlyMap<number, Raw3DNodeState>;
|
|
60
|
+
};
|
|
61
|
+
sampleNode(nodeIndex: number, time: number): Raw3DNodeState;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=raw3d-animation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-animation.d.ts","sourceRoot":"","sources":["../src/raw3d-animation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { Raw3DEffects, isRaw3DEffectChannel } from "./raw3d-effects.js";
|
|
2
|
+
import { interpolateRaw3DDualQuaternion, raw3DQuaternionFromRotation, raw3DRotationFromQuaternion } from "./rigid-interpolation.js";
|
|
3
|
+
/** Values verified against the Emulate3D 2026 Raw SDK enum. */
|
|
4
|
+
export var Raw3DInterpolationMode;
|
|
5
|
+
(function (Raw3DInterpolationMode) {
|
|
6
|
+
Raw3DInterpolationMode[Raw3DInterpolationMode["Default"] = 0] = "Default";
|
|
7
|
+
Raw3DInterpolationMode[Raw3DInterpolationMode["None"] = 1] = "None";
|
|
8
|
+
Raw3DInterpolationMode[Raw3DInterpolationMode["Linear"] = 2] = "Linear";
|
|
9
|
+
Raw3DInterpolationMode[Raw3DInterpolationMode["DualQuaternion"] = 3] = "DualQuaternion";
|
|
10
|
+
})(Raw3DInterpolationMode || (Raw3DInterpolationMode = {}));
|
|
11
|
+
const continuous = new Set(["X", "Y", "Z", "RX", "RY", "RZ", "SX", "SY", "SZ"]);
|
|
12
|
+
const discrete = new Set(["Visible", "Delete", "Parent", "Mesh", "Layer", "InterpolationMode", "InteractionMode", "Highlight", "HasBeenOptimized"]);
|
|
13
|
+
const materialProperties = new Set(["Diffuse", "U", "V", "ScaleU", "ScaleV", "Reflectivity", "Transparency", "Luminosity", "NormalScale", "PointSize", "Texture", "NormalMap", "NormalTexture", "NormalDepth", "StreamableTexture"]);
|
|
14
|
+
const discreteMaterialProperties = new Set(["Diffuse", "Texture", "NormalMap", "NormalTexture", "StreamableTexture"]);
|
|
15
|
+
const attribute = (xml, name) => xml.attributes.find(a => a.localName === name)?.value;
|
|
16
|
+
const tokens = (text) => text?.trim().split(/\s+/).filter(Boolean) ?? [];
|
|
17
|
+
const triple = (values, fallback) => [values[0] ?? fallback, values[1] ?? fallback, values[2] ?? fallback];
|
|
18
|
+
/** Pure, seekable animation data. No renderer, clock, DOM or Three.js dependency. */
|
|
19
|
+
export class Raw3DAnimation {
|
|
20
|
+
tracks;
|
|
21
|
+
warnings;
|
|
22
|
+
duration;
|
|
23
|
+
effects;
|
|
24
|
+
byNode = new Map();
|
|
25
|
+
rigidTimes = new Map();
|
|
26
|
+
nodes;
|
|
27
|
+
constructor(project) {
|
|
28
|
+
this.effects = new Raw3DEffects(project, project.animationOptions);
|
|
29
|
+
this.nodes = new Map(project.nodes.map(node => [node.index, node]));
|
|
30
|
+
const tracks = [], warnings = [];
|
|
31
|
+
let duration = 0;
|
|
32
|
+
for (const xml of project.root.child("Updates")?.children ?? []) {
|
|
33
|
+
const times = tokens(attribute(xml, "Time")).map(Number);
|
|
34
|
+
if (times.some((time, i) => !Number.isFinite(time) || time < 0 || (i > 0 && time < times[i - 1])))
|
|
35
|
+
throw new Error(`Invalid RAW3D ${xml.localName} key times.`);
|
|
36
|
+
duration = Math.max(duration, times.at(-1) ?? 0);
|
|
37
|
+
const kind = xml.localName, name = attribute(xml, "Name");
|
|
38
|
+
if (isRaw3DEffectChannel(kind))
|
|
39
|
+
continue;
|
|
40
|
+
if (!continuous.has(kind) && !discrete.has(kind) && !(kind === "Material" && materialProperties.has(name ?? ""))) {
|
|
41
|
+
warnings.push({ code: "RAW3D_ANIMATION_CHANNEL_UNSUPPORTED", message: `Unsupported RAW3D animation channel ${kind}${name ? `:${name}` : ""}.`, xml });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const nodeIndex = Number(attribute(xml, "Node") ?? NaN);
|
|
45
|
+
const materialIndex = Number(attribute(xml, "Index") ?? 0);
|
|
46
|
+
if (!Number.isInteger(nodeIndex) || !this.nodes.has(nodeIndex))
|
|
47
|
+
throw new Error(`Invalid RAW3D ${kind} node index ${nodeIndex}.`);
|
|
48
|
+
if (!Number.isInteger(materialIndex) || materialIndex < 0)
|
|
49
|
+
throw new Error("Invalid RAW3D material slot.");
|
|
50
|
+
const boolean = kind === "Visible" || kind === "Delete" || kind === "HasBeenOptimized";
|
|
51
|
+
const values = tokens(attribute(xml, "Value")).map(value => {
|
|
52
|
+
if (boolean) {
|
|
53
|
+
if (!/^(true|false|0|1)$/i.test(value))
|
|
54
|
+
throw new Error(`Invalid RAW3D ${kind} boolean.`);
|
|
55
|
+
return /^(true|1)$/i.test(value);
|
|
56
|
+
}
|
|
57
|
+
if (name === "Diffuse") {
|
|
58
|
+
if (!/^(?:0x)?[a-f\d]{1,8}$/i.test(value))
|
|
59
|
+
throw new Error("Invalid RAW3D diffuse ARGB value.");
|
|
60
|
+
return Number.parseInt(value.replace(/^0x/i, ""), 16);
|
|
61
|
+
}
|
|
62
|
+
return Number(value);
|
|
63
|
+
});
|
|
64
|
+
if (!times.length || times.length !== values.length || values.some(value => typeof value === "number" && !Number.isFinite(value)))
|
|
65
|
+
throw new Error(`Invalid RAW3D ${kind} key values.`);
|
|
66
|
+
if (kind === "InterpolationMode" && values.some(value => !Number.isInteger(value) || Number(value) < 0 || Number(value) > 3))
|
|
67
|
+
throw new Error("Unsupported RAW3D interpolation mode.");
|
|
68
|
+
if (kind === "Material" && ["Texture", "NormalMap", "NormalTexture", "StreamableTexture"].includes(name ?? "") && values.some(value => !Number.isInteger(value)))
|
|
69
|
+
throw new Error("Invalid RAW3D texture reference.");
|
|
70
|
+
if (["Parent", "Mesh", "Layer", "InteractionMode", "Highlight"].includes(kind) && values.some(value => !Number.isInteger(value)))
|
|
71
|
+
throw new Error(`Invalid RAW3D ${kind} integer value.`);
|
|
72
|
+
const track = { kind, name, nodeIndex, materialIndex, times, values, xml };
|
|
73
|
+
tracks.push(track);
|
|
74
|
+
const group = this.byNode.get(nodeIndex) ?? [];
|
|
75
|
+
group.push(track);
|
|
76
|
+
this.byNode.set(nodeIndex, group);
|
|
77
|
+
}
|
|
78
|
+
for (const [node, group] of this.byNode) {
|
|
79
|
+
this.rigidTimes.set(node, [...new Set(group.filter(track => ["X", "Y", "Z", "RX", "RY", "RZ"].includes(track.kind)).flatMap(track => [...track.times]))].sort((a, b) => a - b));
|
|
80
|
+
}
|
|
81
|
+
this.tracks = tracks;
|
|
82
|
+
this.warnings = [...warnings, ...this.effects.warnings];
|
|
83
|
+
this.duration = duration;
|
|
84
|
+
}
|
|
85
|
+
sample(time) {
|
|
86
|
+
if (!Number.isFinite(time))
|
|
87
|
+
throw new RangeError("Animation time must be finite.");
|
|
88
|
+
return new Map([...this.nodes.keys()].map(index => [index, this.sampleNode(index, Math.max(0, time))]));
|
|
89
|
+
}
|
|
90
|
+
sampleFrame(time) {
|
|
91
|
+
return { nodes: this.sample(time), ...this.effects.sample(time) };
|
|
92
|
+
}
|
|
93
|
+
sampleNode(nodeIndex, time) {
|
|
94
|
+
if (!Number.isFinite(time))
|
|
95
|
+
throw new RangeError("Animation time must be finite.");
|
|
96
|
+
const node = this.nodes.get(nodeIndex);
|
|
97
|
+
if (!node)
|
|
98
|
+
throw new RangeError(`RAW3D node ${nodeIndex} is missing.`);
|
|
99
|
+
time = Math.max(0, time);
|
|
100
|
+
const tracks = this.byNode.get(nodeIndex) ?? [];
|
|
101
|
+
const state = {
|
|
102
|
+
location: triple(node.location, 0), rotation: triple(node.rotation, 0), scale: triple(node.scale, 1),
|
|
103
|
+
quaternion: raw3DQuaternionFromRotation(node.rotation), visible: node.visible, deleted: false,
|
|
104
|
+
parentIndex: node.parentIndex, meshIndex: node.meshIndex, layerIndex: node.layerIndex,
|
|
105
|
+
interpolationMode: node.interpolationMode, interactionMode: node.interactionMode,
|
|
106
|
+
highlight: node.highlight, hasBeenOptimized: node.hasBeenOptimized, materialProperties: {},
|
|
107
|
+
userData: node.userData, clientOwner: node.clientOwner, isBillboard: node.isBillboard, isDecal: node.isDecal
|
|
108
|
+
};
|
|
109
|
+
Object.assign(state, this.effects.sampleNode(nodeIndex, time));
|
|
110
|
+
for (const track of tracks.filter(track => track.kind === "InterpolationMode")) {
|
|
111
|
+
state.interpolationMode = (sampleTrack(track, time, false) ?? state.interpolationMode);
|
|
112
|
+
}
|
|
113
|
+
for (const track of tracks) {
|
|
114
|
+
const value = sampleTrack(track, time, state.interpolationMode !== Raw3DInterpolationMode.None);
|
|
115
|
+
if (value === undefined)
|
|
116
|
+
continue;
|
|
117
|
+
const numeric = Number(value), axis = "XYZ".indexOf(track.kind.at(-1));
|
|
118
|
+
if (track.kind.length === 1 && axis >= 0)
|
|
119
|
+
state.location[axis] = numeric;
|
|
120
|
+
else if (track.kind.startsWith("R") && axis >= 0)
|
|
121
|
+
state.rotation[axis] = numeric;
|
|
122
|
+
else if (track.kind.startsWith("S") && axis >= 0)
|
|
123
|
+
state.scale[axis] = numeric;
|
|
124
|
+
else
|
|
125
|
+
switch (track.kind) {
|
|
126
|
+
case "Visible":
|
|
127
|
+
state.visible = Boolean(value);
|
|
128
|
+
break;
|
|
129
|
+
case "Delete":
|
|
130
|
+
state.deleted = Boolean(value);
|
|
131
|
+
break;
|
|
132
|
+
case "Parent":
|
|
133
|
+
state.parentIndex = numeric < 0 ? undefined : numeric;
|
|
134
|
+
break;
|
|
135
|
+
case "Mesh":
|
|
136
|
+
state.meshIndex = numeric < 0 ? undefined : numeric;
|
|
137
|
+
break;
|
|
138
|
+
case "Layer":
|
|
139
|
+
state.layerIndex = numeric < 0 ? undefined : numeric;
|
|
140
|
+
break;
|
|
141
|
+
case "InteractionMode":
|
|
142
|
+
state.interactionMode = numeric;
|
|
143
|
+
break;
|
|
144
|
+
case "Highlight":
|
|
145
|
+
state.highlight = numeric;
|
|
146
|
+
break;
|
|
147
|
+
case "HasBeenOptimized":
|
|
148
|
+
state.hasBeenOptimized = Boolean(value);
|
|
149
|
+
break;
|
|
150
|
+
case "Material":
|
|
151
|
+
(state.materialProperties[track.materialIndex] ??= {})[track.name] = numeric;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
state.quaternion = raw3DQuaternionFromRotation(state.rotation);
|
|
156
|
+
if (state.interpolationMode === Raw3DInterpolationMode.DualQuaternion) {
|
|
157
|
+
const rigidTracks = tracks.filter(track => ["X", "Y", "Z", "RX", "RY", "RZ"].includes(track.kind));
|
|
158
|
+
const times = this.rigidTimes.get(nodeIndex) ?? [];
|
|
159
|
+
const rightIndex = times.findIndex(value => value > time);
|
|
160
|
+
const left = times[rightIndex < 0 ? times.length - 1 : rightIndex - 1], right = times[rightIndex];
|
|
161
|
+
if (left !== undefined && right !== undefined) {
|
|
162
|
+
const pose = (at) => {
|
|
163
|
+
const position = triple(node.location, 0), rotation = triple(node.rotation, 0);
|
|
164
|
+
for (const track of rigidTracks) {
|
|
165
|
+
const value = sampleTrack(track, at, true);
|
|
166
|
+
if (value !== undefined)
|
|
167
|
+
(track.kind.startsWith("R") ? rotation : position)["XYZ".indexOf(track.kind.at(-1))] = Number(value);
|
|
168
|
+
}
|
|
169
|
+
return { position, quaternion: raw3DQuaternionFromRotation(rotation) };
|
|
170
|
+
};
|
|
171
|
+
const result = interpolateRaw3DDualQuaternion(pose(left), pose(right), (time - left) / (right - left));
|
|
172
|
+
state.location = [...result.position];
|
|
173
|
+
state.quaternion = result.quaternion;
|
|
174
|
+
state.rotation = [...raw3DRotationFromQuaternion(result.quaternion)];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return state;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function sampleTrack(track, time, interpolate) {
|
|
181
|
+
if (time < track.times[0])
|
|
182
|
+
return undefined;
|
|
183
|
+
let low = 0, high = track.times.length;
|
|
184
|
+
while (low < high) {
|
|
185
|
+
const middle = (low + high) >>> 1;
|
|
186
|
+
if (track.times[middle] <= time)
|
|
187
|
+
low = middle + 1;
|
|
188
|
+
else
|
|
189
|
+
high = middle;
|
|
190
|
+
}
|
|
191
|
+
const index = low - 1, value = track.values[index];
|
|
192
|
+
const linear = continuous.has(track.kind) || (track.kind === "Material" && !discreteMaterialProperties.has(track.name));
|
|
193
|
+
if (!interpolate || !linear || index === track.times.length - 1)
|
|
194
|
+
return value;
|
|
195
|
+
let delta = Number(track.values[index + 1]) - Number(value);
|
|
196
|
+
if (track.kind.startsWith("R"))
|
|
197
|
+
delta = Math.atan2(Math.sin(delta), Math.cos(delta));
|
|
198
|
+
return Number(value) + delta * (time - track.times[index]) / (track.times[index + 1] - track.times[index]);
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=raw3d-animation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-animation.js","sourceRoot":"","sources":["../src/raw3d-animation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Raw3DProject } from "./raw3d.js";
|
|
2
|
+
import type { Demo3DXmlElement } from "./xml.js";
|
|
3
|
+
import type { Raw3DAnimationWarning } from "./raw3d-animation.js";
|
|
4
|
+
export interface Raw3DLightState {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
type: number;
|
|
7
|
+
attenuationRange: number;
|
|
8
|
+
attenuationConstant: number;
|
|
9
|
+
attenuationLinear: number;
|
|
10
|
+
attenuationQuadratic: number;
|
|
11
|
+
spotlightFalloff: number;
|
|
12
|
+
spotlightInnerAngle: number;
|
|
13
|
+
spotlightOuterAngle: number;
|
|
14
|
+
castsShadows: boolean;
|
|
15
|
+
materialProperties: Record<string, number>;
|
|
16
|
+
}
|
|
17
|
+
export interface Raw3DUIState {
|
|
18
|
+
name: string;
|
|
19
|
+
id?: string;
|
|
20
|
+
visible: boolean;
|
|
21
|
+
checked: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface Raw3DSceneState {
|
|
24
|
+
showDefaultFloor: boolean;
|
|
25
|
+
allowTeleportOnDefaultFloor: boolean;
|
|
26
|
+
useDefaultLighting: boolean;
|
|
27
|
+
ambientLightColor: [number, number, number];
|
|
28
|
+
}
|
|
29
|
+
export interface Raw3DEffectState {
|
|
30
|
+
readonly lights: ReadonlyMap<number, Raw3DLightState>;
|
|
31
|
+
readonly buttons: ReadonlyMap<number, Raw3DUIState>;
|
|
32
|
+
readonly scene: Raw3DSceneState;
|
|
33
|
+
}
|
|
34
|
+
export interface Raw3DEffectTrack {
|
|
35
|
+
readonly kind: string;
|
|
36
|
+
readonly target: "node" | "light" | "scene" | "ui";
|
|
37
|
+
readonly index: number;
|
|
38
|
+
readonly property: string;
|
|
39
|
+
readonly times: readonly number[];
|
|
40
|
+
readonly values: readonly (number | boolean | string)[];
|
|
41
|
+
readonly xml: Demo3DXmlElement;
|
|
42
|
+
}
|
|
43
|
+
export interface Raw3DStringKeyRequest {
|
|
44
|
+
readonly xml: Demo3DXmlElement;
|
|
45
|
+
readonly nodeIndex: number;
|
|
46
|
+
readonly property: string;
|
|
47
|
+
readonly times: readonly number[];
|
|
48
|
+
readonly encoded: string;
|
|
49
|
+
}
|
|
50
|
+
export interface Raw3DAnimationOptions {
|
|
51
|
+
/** Supply authoritative keys, for example from a sidecar, without guessing native string boundaries. */
|
|
52
|
+
readonly resolveStringKeys?: (request: Raw3DStringKeyRequest) => readonly string[] | undefined;
|
|
53
|
+
}
|
|
54
|
+
export declare const isRaw3DEffectChannel: (kind: string) => boolean;
|
|
55
|
+
/** Native non-transform updates, independent of presentation and interaction. */
|
|
56
|
+
export declare class Raw3DEffects {
|
|
57
|
+
private readonly project;
|
|
58
|
+
readonly tracks: readonly Raw3DEffectTrack[];
|
|
59
|
+
readonly warnings: readonly Raw3DAnimationWarning[];
|
|
60
|
+
constructor(project: Raw3DProject, options?: Raw3DAnimationOptions);
|
|
61
|
+
sampleNode(index: number, time: number): Record<string, number | boolean | string>;
|
|
62
|
+
sample(time: number): Raw3DEffectState;
|
|
63
|
+
}
|
|
64
|
+
/** Native distance/cone attenuation, usable by renderers other than Three.js. */
|
|
65
|
+
export declare function evaluateRaw3DLightAttenuation(light: Raw3DLightState, distance: number, cosine?: number): number;
|
|
66
|
+
//# sourceMappingURL=raw3d-effects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-effects.d.ts","sourceRoot":"","sources":["../src/raw3d-effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
const mappings = {
|
|
2
|
+
UserData: ["node", "userData", "string"], ClientOwner: ["node", "clientOwner", "string"],
|
|
3
|
+
IsBillboard: ["node", "isBillboard", "boolean"], IsDecal: ["node", "isDecal", "boolean"],
|
|
4
|
+
H: ["node", "highlight", "integer"], Optimized: ["node", "hasBeenOptimized", "boolean"],
|
|
5
|
+
LightType: ["light", "type", "integer"], LightEnabled: ["light", "enabled", "boolean"],
|
|
6
|
+
LightAR: ["light", "attenuationRange", "number"], LightAC: ["light", "attenuationConstant", "number"],
|
|
7
|
+
LightAL: ["light", "attenuationLinear", "number"], LightAQ: ["light", "attenuationQuadratic", "number"],
|
|
8
|
+
LightSF: ["light", "spotlightFalloff", "number"], LightSIA: ["light", "spotlightInnerAngle", "number"],
|
|
9
|
+
LightSOA: ["light", "spotlightOuterAngle", "number"], LightCS: ["light", "castsShadows", "boolean"],
|
|
10
|
+
LightMaterial: ["light", "material:Diffuse", "hex"],
|
|
11
|
+
SceneShowDefaultFloor: ["scene", "showDefaultFloor", "boolean"],
|
|
12
|
+
SceneAllowTeleportOnDefaultFloor: ["scene", "allowTeleportOnDefaultFloor", "boolean"],
|
|
13
|
+
SceneUseDefaultLighting: ["scene", "useDefaultLighting", "boolean"],
|
|
14
|
+
ALR: ["scene", "ambient:0", "number"], ALG: ["scene", "ambient:1", "number"], ALB: ["scene", "ambient:2", "number"],
|
|
15
|
+
UIVisible: ["ui", "visible", "boolean"], UIChecked: ["ui", "checked", "boolean"],
|
|
16
|
+
UpdateUIVisible: ["ui", "visible", "boolean"], UpdateUIChecked: ["ui", "checked", "boolean"]
|
|
17
|
+
};
|
|
18
|
+
export const isRaw3DEffectChannel = (kind) => kind in mappings;
|
|
19
|
+
const attribute = (xml, name) => xml.attributes.find(a => a.localName === name)?.value;
|
|
20
|
+
const tokens = (value) => value.trim().split(/\s+/).filter(Boolean);
|
|
21
|
+
/** Native non-transform updates, independent of presentation and interaction. */
|
|
22
|
+
export class Raw3DEffects {
|
|
23
|
+
project;
|
|
24
|
+
tracks;
|
|
25
|
+
warnings;
|
|
26
|
+
constructor(project, options = {}) {
|
|
27
|
+
this.project = project;
|
|
28
|
+
const tracks = [], warnings = [];
|
|
29
|
+
const targets = {
|
|
30
|
+
node: new Set(project.nodes.map(node => node.index)),
|
|
31
|
+
light: new Set(project.lights.map((light, index) => light.index ?? index)),
|
|
32
|
+
ui: new Set(project.buttons.map(button => button.index)), scene: new Set([0])
|
|
33
|
+
};
|
|
34
|
+
for (const xml of project.root.child("Updates")?.children ?? []) {
|
|
35
|
+
const mapping = mappings[xml.localName];
|
|
36
|
+
if (!mapping)
|
|
37
|
+
continue;
|
|
38
|
+
const [target, initialProperty, format] = mapping;
|
|
39
|
+
const index = target === "scene" ? 0 : Number(attribute(xml, { node: "Node", light: "Light", ui: "UIButton" }[target]) ?? NaN);
|
|
40
|
+
if (!Number.isInteger(index) || !targets[target].has(index))
|
|
41
|
+
throw new Error(`Invalid RAW3D ${xml.localName} target ${index}.`);
|
|
42
|
+
const times = tokens(attribute(xml, "Time") ?? "").map(Number);
|
|
43
|
+
if (!times.length || times.some((time, i) => !Number.isFinite(time) || time < 0 || (i > 0 && time < times[i - 1])))
|
|
44
|
+
throw new Error(`Invalid RAW3D ${xml.localName} times.`);
|
|
45
|
+
const encoded = attribute(xml, "Value") ?? "";
|
|
46
|
+
let raw = format === "string" && times.length === 1 ? [encoded] : tokens(encoded);
|
|
47
|
+
if (format === "string") {
|
|
48
|
+
const explicit = xml.child("Values")?.childrenNamed("Value").map(value => value.text);
|
|
49
|
+
let resolved = explicit ?? options.resolveStringKeys?.({ xml, nodeIndex: index, property: initialProperty, times, encoded });
|
|
50
|
+
if (attribute(xml, "ValueEncoding") === "json" && !explicit && !resolved)
|
|
51
|
+
resolved = JSON.parse(encoded);
|
|
52
|
+
if (resolved !== undefined) {
|
|
53
|
+
if (!Array.isArray(resolved) || resolved.length !== times.length || !resolved.every(value => typeof value === "string"))
|
|
54
|
+
throw new Error(`Invalid resolved RAW3D ${xml.localName} string keys.`);
|
|
55
|
+
raw = resolved;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (format === "string" && raw.length !== times.length) {
|
|
59
|
+
warnings.push({ code: "RAW3D_STRING_KEYS_AMBIGUOUS", message: `RAW3D ${xml.localName} string boundaries cannot be recovered from the native space-separated Value attribute.`, xml });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const values = raw.map(value => {
|
|
63
|
+
if (format === "string")
|
|
64
|
+
return value;
|
|
65
|
+
if (format === "boolean") {
|
|
66
|
+
if (!/^(true|false|0|1)$/i.test(value))
|
|
67
|
+
throw new Error(`Invalid RAW3D ${xml.localName} boolean.`);
|
|
68
|
+
return /^(true|1)$/i.test(value);
|
|
69
|
+
}
|
|
70
|
+
if (format === "hex" && !/^(?:0x)?[a-f\d]{1,8}$/i.test(value))
|
|
71
|
+
throw new Error(`Invalid RAW3D ${xml.localName} ARGB value.`);
|
|
72
|
+
const number = format === "hex" ? Number.parseInt(value.replace(/^0x/i, ""), 16) : Number(value);
|
|
73
|
+
if (!Number.isFinite(number) || (format === "integer" && !Number.isInteger(number)))
|
|
74
|
+
throw new Error(`Invalid RAW3D ${xml.localName} value.`);
|
|
75
|
+
return number;
|
|
76
|
+
});
|
|
77
|
+
if (values.length !== times.length)
|
|
78
|
+
throw new Error(`Invalid RAW3D ${xml.localName} value count.`);
|
|
79
|
+
tracks.push({ kind: xml.localName, target, index, property: initialProperty, times, values, xml });
|
|
80
|
+
}
|
|
81
|
+
this.tracks = tracks;
|
|
82
|
+
this.warnings = warnings;
|
|
83
|
+
}
|
|
84
|
+
sampleNode(index, time) {
|
|
85
|
+
const state = {};
|
|
86
|
+
for (const track of this.tracks)
|
|
87
|
+
if (track.target === "node" && track.index === index) {
|
|
88
|
+
const value = sample(track, time);
|
|
89
|
+
if (value !== undefined)
|
|
90
|
+
state[track.property] = value;
|
|
91
|
+
}
|
|
92
|
+
return state;
|
|
93
|
+
}
|
|
94
|
+
sample(time) {
|
|
95
|
+
if (!Number.isFinite(time))
|
|
96
|
+
throw new RangeError("Animation time must be finite.");
|
|
97
|
+
time = Math.max(0, time);
|
|
98
|
+
const lights = new Map(this.project.lights.map((light, index) => [light.index ?? index, {
|
|
99
|
+
enabled: light.enabled, type: { ambient: 0, point: 1, spot: 2, directional: 3 }[light.type.toLowerCase()] ?? Number(light.type),
|
|
100
|
+
attenuationRange: light.attenuationRange, attenuationConstant: light.attenuationConstant,
|
|
101
|
+
attenuationLinear: light.attenuationLinear, attenuationQuadratic: light.attenuationQuadratic,
|
|
102
|
+
spotlightFalloff: light.spotlightFalloff, spotlightInnerAngle: light.spotlightInnerAngle, spotlightOuterAngle: light.spotlightOuterAngle,
|
|
103
|
+
castsShadows: light.castsShadows, materialProperties: {}
|
|
104
|
+
}]));
|
|
105
|
+
const buttons = new Map(this.project.buttons.map(button => [button.index, { name: button.name, id: button.id, visible: button.visible, checked: button.checked }]));
|
|
106
|
+
const properties = this.project.sceneProperties;
|
|
107
|
+
const scene = {
|
|
108
|
+
showDefaultFloor: properties?.showDefaultFloor ?? true,
|
|
109
|
+
allowTeleportOnDefaultFloor: properties?.allowTeleportOnDefaultFloor ?? true,
|
|
110
|
+
useDefaultLighting: properties?.useDefaultLighting ?? true,
|
|
111
|
+
ambientLightColor: [0, 1, 2].map(i => properties?.ambientLightColor[i] ?? 0)
|
|
112
|
+
};
|
|
113
|
+
for (const track of this.tracks) {
|
|
114
|
+
if (track.target === "node")
|
|
115
|
+
continue;
|
|
116
|
+
const value = sample(track, time);
|
|
117
|
+
if (value === undefined)
|
|
118
|
+
continue;
|
|
119
|
+
if (track.target === "light") {
|
|
120
|
+
const state = lights.get(track.index);
|
|
121
|
+
if (track.property.startsWith("material:"))
|
|
122
|
+
state.materialProperties[track.property.slice(9)] = Number(value);
|
|
123
|
+
else
|
|
124
|
+
Object.assign(state, { [track.property]: value });
|
|
125
|
+
}
|
|
126
|
+
else if (track.target === "ui")
|
|
127
|
+
Object.assign(buttons.get(track.index), { [track.property]: value });
|
|
128
|
+
else if (track.property.startsWith("ambient:"))
|
|
129
|
+
scene.ambientLightColor[Number(track.property.slice(8))] = Number(value);
|
|
130
|
+
else
|
|
131
|
+
Object.assign(scene, { [track.property]: value });
|
|
132
|
+
}
|
|
133
|
+
return { lights, buttons, scene };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Native distance/cone attenuation, usable by renderers other than Three.js. */
|
|
137
|
+
export function evaluateRaw3DLightAttenuation(light, distance, cosine = 1) {
|
|
138
|
+
if (!Number.isFinite(distance) || distance < 0 || !Number.isFinite(cosine))
|
|
139
|
+
throw new RangeError("Light distance and cone cosine must be finite.");
|
|
140
|
+
if (light.type === 3 || light.type === 0)
|
|
141
|
+
return 1;
|
|
142
|
+
if (light.attenuationRange > 0 && distance > light.attenuationRange)
|
|
143
|
+
return 0;
|
|
144
|
+
let attenuation = 1 / Math.max(.000001, light.attenuationConstant + distance * light.attenuationLinear + distance * distance * light.attenuationQuadratic);
|
|
145
|
+
if (light.type === 2) {
|
|
146
|
+
const inner = Math.cos(light.spotlightInnerAngle / 2), outer = Math.cos(light.spotlightOuterAngle / 2);
|
|
147
|
+
if (cosine < outer)
|
|
148
|
+
return 0;
|
|
149
|
+
const factor = inner - outer > .000001 ? Math.max(0, Math.min(1, (cosine - outer) / (inner - outer))) : cosine >= outer ? 1 : 0;
|
|
150
|
+
attenuation *= Math.pow(factor, Math.max(.000001, light.spotlightFalloff));
|
|
151
|
+
}
|
|
152
|
+
return attenuation;
|
|
153
|
+
}
|
|
154
|
+
function sample(track, time) {
|
|
155
|
+
if (time < track.times[0])
|
|
156
|
+
return undefined;
|
|
157
|
+
let low = 0, high = track.times.length;
|
|
158
|
+
while (low < high) {
|
|
159
|
+
const middle = (low + high) >>> 1;
|
|
160
|
+
if (track.times[middle] <= time)
|
|
161
|
+
low = middle + 1;
|
|
162
|
+
else
|
|
163
|
+
high = middle;
|
|
164
|
+
}
|
|
165
|
+
const i = low - 1, current = track.values[i];
|
|
166
|
+
const next = track.values[i + 1];
|
|
167
|
+
if (typeof current === "number" && typeof next === "number" && (track.property.startsWith("attenuation") || track.property.startsWith("spotlight") || track.property.startsWith("ambient:"))) {
|
|
168
|
+
return current + (next - current) * (time - track.times[i]) / (track.times[i + 1] - track.times[i]);
|
|
169
|
+
}
|
|
170
|
+
return current;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=raw3d-effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-effects.js","sourceRoot":"","sources":["../src/raw3d-effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Raw3DMesh, Raw3DProject } from "./raw3d.js";
|
|
2
|
+
export interface Raw3DSkinInfluence {
|
|
3
|
+
readonly boneIndex: number;
|
|
4
|
+
readonly weight: number;
|
|
5
|
+
}
|
|
6
|
+
/** Decode the native per-bone vertex-index and float-weight buffers without a renderer. */
|
|
7
|
+
export declare function decodeRaw3DSkinInfluences(mesh: Raw3DMesh, project: Raw3DProject): readonly (readonly Raw3DSkinInfluence[])[];
|
|
8
|
+
//# sourceMappingURL=raw3d-skinning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw3d-skinning.d.ts","sourceRoot":"","sources":["../src/raw3d-skinning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAE3F,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC,SAAS,kBAAkB,EAAE,CAAC,EAAE,CA2B5H"}
|