babylonjs-loaders 9.16.2 → 9.17.1

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.
@@ -8284,9 +8284,9 @@ export function ParseSpz(data: ArrayBuffer, scene: Scene, _loadingOptions: SPLAT
8284
8284
  * @param url URL to the spz WASM ES module (its default export should be a factory function)
8285
8285
  * @returns A promise resolving to the initialized spz WASM module
8286
8286
  */
8287
- export function GetSpzModule(url: string): Promise<SpzModule>;
8287
+ export function GetSpzModule(url: string): Promise<any>;
8288
8288
  /**
8289
- * Converts a GaussianCloud object (from the spz WASM module) into the packed 32-byte-per-splat
8289
+ * Converts a any object (from the spz WASM module) into the packed 32-byte-per-splat
8290
8290
  * ArrayBuffer and SH texture arrays expected by GaussianSplattingMeshBase.updateData.
8291
8291
  *
8292
8292
  * Packed layout per splat (32 bytes):
@@ -8298,15 +8298,15 @@ export function GetSpzModule(url: string): Promise<SpzModule>;
8298
8298
  * SH coefficients from the cloud (Float32, range ~[-1,1]) are encoded to bytes
8299
8299
  * using the SPZ convention (load-spz.cc unquantizeSH): byte = coeff * 128 + 128.
8300
8300
  *
8301
- * @param cloud The GaussianCloud returned by spz.loadSpzFromBuffer
8301
+ * @param cloud The any returned by spz.loadSpzFromBuffer
8302
8302
  * @param scene The Babylon.js scene (used to query maxTextureSize for SH textures)
8303
8303
  * @param useCoroutine If true, yields periodically to avoid blocking the main thread
8304
8304
  * @returns A coroutine returning an IParsedSplat ready to be passed to updateData
8305
8305
  */
8306
- export function ConvertSpzToSplat(cloud: GaussianCloud, scene: Scene, useCoroutine?: boolean): Coroutine<IParsedSplat>;
8306
+ export function ConvertSpzToSplat(cloud: any, scene: Scene, useCoroutine?: boolean): Coroutine<IParsedSplat>;
8307
8307
  /**
8308
8308
  * Async version of ConvertSpzToSplat that yields periodically to avoid blocking the main thread.
8309
- * @param cloud The GaussianCloud returned by spz.loadSpzFromBuffer
8309
+ * @param cloud The any returned by spz.loadSpzFromBuffer
8310
8310
  * @param scene The Babylon.js scene
8311
8311
  * @returns A promise resolving to an IParsedSplat
8312
8312
  */
@@ -8455,8 +8455,19 @@ export class SPLATFileLoader implements ISceneLoaderPluginAsync, ISceneLoaderPlu
8455
8455
  private _unzipWithFFlateAsync;
8456
8456
  private _parseAsync;
8457
8457
  /**
8458
- * Applies camera limits based on parsed meta data
8458
+ * Extracts the safe-orbit camera limits from parsed splat metadata, or null when the file
8459
+ * carries none. Exposed on the loaded mesh (GaussianSplattingMeshBase.safeOrbitCameraLimits)
8460
+ * so consumers can apply/track them regardless of the active camera type.
8459
8461
  * @param meta parsed splat meta data
8462
+ * @returns the parsed safe-orbit limits, or null
8463
+ */
8464
+ private static _ExtractSafeOrbitLimits;
8465
+ /**
8466
+ * Applies safe-orbit camera limits parsed from the file metadata to the scene's active
8467
+ * ArcRotateCamera. No-op when no limits are present, `disableAutoCameraLimits` is set, or the
8468
+ * active camera is not an ArcRotateCamera — in which case consumers can still read the limits
8469
+ * from the loaded mesh's `safeOrbitCameraLimits` and apply them themselves.
8470
+ * @param limits parsed safe-orbit limits (see _ExtractSafeOrbitLimits)
8460
8471
  * @param scene
8461
8472
  */
8462
8473
  private applyAutoCameraLimits;
@@ -8812,7 +8823,11 @@ export class GaussianSplattingWorkBuffer {
8812
8823
  */
8813
8824
  constructor(scene: Scene, capacity: number);
8814
8825
  /**
8815
- * Creates a 4-attachment MRT (centers F32 / covA F32 / covB F32 / colors U8) sized to the work buffer.
8826
+ * Creates a 4-attachment MRT (centers F32 / covA / covB / colors U8) sized to the work buffer. covA/covB
8827
+ * use HALF_FLOAT when the engine can render to it, matching the precision the non-streamed
8828
+ * GaussianSplattingMesh path already uses for these same two textures (see
8829
+ * `gaussianSplattingMeshBase.pure.ts`'s `createTextureFromDataF16` covA/covB textures); centers stays F32
8830
+ * and colors stays U8 in both paths.
8816
8831
  * @param name MRT and attachment base name
8817
8832
  * @param disableClear when true, clearing is suppressed so renders accumulate (the decode buffer); when
8818
8833
  * false the MRT clears to zero on each render (the temporary relayout buffer, so gaps stay zeroed)
@@ -9349,7 +9364,14 @@ export class GaussianSplattingStream extends GaussianSplattingMesh {
9349
9364
  * cheap per-node frustum test every frame so the off-screen LOD bias tracks camera rotation. The LOD
9350
9365
  * re-evaluation is throttled to at most every {@link _lodUpdateInterval} frames once the camera has
9351
9366
  * translated far enough, but also runs immediately whenever a node enters/leaves the frustum (so its
9352
- * detail upgrades/downgrades promptly) or a cap change forces it. Active ranges rebuild on any LOD change.
9367
+ * detail upgrades/downgrades promptly), a node whose cooldown just expired still needs to switch LOD,
9368
+ * or a cap change forces it. Active ranges rebuild on any LOD change.
9369
+ *
9370
+ * The cooldown-expiry trigger lets a node reach its already-computed target level as soon as its
9371
+ * cooldown clears, rather than waiting for the camera to move. This matters right from load: a
9372
+ * node's base-layer decode is itself applied as a switch (from no active level to the base one), so
9373
+ * it starts the same cooldown a later switch would — this trigger is what lets the node progress past
9374
+ * that base level promptly once it expires, even at a fixed camera pose.
9353
9375
  */
9354
9376
  private _onLodFrame;
9355
9377
  /**
@@ -10355,6 +10377,7 @@ export class FBXFileLoader implements ISceneLoaderPluginAsync, ISceneLoaderPlugi
10355
10377
  private _setAssetContainer;
10356
10378
  private static _computeFBXAxisConversionMatrix;
10357
10379
  private _buildModel;
10380
+ private _linkSkeletonsToTransformNodes;
10358
10381
  private static _modelSubtreeMatchesNameFilter;
10359
10382
  private static _applyModelMetadata;
10360
10383
  private _createMesh;
@@ -19806,9 +19829,9 @@ declare namespace BABYLON {
19806
19829
  * @param url URL to the spz WASM ES module (its default export should be a factory function)
19807
19830
  * @returns A promise resolving to the initialized spz WASM module
19808
19831
  */
19809
- export function GetSpzModule(url: string): Promise<SpzModule>;
19832
+ export function GetSpzModule(url: string): Promise<any>;
19810
19833
  /**
19811
- * Converts a GaussianCloud object (from the spz WASM module) into the packed 32-byte-per-splat
19834
+ * Converts a any object (from the spz WASM module) into the packed 32-byte-per-splat
19812
19835
  * ArrayBuffer and SH texture arrays expected by GaussianSplattingMeshBase.updateData.
19813
19836
  *
19814
19837
  * Packed layout per splat (32 bytes):
@@ -19820,15 +19843,15 @@ declare namespace BABYLON {
19820
19843
  * SH coefficients from the cloud (Float32, range ~[-1,1]) are encoded to bytes
19821
19844
  * using the SPZ convention (load-spz.cc unquantizeSH): byte = coeff * 128 + 128.
19822
19845
  *
19823
- * @param cloud The GaussianCloud returned by spz.loadSpzFromBuffer
19846
+ * @param cloud The any returned by spz.loadSpzFromBuffer
19824
19847
  * @param scene The Babylon.js scene (used to query maxTextureSize for SH textures)
19825
19848
  * @param useCoroutine If true, yields periodically to avoid blocking the main thread
19826
19849
  * @returns A coroutine returning an IParsedSplat ready to be passed to updateData
19827
19850
  */
19828
- export function ConvertSpzToSplat(cloud: GaussianCloud, scene: Scene, useCoroutine?: boolean): Coroutine<IParsedSplat>;
19851
+ export function ConvertSpzToSplat(cloud: any, scene: Scene, useCoroutine?: boolean): Coroutine<IParsedSplat>;
19829
19852
  /**
19830
19853
  * Async version of ConvertSpzToSplat that yields periodically to avoid blocking the main thread.
19831
- * @param cloud The GaussianCloud returned by spz.loadSpzFromBuffer
19854
+ * @param cloud The any returned by spz.loadSpzFromBuffer
19832
19855
  * @param scene The Babylon.js scene
19833
19856
  * @returns A promise resolving to an IParsedSplat
19834
19857
  */
@@ -19964,8 +19987,19 @@ declare namespace BABYLON {
19964
19987
  private _unzipWithFFlateAsync;
19965
19988
  private _parseAsync;
19966
19989
  /**
19967
- * Applies camera limits based on parsed meta data
19990
+ * Extracts the safe-orbit camera limits from parsed splat metadata, or null when the file
19991
+ * carries none. Exposed on the loaded mesh (GaussianSplattingMeshBase.safeOrbitCameraLimits)
19992
+ * so consumers can apply/track them regardless of the active camera type.
19968
19993
  * @param meta parsed splat meta data
19994
+ * @returns the parsed safe-orbit limits, or null
19995
+ */
19996
+ private static _ExtractSafeOrbitLimits;
19997
+ /**
19998
+ * Applies safe-orbit camera limits parsed from the file metadata to the scene's active
19999
+ * ArcRotateCamera. No-op when no limits are present, `disableAutoCameraLimits` is set, or the
20000
+ * active camera is not an ArcRotateCamera — in which case consumers can still read the limits
20001
+ * from the loaded mesh's `safeOrbitCameraLimits` and apply them themselves.
20002
+ * @param limits parsed safe-orbit limits (see _ExtractSafeOrbitLimits)
19969
20003
  * @param scene
19970
20004
  */
19971
20005
  private applyAutoCameraLimits;
@@ -20292,7 +20326,11 @@ declare namespace BABYLON {
20292
20326
  */
20293
20327
  constructor(scene: Scene, capacity: number);
20294
20328
  /**
20295
- * Creates a 4-attachment MRT (centers F32 / covA F32 / covB F32 / colors U8) sized to the work buffer.
20329
+ * Creates a 4-attachment MRT (centers F32 / covA / covB / colors U8) sized to the work buffer. covA/covB
20330
+ * use HALF_FLOAT when the engine can render to it, matching the precision the non-streamed
20331
+ * GaussianSplattingMesh path already uses for these same two textures (see
20332
+ * `gaussianSplattingMeshBase.pure.ts`'s `createTextureFromDataF16` covA/covB textures); centers stays F32
20333
+ * and colors stays U8 in both paths.
20296
20334
  * @param name MRT and attachment base name
20297
20335
  * @param disableClear when true, clearing is suppressed so renders accumulate (the decode buffer); when
20298
20336
  * false the MRT clears to zero on each render (the temporary relayout buffer, so gaps stay zeroed)
@@ -20823,7 +20861,14 @@ declare namespace BABYLON {
20823
20861
  * cheap per-node frustum test every frame so the off-screen LOD bias tracks camera rotation. The LOD
20824
20862
  * re-evaluation is throttled to at most every {@link _lodUpdateInterval} frames once the camera has
20825
20863
  * translated far enough, but also runs immediately whenever a node enters/leaves the frustum (so its
20826
- * detail upgrades/downgrades promptly) or a cap change forces it. Active ranges rebuild on any LOD change.
20864
+ * detail upgrades/downgrades promptly), a node whose cooldown just expired still needs to switch LOD,
20865
+ * or a cap change forces it. Active ranges rebuild on any LOD change.
20866
+ *
20867
+ * The cooldown-expiry trigger lets a node reach its already-computed target level as soon as its
20868
+ * cooldown clears, rather than waiting for the camera to move. This matters right from load: a
20869
+ * node's base-layer decode is itself applied as a switch (from no active level to the base one), so
20870
+ * it starts the same cooldown a later switch would — this trigger is what lets the node progress past
20871
+ * that base level promptly once it expires, even at a fixed camera pose.
20827
20872
  */
20828
20873
  private _onLodFrame;
20829
20874
  /**
@@ -21767,6 +21812,7 @@ declare namespace BABYLON {
21767
21812
  private _setAssetContainer;
21768
21813
  private static _computeFBXAxisConversionMatrix;
21769
21814
  private _buildModel;
21815
+ private _linkSkeletonsToTransformNodes;
21770
21816
  private static _modelSubtreeMatchesNameFilter;
21771
21817
  private static _applyModelMetadata;
21772
21818
  private _createMesh;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babylonjs-loaders",
3
- "version": "9.16.2",
3
+ "version": "9.17.1",
4
4
  "main": "babylonjs.loaders.min.js",
5
5
  "types": "babylonjs.loaders.module.d.ts",
6
6
  "files": [
@@ -16,8 +16,8 @@
16
16
  "test:escheck": "es-check es6 ./babylonjs.loaders.js"
17
17
  },
18
18
  "dependencies": {
19
- "babylonjs": "9.16.2",
20
- "babylonjs-gltf2interface": "9.16.2"
19
+ "babylonjs": "9.17.1",
20
+ "babylonjs-gltf2interface": "9.17.1"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@dev/build-tools": "1.0.0",