@zephyr3d/scene 0.9.4 → 0.9.5

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.
Files changed (102) hide show
  1. package/dist/animation/animationmask.js +224 -0
  2. package/dist/animation/animationmask.js.map +1 -0
  3. package/dist/animation/animationset.js +268 -67
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js.map +1 -1
  6. package/dist/animation/eulerrotationtrack.js +3 -0
  7. package/dist/animation/eulerrotationtrack.js.map +1 -1
  8. package/dist/animation/fixed_geometry_cache_track.js +7 -0
  9. package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
  10. package/dist/animation/ik_modifier.js.map +1 -1
  11. package/dist/animation/joint_dynamics/collision.js +6 -4
  12. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  13. package/dist/animation/joint_dynamics/controller.js +390 -43
  14. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  15. package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
  16. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  17. package/dist/animation/joint_dynamics/solver.js +4 -3
  18. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  19. package/dist/animation/joint_dynamics/types.js.map +1 -1
  20. package/dist/animation/joint_dynamics_modifier.js +2 -0
  21. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  22. package/dist/animation/morphtarget.js +3 -72
  23. package/dist/animation/morphtarget.js.map +1 -1
  24. package/dist/animation/morphtrack.js +3 -0
  25. package/dist/animation/morphtrack.js.map +1 -1
  26. package/dist/animation/pca_geometry_cache_track.js +3 -0
  27. package/dist/animation/pca_geometry_cache_track.js.map +1 -1
  28. package/dist/animation/proptrack.js +3 -0
  29. package/dist/animation/proptrack.js.map +1 -1
  30. package/dist/animation/rotationtrack.js +3 -0
  31. package/dist/animation/rotationtrack.js.map +1 -1
  32. package/dist/animation/scaletrack.js +3 -0
  33. package/dist/animation/scaletrack.js.map +1 -1
  34. package/dist/animation/skeleton.js +254 -79
  35. package/dist/animation/skeleton.js.map +1 -1
  36. package/dist/animation/skeleton_modifier.js.map +1 -1
  37. package/dist/animation/spring_modifier.js.map +1 -1
  38. package/dist/animation/translationtrack.js +3 -0
  39. package/dist/animation/translationtrack.js.map +1 -1
  40. package/dist/app/engine.js +171 -107
  41. package/dist/app/engine.js.map +1 -1
  42. package/dist/app/scriptregistry.js +251 -80
  43. package/dist/app/scriptregistry.js.map +1 -1
  44. package/dist/asset/assetmanager.js +344 -365
  45. package/dist/asset/assetmanager.js.map +1 -1
  46. package/dist/asset/loaders/gltf/gltf_loader.js +17 -14
  47. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  48. package/dist/asset/loaders/loader.js +1 -6
  49. package/dist/asset/loaders/loader.js.map +1 -1
  50. package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
  51. package/dist/asset/model.js +1000 -131
  52. package/dist/asset/model.js.map +1 -1
  53. package/dist/avatar/wardrobe.js +474 -0
  54. package/dist/avatar/wardrobe.js.map +1 -0
  55. package/dist/index.d.ts +1125 -199
  56. package/dist/index.js +3 -2
  57. package/dist/index.js.map +1 -1
  58. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
  59. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  60. package/dist/material/mixins/pbr/common.js +72 -15
  61. package/dist/material/mixins/pbr/common.js.map +1 -1
  62. package/dist/material/msdf_text_sprite.js +4 -4
  63. package/dist/material/msdf_text_sprite.js.map +1 -1
  64. package/dist/material/pbrblueprint.js +102 -102
  65. package/dist/material/pbrblueprint.js.map +1 -1
  66. package/dist/render/envlight.js +54 -1
  67. package/dist/render/envlight.js.map +1 -1
  68. package/dist/render/sky.js +9 -0
  69. package/dist/render/sky.js.map +1 -1
  70. package/dist/scene/batchgroup.js +11 -13
  71. package/dist/scene/batchgroup.js.map +1 -1
  72. package/dist/scene/environment.js +15 -2
  73. package/dist/scene/environment.js.map +1 -1
  74. package/dist/scene/mesh.js +79 -16
  75. package/dist/scene/mesh.js.map +1 -1
  76. package/dist/scene/scene.js +1 -0
  77. package/dist/scene/scene.js.map +1 -1
  78. package/dist/scene/scene_node.js +203 -2
  79. package/dist/scene/scene_node.js.map +1 -1
  80. package/dist/text/font/font_asset.js.map +1 -1
  81. package/dist/text/msdf/generator.js.map +1 -1
  82. package/dist/text/msdf/shape.js +4 -1
  83. package/dist/text/msdf/shape.js.map +1 -1
  84. package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
  85. package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
  86. package/dist/utility/blueprint/material/inputs.js +1157 -1154
  87. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  88. package/dist/utility/bounding_volume.js.map +1 -1
  89. package/dist/utility/pmrem.js +34 -8
  90. package/dist/utility/pmrem.js.map +1 -1
  91. package/dist/utility/serialization/manager.js +22 -9
  92. package/dist/utility/serialization/manager.js.map +1 -1
  93. package/dist/utility/serialization/scene/animation.js +700 -7
  94. package/dist/utility/serialization/scene/animation.js.map +1 -1
  95. package/dist/utility/serialization/scene/mesh.js +64 -4
  96. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  97. package/dist/utility/serialization/scene/node.js +187 -8
  98. package/dist/utility/serialization/scene/node.js.map +1 -1
  99. package/dist/utility/serialization/types.js.map +1 -1
  100. package/dist/utility/textures/sheenlut.js +138 -0
  101. package/dist/utility/textures/sheenlut.js.map +1 -0
  102. package/package.json +2 -2
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as _zephyr3d_device from '@zephyr3d/device';
2
- import { TextureCube, FrameBuffer, Texture2D, GPUDataBuffer, PrimitiveType, TextureSampler, BindGroupLayout, ProgramBuilder, PBInsideFunctionScope, PBShaderExp, PBGlobalScope, VertexSemantic, StructuredBuffer, VertexAttribFormat, VertexStepMode, IndexBuffer, BindGroup, GPUProgram, RenderStateSet, FaceMode, PBFunctionScope, Texture2DArray, BaseTexture, ShaderTypeFunc, TextureFormat, AbstractDevice, ColorState, SamplerOptions, TextureAtlasManager, DeviceBackend, TextureAddressMode, TextureFilterMode } from '@zephyr3d/device';
2
+ import { TextureCube, FrameBuffer, Texture2D, GPUDataBuffer, PrimitiveType, TextureSampler, BindGroupLayout, ProgramBuilder, PBInsideFunctionScope, PBShaderExp, PBGlobalScope, VertexSemantic, StructuredBuffer, VertexAttribFormat, VertexStepMode, IndexBuffer, BindGroup, GPUProgram, RenderStateSet, FaceMode, PBFunctionScope, Texture2DArray, BaseTexture, ShaderTypeFunc, TextureFormat, AbstractDevice, ColorState, TextureAddressMode, TextureFilterMode, SamplerOptions, TextureAtlasManager, DeviceBackend } from '@zephyr3d/device';
3
3
  import * as _zephyr3d_base from '@zephyr3d/base';
4
4
  import { Disposable, TypedArray, Ray, AABB, Matrix4x4, Plane, Frustum, Vector3, Nullable, GenericConstructor, RequireOptionals, Immutable, Vector4, Clonable, IDisposable, Vector2, IEventTarget, Observable, DRef, Rect, CubeFace, Quaternion, Interpolator, InterpolationMode, InterpolatorScalar, DeepPartial, VFS, HttpRequest, WriteOptions, ReadOptions, DeepRequireOptionals } from '@zephyr3d/base';
5
5
  import { DecoderModule, Metadata as Metadata$1 } from 'draco3d';
6
6
 
7
- type DistributionType = 'lambertian' | 'ggx';
7
+ type DistributionType = 'lambertian' | 'ggx' | 'charlie';
8
8
  /**
9
9
  * Prefilters an environment cubemap
10
10
  *
@@ -205,7 +205,7 @@ declare class BoundingBox extends AABB implements BoundingVolume {
205
205
  /** {@inheritDoc BoundingVolume.behindPlane} */
206
206
  behindPlane(plane: Plane): boolean;
207
207
  /** {@inheritDoc BoundingVolume.clone} */
208
- clone(): BoundingBox;
208
+ clone(): this;
209
209
  /** {@inheritDoc BoundingVolume.transform} */
210
210
  transform(matrix: Matrix4x4): BoundingBox;
211
211
  /** {@inheritDoc BoundingVolume.outsideFrustum} */
@@ -282,7 +282,7 @@ type PropertyValue = {
282
282
  *
283
283
  * @public
284
284
  */
285
- type PropEdit = 'aabb' | 'quaternion' | 'proptrack';
285
+ type PropEdit = 'aabb' | 'quaternion' | 'proptrack' | 'curve1f';
286
286
  /**
287
287
  * Extra scene-node picker hints for a property.
288
288
  *
@@ -3422,6 +3422,8 @@ type IMixinPBRCommon = {
3422
3422
  getCommonDatasStruct(scope: PBInsideFunctionScope): ShaderTypeFunc;
3423
3423
  calculateEmissiveColor(scope: PBInsideFunctionScope): PBShaderExp;
3424
3424
  getF0(scope: PBInsideFunctionScope): PBShaderExp;
3425
+ getSheenAlbedoScaling(scope: PBInsideFunctionScope, Ndot: PBShaderExp, sheenColor: PBShaderExp, sheenRoughness: PBShaderExp): PBShaderExp;
3426
+ getSheenAlbedoScalingForDirect(scope: PBInsideFunctionScope, NoV: PBShaderExp, NoL: PBShaderExp, sheenColor: PBShaderExp, sheenRoughness: PBShaderExp): PBShaderExp;
3425
3427
  directLighting(scope: PBInsideFunctionScope, lightDir: PBShaderExp, lightColor: PBShaderExp, normal: PBShaderExp, viewVec: PBShaderExp, commonData: PBShaderExp, diffuseScale: PBShaderExp, specularScale: PBShaderExp, sourceRadiusFactor: PBShaderExp, outColor: PBShaderExp): void;
3426
3428
  directRectLight(scope: PBInsideFunctionScope, worldPos: PBShaderExp, normal: PBShaderExp, viewVec: PBShaderExp, commonData: PBShaderExp, posRange: PBShaderExp, axisX: PBShaderExp, axisY: PBShaderExp, colorIntensity: PBShaderExp, outColor: PBShaderExp): void;
3427
3429
  indirectLighting(scope: PBInsideFunctionScope, normal: PBShaderExp, viewVec: PBShaderExp, commonData: PBShaderExp, outColor: PBShaderExp, outRoughness?: PBShaderExp): void;
@@ -4688,6 +4690,13 @@ declare class SkyRenderer extends Disposable {
4688
4690
  * Radiance map of the sky.
4689
4691
  */
4690
4692
  get radianceMap(): TextureCube<unknown>;
4693
+ /**
4694
+ * Radiance map of the sky reused for sheen.
4695
+ *
4696
+ * @remarks
4697
+ * Dynamic sky is smooth enough that the GGX-prefiltered radiance map is a practical approximation for sheen.
4698
+ */
4699
+ get sheenRadianceMap(): TextureCube<unknown>;
4691
4700
  /**
4692
4701
  * Irradiance SH coeffecients buffer
4693
4702
  */
@@ -4758,6 +4767,16 @@ declare abstract class EnvironmentLighting extends Disposable {
4758
4767
  * @returns The radiance for the fragment
4759
4768
  */
4760
4769
  abstract getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): Nullable<PBShaderExp>;
4770
+ /**
4771
+ * Get Charlie-filtered sheen radiance for a fragment
4772
+ *
4773
+ * @param scope - The shader scope
4774
+ * @param refl - Reflection vector
4775
+ * @param roughness - Sheen roughness
4776
+ *
4777
+ * @returns The sheen radiance for the fragment
4778
+ */
4779
+ abstract getSheenRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): Nullable<PBShaderExp>;
4761
4780
  /**
4762
4781
  * Get irradiance for a fragment
4763
4782
  *
@@ -4771,6 +4790,10 @@ declare abstract class EnvironmentLighting extends Disposable {
4771
4790
  * Returns whether this environment lighting supports reflective light
4772
4791
  */
4773
4792
  abstract hasRadiance(): boolean;
4793
+ /**
4794
+ * Returns whether this environment lighting supports sheen reflective light
4795
+ */
4796
+ abstract hasSheenRadiance(): boolean;
4774
4797
  /**
4775
4798
  * Returns whether this environment lighting supports diffuse light
4776
4799
  */
@@ -4786,7 +4809,7 @@ declare class EnvShIBL extends EnvironmentLighting {
4786
4809
  * @param radianceMap - The radiance map
4787
4810
  * @param irradianceSH - The irradiance SH
4788
4811
  */
4789
- constructor(radianceMap?: TextureCube, irradianceSH?: GPUDataBuffer, irradianceSHFB?: FrameBuffer);
4812
+ constructor(radianceMap?: TextureCube, irradianceSH?: GPUDataBuffer, irradianceSHFB?: FrameBuffer, sheenRadianceMap?: TextureCube);
4790
4813
  /**
4791
4814
  * {@inheritDoc EnvironmentLighting.getType}
4792
4815
  * @override
@@ -4795,6 +4818,9 @@ declare class EnvShIBL extends EnvironmentLighting {
4795
4818
  /** The radiance map */
4796
4819
  get radianceMap(): Nullable<TextureCube<unknown>>;
4797
4820
  set radianceMap(tex: Nullable<TextureCube<unknown>>);
4821
+ /** The Charlie-filtered sheen radiance map */
4822
+ get sheenRadianceMap(): Nullable<TextureCube<unknown>>;
4823
+ set sheenRadianceMap(tex: Nullable<TextureCube<unknown>>);
4798
4824
  /** The irradiance sh coeffecients */
4799
4825
  get irradianceSH(): Nullable<GPUDataBuffer<unknown>>;
4800
4826
  set irradianceSH(value: Nullable<GPUDataBuffer<unknown>>);
@@ -4819,6 +4845,11 @@ declare class EnvShIBL extends EnvironmentLighting {
4819
4845
  * @override
4820
4846
  */
4821
4847
  getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): PBShaderExp;
4848
+ /**
4849
+ * {@inheritDoc EnvironmentLighting.getSheenRadiance}
4850
+ * @override
4851
+ */
4852
+ getSheenRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): PBShaderExp;
4822
4853
  /**
4823
4854
  * {@inheritDoc EnvironmentLighting.getIrradiance}
4824
4855
  * @override
@@ -4829,6 +4860,11 @@ declare class EnvShIBL extends EnvironmentLighting {
4829
4860
  * @override
4830
4861
  */
4831
4862
  hasRadiance(): boolean;
4863
+ /**
4864
+ * {@inheritDoc EnvironmentLighting.hasSheenRadiance}
4865
+ * @override
4866
+ */
4867
+ hasSheenRadiance(): boolean;
4832
4868
  /**
4833
4869
  * {@inheritDoc EnvironmentLighting.hasIrradiance}
4834
4870
  * @override
@@ -4873,6 +4909,11 @@ declare class EnvConstantAmbient extends EnvironmentLighting {
4873
4909
  * @override
4874
4910
  */
4875
4911
  getRadiance(_scope: PBInsideFunctionScope, _refl: PBShaderExp, _roughness: PBShaderExp): null;
4912
+ /**
4913
+ * {@inheritDoc EnvironmentLighting.getSheenRadiance}
4914
+ * @override
4915
+ */
4916
+ getSheenRadiance(_scope: PBInsideFunctionScope, _refl: PBShaderExp, _roughness: PBShaderExp): null;
4876
4917
  /**
4877
4918
  * {@inheritDoc EnvironmentLighting.getIrradiance}
4878
4919
  * @override
@@ -4883,6 +4924,11 @@ declare class EnvConstantAmbient extends EnvironmentLighting {
4883
4924
  * @override
4884
4925
  */
4885
4926
  hasRadiance(): boolean;
4927
+ /**
4928
+ * {@inheritDoc EnvironmentLighting.hasSheenRadiance}
4929
+ * @override
4930
+ */
4931
+ hasSheenRadiance(): boolean;
4886
4932
  /**
4887
4933
  * {@inheritDoc EnvironmentLighting.hasIrradiance}
4888
4934
  * @override
@@ -4926,6 +4972,11 @@ declare class EnvHemisphericAmbient extends EnvironmentLighting {
4926
4972
  * @override
4927
4973
  */
4928
4974
  getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, _roughness: PBShaderExp): PBShaderExp;
4975
+ /**
4976
+ * {@inheritDoc EnvironmentLighting.getSheenRadiance}
4977
+ * @override
4978
+ */
4979
+ getSheenRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): PBShaderExp;
4929
4980
  /**
4930
4981
  * {@inheritDoc EnvironmentLighting.getIrradiance}
4931
4982
  * @override
@@ -4936,6 +4987,11 @@ declare class EnvHemisphericAmbient extends EnvironmentLighting {
4936
4987
  * @override
4937
4988
  */
4938
4989
  hasRadiance(): boolean;
4990
+ /**
4991
+ * {@inheritDoc EnvironmentLighting.hasSheenRadiance}
4992
+ * @override
4993
+ */
4994
+ hasSheenRadiance(): boolean;
4939
4995
  /**
4940
4996
  * {@inheritDoc EnvironmentLighting.hasIrradiance}
4941
4997
  * @override
@@ -8169,6 +8225,7 @@ declare class EnvLightWrapper extends Disposable {
8169
8225
  private readonly _ambientDown;
8170
8226
  private readonly _ambientUp;
8171
8227
  private readonly _radianceMap;
8228
+ private readonly _sheenRadianceMap;
8172
8229
  private readonly _irradianceMap;
8173
8230
  private readonly _irradianceSH;
8174
8231
  private readonly _irradianceSHFB;
@@ -8189,6 +8246,9 @@ declare class EnvLightWrapper extends Disposable {
8189
8246
  /** Radiance map for environment light type ibl */
8190
8247
  get radianceMap(): Nullable<TextureCube<unknown>>;
8191
8248
  set radianceMap(tex: Nullable<TextureCube<unknown>>);
8249
+ /** Charlie-filtered sheen radiance map for environment light type ibl */
8250
+ get sheenRadianceMap(): Nullable<TextureCube<unknown>>;
8251
+ set sheenRadianceMap(tex: Nullable<TextureCube<unknown>>);
8192
8252
  /** Irradiance SH buffer for environment light type ibl */
8193
8253
  get irradianceSH(): Nullable<GPUDataBuffer<unknown>>;
8194
8254
  set irradianceSH(value: Nullable<GPUDataBuffer<unknown>>);
@@ -8768,10 +8828,10 @@ declare abstract class SkeletonModifier {
8768
8828
  * Implementations should modify joint transforms and blend with the current state
8769
8829
  * using the processor's weight.
8770
8830
  *
8771
- * @param skeleton - The skeleton to process
8831
+ * @param skeleton - The shared rig to process
8772
8832
  * @param deltaTime - Time elapsed since last frame (in seconds)
8773
8833
  */
8774
- abstract apply(skeleton: Skeleton, deltaTime: number): void;
8834
+ abstract apply(skeleton: SkeletonRig, deltaTime: number): void;
8775
8835
  /**
8776
8836
  * Reset the processor to its initial state.
8777
8837
  *
@@ -8884,11 +8944,69 @@ type HumanoidJointMapping<T extends {
8884
8944
  leftHand?: Record<HumanoidHandRig, T>;
8885
8945
  rightHand?: Record<HumanoidHandRig, T>;
8886
8946
  };
8947
+ /** @public */
8948
+ type SkeletonBindPose = {
8949
+ rotation: Quaternion;
8950
+ scale: Vector3;
8951
+ position: Vector3;
8952
+ };
8953
+ /** @public */
8954
+ type SkeletonRigOptions = {
8955
+ rootJoint?: Nullable<SceneNode>;
8956
+ rootBindPose?: SkeletonBindPose;
8957
+ };
8958
+ /**
8959
+ * Shared joint rig for skeletal animation.
8960
+ *
8961
+ * A rig owns the animated joint nodes, bind pose, humanoid mapping and procedural
8962
+ * modifiers. Multiple skin bindings may reference the same rig with different
8963
+ * inverse bind matrices.
8964
+ *
8965
+ * @public
8966
+ */
8967
+ declare class SkeletonRig extends Disposable {
8968
+ private static readonly _registry;
8969
+ protected _id: string;
8970
+ protected _joints: SceneNode[];
8971
+ protected _bindPoseByJoint: Map<SceneNode, SkeletonBindPose>;
8972
+ protected _bindPose: SkeletonBindPose[];
8973
+ protected _rootJoint: Nullable<SceneNode>;
8974
+ protected _rootBindPose: SkeletonBindPose;
8975
+ protected _playing: boolean;
8976
+ protected _modifiers: SkeletonModifier[];
8977
+ protected _humanoidJointMapping: Nullable<HumanoidJointMapping<SceneNode>>;
8978
+ protected _humanoidRootRotation: Quaternion;
8979
+ constructor(joints: SceneNode[], bindPose: SkeletonBindPose[], options?: SkeletonRigOptions);
8980
+ static getRigKey(joints: SceneNode[], rootJoint?: Nullable<SceneNode>): string;
8981
+ static findRigById(id: string): Nullable<SkeletonRig>;
8982
+ get persistentId(): string;
8983
+ set persistentId(val: string);
8984
+ get joints(): SceneNode[];
8985
+ get bindPose(): SkeletonBindPose[];
8986
+ get rootJoint(): Nullable<SceneNode>;
8987
+ set rootJoint(joint: Nullable<SceneNode>);
8988
+ get rootBindPose(): SkeletonBindPose;
8989
+ getBindPoseForJoint(joint: SceneNode): SkeletonBindPose | null;
8990
+ get humanoidJointMapping(): Nullable<HumanoidJointMapping<SceneNode>>;
8991
+ get humanoidRootRotation(): Quaternion;
8992
+ get modifiers(): SkeletonModifier[];
8993
+ get playing(): boolean;
8994
+ set playing(b: boolean);
8995
+ getJointIndex(joint: SceneNode): number;
8996
+ getJointIndexByName(jointName: string): number;
8997
+ computeBindPose(): void;
8998
+ apply(deltaTime: number): void;
8999
+ reset(): void;
9000
+ protected onDispose(): void;
9001
+ private findRootJoint;
9002
+ private getNodeBindPose;
9003
+ }
8887
9004
  /**
8888
- * Skeleton for skinned animation.
9005
+ * Skin binding for skinned animation.
8889
9006
  *
8890
9007
  * Responsibilities:
8891
- * - Maintains joint transforms: inverse bind, bind pose, and current skinning matrices.
9008
+ * - References a shared SkeletonRig.
9009
+ * - Maintains inverse bind and current skinning matrices for one skin.
8892
9010
  * - Provides a texture containing joint matrices for GPU skinning.
8893
9011
  * - Applies skinning state to associated meshes each frame.
8894
9012
  * - Computes animated axis-aligned bounding boxes using representative skinned vertices.
@@ -8900,25 +9018,24 @@ type HumanoidJointMapping<T extends {
8900
9018
  * and `_jointOffsets[1]` (previous).
8901
9019
  *
8902
9020
  * Usage:
8903
- * - Construct with joints, bind data, meshes and submesh bounding info.
9021
+ * - Construct with a rig, bind data, meshes and submesh bounding info.
8904
9022
  * - Call `apply()` each frame to update joint texture, bind to meshes, and update bounds.
8905
9023
  * - Call `reset()` to clear skinning on meshes.
8906
9024
  *
8907
9025
  * @public
8908
9026
  */
8909
- declare class Skeleton extends Disposable {
9027
+ declare class SkinBinding extends Disposable {
8910
9028
  /**
8911
- * Create a skeleton instance.
9029
+ * Create a skin binding instance.
8912
9030
  *
9031
+ * @param rig - Shared skeleton rig that owns animated joint transforms.
8913
9032
  * @param joints - Joint scene nodes (one per joint), ordered to match skin data.
8914
9033
  * @param inverseBindMatrices - Inverse bind matrices for each joint.
8915
9034
  * @param bindPoseMatrices - Bind pose matrices for each joint (model-space).
8916
9035
  */
8917
- constructor(joints: SceneNode[], inverseBindMatrices: Matrix4x4[], bindPose: {
8918
- rotation: Quaternion;
8919
- scale: Vector3;
8920
- position: Vector3;
8921
- }[]);
9036
+ constructor(rig: SkeletonRig, inverseBindMatrices: Matrix4x4[], joints?: SceneNode[], bindPose?: SkeletonBindPose[]);
9037
+ static findSkeletonById(id: string): Nullable<SkinBinding>;
9038
+ get rig(): SkeletonRig;
8922
9039
  /** Gets joint nodes */
8923
9040
  get joints(): SceneNode[];
8924
9041
  /** Gets the humanoid joint mapping */
@@ -8960,6 +9077,7 @@ declare class Skeleton extends Disposable {
8960
9077
  * - Clears matrix arrays and joint references.
8961
9078
  */
8962
9079
  protected onDispose(): void;
9080
+ private _syncJointMatrixArray;
8963
9081
  /**
8964
9082
  * Build representative skinned bounding data for a submesh.
8965
9083
  *
@@ -8979,7 +9097,6 @@ declare class Skeleton extends Disposable {
8979
9097
  blendIndices: TypedArray;
8980
9098
  weights: TypedArray;
8981
9099
  }): SkinnedBoundingBox;
8982
- private findRootJoint;
8983
9100
  private static normalizeHumanoidJointName;
8984
9101
  private static getHumanoidJointNodeDepth;
8985
9102
  private static collectHumanoidJointNodeInfos;
@@ -9044,6 +9161,97 @@ declare class Skeleton extends Disposable {
9044
9161
  children: T[];
9045
9162
  }>(root: T): HumanoidJointMapping<T> | null;
9046
9163
  }
9164
+ /**
9165
+ * Legacy compatibility name for a skin binding.
9166
+ *
9167
+ * New code should use {@link SkeletonRig} for the shared animated rig and
9168
+ * {@link SkinBinding} for per-skin inverse bind matrices.
9169
+ *
9170
+ * @public
9171
+ */
9172
+ declare class Skeleton extends SkinBinding {
9173
+ constructor(joints: SceneNode[], inverseBindMatrices: Matrix4x4[], bindPose: SkeletonBindPose[]);
9174
+ static tryExtractHumanoidJoints: typeof SkinBinding.tryExtractHumanoidJoints;
9175
+ static tryExtractHumanoidJointsMixamo: typeof SkinBinding.tryExtractHumanoidJointsMixamo;
9176
+ static tryExtractHumanoidJointsVRM: typeof SkinBinding.tryExtractHumanoidJointsVRM;
9177
+ static tryExtractHumanoidJointsUnityHumanoid: typeof SkinBinding.tryExtractHumanoidJointsUnityHumanoid;
9178
+ static tryExtractHumanoidJointsBiped: typeof SkinBinding.tryExtractHumanoidJointsBiped;
9179
+ static findSkeletonById(id: string): Nullable<SkinBinding>;
9180
+ }
9181
+
9182
+ /** @public */
9183
+ type SkeletalAnimationMaskRootMotionMode = 'include' | 'exclude' | 'only';
9184
+ /** @public */
9185
+ type SkeletalAnimationMaskUnsupportedTrackMode = 'skip' | 'error';
9186
+ /** @public */
9187
+ type HumanoidSkeletalAnimationMaskPreset = 'fullBody' | 'upperBody' | 'lowerBody' | 'head' | 'arms' | 'leftArm' | 'rightArm' | 'legs' | 'leftLeg' | 'rightLeg';
9188
+ /** @public */
9189
+ type JointNameMatcher = string | RegExp | ((joint: SceneNode) => boolean);
9190
+ /** @public */
9191
+ type SkeletalAnimationMaskCommonOptions = {
9192
+ /**
9193
+ * How root translation tracks are copied.
9194
+ *
9195
+ * Defaults to `include` for lower/full body humanoid masks and to `exclude` otherwise.
9196
+ */
9197
+ rootMotion?: SkeletalAnimationMaskRootMotionMode;
9198
+ /**
9199
+ * How tracks outside node transform animation should be handled.
9200
+ *
9201
+ * Defaults to `skip`.
9202
+ */
9203
+ unsupportedTracks?: SkeletalAnimationMaskUnsupportedTrackMode;
9204
+ };
9205
+ /** @public */
9206
+ type HumanoidSkeletalAnimationMaskOptions = SkeletalAnimationMaskCommonOptions & {
9207
+ type: 'humanoid';
9208
+ /**
9209
+ * Optional semantic preset used as the initial joint set.
9210
+ */
9211
+ preset?: HumanoidSkeletalAnimationMaskPreset;
9212
+ /**
9213
+ * Boundary joint for `upperBody`. Defaults to `HumanoidBodyRig.Spine`.
9214
+ */
9215
+ boundary?: HumanoidBodyRig;
9216
+ /**
9217
+ * Additional body joints selected by semantic name.
9218
+ */
9219
+ includeBody?: HumanoidBodyRig[];
9220
+ /**
9221
+ * Body joints removed from the selected set.
9222
+ */
9223
+ excludeBody?: HumanoidBodyRig[];
9224
+ includeLeftHand?: HumanoidHandRig[];
9225
+ includeRightHand?: HumanoidHandRig[];
9226
+ excludeLeftHand?: HumanoidHandRig[];
9227
+ excludeRightHand?: HumanoidHandRig[];
9228
+ /**
9229
+ * Whether explicit semantic include/exclude entries affect their descendants.
9230
+ *
9231
+ * Defaults to true for humanoid semantic masks.
9232
+ */
9233
+ includeDescendants?: boolean;
9234
+ };
9235
+ /** @public */
9236
+ type NamedJointsSkeletalAnimationMaskOptions = SkeletalAnimationMaskCommonOptions & {
9237
+ type: 'joints';
9238
+ /**
9239
+ * Joint name matchers. If omitted, all rig joints are selected before exclusions.
9240
+ */
9241
+ include?: JointNameMatcher[];
9242
+ /**
9243
+ * Joint name matchers removed from the selected set.
9244
+ */
9245
+ exclude?: JointNameMatcher[];
9246
+ /**
9247
+ * Whether selected or excluded joints affect their descendants.
9248
+ *
9249
+ * Defaults to false for name masks.
9250
+ */
9251
+ includeDescendants?: boolean;
9252
+ };
9253
+ /** @public */
9254
+ type SkeletalAnimationMaskOptions = HumanoidSkeletalAnimationMaskOptions | NamedJointsSkeletalAnimationMaskOptions;
9047
9255
 
9048
9256
  /**
9049
9257
  * Options for playing an animation.
@@ -9098,6 +9306,45 @@ type StopAnimationOptions = {
9098
9306
  */
9099
9307
  fadeOut?: number;
9100
9308
  };
9309
+ /** @public */
9310
+ type HumanoidRootMotionMode = 'scaled' | 'copy' | 'locked' | 'none';
9311
+ /** @public */
9312
+ type HumanoidRootMotionScaleMode = 'legLength' | 'none' | number;
9313
+ /** @public */
9314
+ type HumanoidRetargetAxisLocks = {
9315
+ x?: boolean;
9316
+ y?: boolean;
9317
+ z?: boolean;
9318
+ };
9319
+ /** @public */
9320
+ type CopyHumanoidAnimationOptions = {
9321
+ /**
9322
+ * Name for the new clip. Ignored when the legacy third `targetName` argument is a string.
9323
+ */
9324
+ targetName?: string;
9325
+ /**
9326
+ * How root translation should be handled.
9327
+ *
9328
+ * - `scaled`: retarget and scale root motion to the destination rig size.
9329
+ * - `copy`: retarget root motion without scale.
9330
+ * - `locked`: write a constant destination bind-pose root translation.
9331
+ * - `none`: do not create a root translation track.
9332
+ */
9333
+ rootMotion?: HumanoidRootMotionMode;
9334
+ /**
9335
+ * Scale used when `rootMotion` is `scaled`.
9336
+ */
9337
+ rootMotionScale?: HumanoidRootMotionScaleMode;
9338
+ /**
9339
+ * Axis locks applied after root motion retargeting. Locked axes stay at the destination bind pose.
9340
+ */
9341
+ lockRootMotionAxes?: HumanoidRetargetAxisLocks;
9342
+ /**
9343
+ * Whether to preserve non-root humanoid translation tracks. These are skipped by default because
9344
+ * retargeting humanoid joints should normally keep the destination skeleton lengths intact.
9345
+ */
9346
+ jointTranslations?: 'skip' | 'preserve';
9347
+ };
9101
9348
  /**
9102
9349
  * Animation set
9103
9350
  *
@@ -9136,7 +9383,17 @@ declare class AnimationSet extends Disposable implements IDisposable {
9136
9383
  /**
9137
9384
  * The skeletons used by animations in this set.
9138
9385
  */
9139
- get skeletons(): DRef<Skeleton>[];
9386
+ get skeletons(): DRef<SkinBinding>[];
9387
+ /**
9388
+ * The shared rigs used by animations in this set.
9389
+ */
9390
+ get rigs(): DRef<SkeletonRig>[];
9391
+ /**
9392
+ * Per-skin bindings used by skinned meshes in this set.
9393
+ */
9394
+ get skinBindings(): DRef<SkinBinding>[];
9395
+ private resolveRigByAnimationBindingId;
9396
+ private resolveClipRig;
9140
9397
  /**
9141
9398
  * Retrieve an animation clip by name.
9142
9399
  *
@@ -9174,7 +9431,7 @@ declare class AnimationSet extends Disposable implements IDisposable {
9174
9431
  * - Enforce repeat limits and apply fade-out termination if configured.
9175
9432
  * - For each animated target, blend active tracks (weighted by clip weight × fade-in × fade-out)
9176
9433
  * and apply the resulting state to the target.
9177
- * - Apply all active skeletons to update skinning transforms.
9434
+ * - Apply shared rig modifiers once, then update skin binding palettes.
9178
9435
  *
9179
9436
  * @param deltaInSeconds - Time step in seconds since last update.
9180
9437
  */
@@ -9230,6 +9487,19 @@ declare class AnimationSet extends Disposable implements IDisposable {
9230
9487
  * @param options - Optional fade-out configuration.
9231
9488
  */
9232
9489
  stopAnimation(name: string, options?: StopAnimationOptions): void;
9490
+ /**
9491
+ * Create a skeletal-only masked clip from an existing clip in this set.
9492
+ *
9493
+ * The generated clip is a regular `AnimationClip`: it contains cloned node transform tracks
9494
+ * for the selected rig joints and can be played/blended through the normal animation system.
9495
+ * Non-skeletal tracks are skipped by default.
9496
+ *
9497
+ * @param sourceName - Name of the source clip.
9498
+ * @param targetName - Name of the generated clip.
9499
+ * @param options - Humanoid semantic or joint-name based mask options.
9500
+ * @returns The generated clip, or null on failure.
9501
+ */
9502
+ createSkeletalMaskedAnimation(sourceName: string, targetName: string, options: SkeletalAnimationMaskOptions): AnimationClip | null;
9233
9503
  /**
9234
9504
  * Copy a humanoid animation clip from another AnimationSet into this one via humanoid rig mapping.
9235
9505
  *
@@ -9243,7 +9513,8 @@ declare class AnimationSet extends Disposable implements IDisposable {
9243
9513
  * @param targetName - Name for the new clip in this set. Defaults to `animationName`.
9244
9514
  * @returns The newly created AnimationClip, or null on failure.
9245
9515
  */
9246
- copyHumanoidAnimationFrom(sourceSet: AnimationSet, animationName: string, targetName?: string): AnimationClip | null;
9516
+ copyHumanoidAnimationFrom(sourceSet: AnimationSet, animationName: string, options?: CopyHumanoidAnimationOptions): AnimationClip | null;
9517
+ copyHumanoidAnimationFrom(sourceSet: AnimationSet, animationName: string, targetName?: string, options?: CopyHumanoidAnimationOptions): AnimationClip | null;
9247
9518
  /**
9248
9519
  * Copy an animation clip from another AnimationSet into this one.
9249
9520
  *
@@ -9258,9 +9529,13 @@ declare class AnimationSet extends Disposable implements IDisposable {
9258
9529
  * skeleton structure matching.
9259
9530
  * @returns The newly created AnimationClip, or null on failure.
9260
9531
  *
9261
- * @deprecated Use the new {@link AnimationSet.copyHumanoidAnimationFrom} method instead.
9532
+ * @deprecated Use AnimationSet.copyHumanoidAnimationFrom instead.
9262
9533
  */
9263
9534
  copyAnimationFrom(sourceSet: AnimationSet, animationName: string, targetName?: string, excludeJoint?: (jointName: string) => boolean): AnimationClip | null;
9535
+ /**
9536
+ * Reset all skeleton modifiers
9537
+ */
9538
+ resetSkeletonModifiers(): void;
9264
9539
  /**
9265
9540
  * Dispose the animation set and release owned resources.
9266
9541
  *
@@ -9320,6 +9595,10 @@ declare abstract class AnimationTrack<StateType = unknown> {
9320
9595
  */
9321
9596
  get jointIndex(): number;
9322
9597
  set jointIndex(index: number);
9598
+ /**
9599
+ * Clone this animation track
9600
+ */
9601
+ abstract clone(): this;
9323
9602
  /**
9324
9603
  * Reset the track to its initial state for the given target.
9325
9604
  *
@@ -9503,6 +9782,8 @@ declare class NodeTranslationTrack extends AnimationTrack<Vector3> {
9503
9782
  }[], embedded?: boolean);
9504
9783
  get interpolator(): Interpolator;
9505
9784
  set interpolator(interp: Interpolator);
9785
+ /** {@inheritDoc AnimationTrack.clone} */
9786
+ clone(): this;
9506
9787
  /** {@inheritDoc AnimationTrack.calculateState} */
9507
9788
  calculateState(target: object, currentTime: number): Vector3;
9508
9789
  /** {@inheritDoc AnimationTrack.applyState} */
@@ -9544,6 +9825,8 @@ declare class NodeRotationTrack extends AnimationTrack<Quaternion> {
9544
9825
  }[], embedded?: boolean);
9545
9826
  get interpolator(): Interpolator;
9546
9827
  set interpolator(interp: Interpolator);
9828
+ /** {@inheritDoc AnimationTrack.clone} */
9829
+ clone(): this;
9547
9830
  /** {@inheritDoc AnimationTrack.calculateState} */
9548
9831
  calculateState(target: object, currentTime: number): Quaternion;
9549
9832
  /** {@inheritDoc AnimationTrack.applyState} */
@@ -9585,6 +9868,8 @@ declare class NodeEulerRotationTrack extends AnimationTrack<Quaternion> {
9585
9868
  }[], embedded?: boolean);
9586
9869
  get interpolator(): Interpolator;
9587
9870
  set interpolator(interp: Interpolator);
9871
+ /** {@inheritDoc AnimationTrack.clone} */
9872
+ clone(): this;
9588
9873
  /** {@inheritDoc AnimationTrack.calculateState} */
9589
9874
  calculateState(target: object, currentTime: number): Quaternion;
9590
9875
  /** {@inheritDoc AnimationTrack.applyState} */
@@ -9626,6 +9911,8 @@ declare class NodeScaleTrack extends AnimationTrack<Vector3> {
9626
9911
  }[], embedded?: boolean);
9627
9912
  get interpolator(): Interpolator;
9628
9913
  set interpolator(interp: Interpolator);
9914
+ /** {@inheritDoc AnimationTrack.clone} */
9915
+ clone(): this;
9629
9916
  /** {@inheritDoc AnimationTrack.calculateState} */
9630
9917
  calculateState(target: object, currentTime: number): Vector3;
9631
9918
  /** {@inheritDoc AnimationTrack.applyState} */
@@ -9677,6 +9964,8 @@ declare class PropertyTrack extends AnimationTrack<number[]> {
9677
9964
  * @throws Error if the property type is unsupported for animation.
9678
9965
  */
9679
9966
  constructor(prop: PropertyAccessor, value?: number[], embedded?: boolean);
9967
+ /** {@inheritDoc AnimationTrack.clone} */
9968
+ clone(): this;
9680
9969
  /**
9681
9970
  * The primary interpolator for the property components.
9682
9971
  *
@@ -9739,6 +10028,7 @@ declare class MorphTargetTrack extends AnimationTrack<MorphState> {
9739
10028
  * Create an instance of MorphTargetTrack from morph parameters
9740
10029
  */
9741
10030
  constructor(interpolator?: Interpolator, defaultMorphWeights?: number[], targetBox?: BoundingBox[], originBox?: AABB, embedded?: boolean);
10031
+ clone(): this;
9742
10032
  get interpolator(): Nullable<Interpolator>;
9743
10033
  set interpolator(interp: Nullable<Interpolator>);
9744
10034
  get boundingBox(): Nullable<BoundingBox[]>;
@@ -9832,6 +10122,7 @@ declare class FixedGeometryCacheTrack extends AnimationTrack<FixedGeometryCacheS
9832
10122
  private _state;
9833
10123
  private readonly _meshBindings;
9834
10124
  constructor(times?: Float32Array, frames?: FixedGeometryCacheFrame[], embedded?: boolean);
10125
+ clone(): this;
9835
10126
  get times(): Float32Array;
9836
10127
  set times(value: Float32Array);
9837
10128
  get frames(): FixedGeometryCacheFrame[];
@@ -9887,6 +10178,7 @@ declare class PCAGeometryCacheTrack extends AnimationTrack<PCAGeometryCacheState
9887
10178
  private _state;
9888
10179
  private readonly _meshBindings;
9889
10180
  constructor(data?: Partial<PCAGeometryCacheTrackData>, embedded?: boolean);
10181
+ clone(): this;
9890
10182
  get times(): Float32Array;
9891
10183
  set times(value: Float32Array);
9892
10184
  get bounds(): [number, number, number, number, number, number][];
@@ -10168,7 +10460,7 @@ declare class IKModifier<Solver extends IKSolver = IKSolver> extends SkeletonMod
10168
10460
  /**
10169
10461
  * Apply IK solving to skeleton joints.
10170
10462
  */
10171
- apply(_skeleton: Skeleton, _deltaTime: number): void;
10463
+ apply(_skeleton: SkeletonRig, _deltaTime: number): void;
10172
10464
  /**
10173
10465
  * Reset the IK solver to initial state.
10174
10466
  */
@@ -10699,7 +10991,7 @@ declare class SpringModifier extends SkeletonModifier {
10699
10991
  /**
10700
10992
  * Apply spring physics to skeleton joints.
10701
10993
  */
10702
- apply(_skeleton: Skeleton, deltaTime: number): void;
10994
+ apply(_skeleton: SkeletonRig, deltaTime: number): void;
10703
10995
  /**
10704
10996
  * Reset the spring system to initial state.
10705
10997
  */
@@ -11751,6 +12043,8 @@ interface ColliderRW {
11751
12043
  localBoundsMax: Vector3;
11752
12044
  /** Scaled radius for current frame (base radius × world scale) */
11753
12045
  radius: number;
12046
+ /** Scaled capsule height for current frame (base height times world scale) */
12047
+ height: number;
11754
12048
  /** Whether this collider is active (0 = disabled, 1 = enabled) */
11755
12049
  enabled: number;
11756
12050
  }
@@ -11905,6 +12199,8 @@ interface TransformAccess {
11905
12199
  setLocalRotation(q: Quaternion): void;
11906
12200
  /** Write local scale */
11907
12201
  setLocalScale(s: Vector3): void;
12202
+ /** Original scene object backing this adapter, when available for serialization. */
12203
+ readonly node?: SceneNode;
11908
12204
  }
11909
12205
  /**
11910
12206
  * Bone hierarchy node for constraint building.
@@ -12268,6 +12564,12 @@ interface ControllerConfig {
12268
12564
  /** Which constraint types to generate and their collision flags */
12269
12565
  constraintOptions: ConstraintBuildOptions;
12270
12566
  }
12567
+ /**
12568
+ * Partial runtime update for JointDynamics controller configuration.
12569
+ *
12570
+ * @public
12571
+ */
12572
+ type ControllerConfigUpdate = DeepPartial<ControllerConfig, 2>;
12271
12573
  /**
12272
12574
  * Stable runtime handle for a JointDynamics collider.
12273
12575
  * @public
@@ -12292,6 +12594,33 @@ interface JointDynamicsGrabberHandle {
12292
12594
  readonly type: 'grabber';
12293
12595
  readonly id: number;
12294
12596
  }
12597
+ /**
12598
+ * Serializable snapshot of a runtime collider.
12599
+ * @public
12600
+ */
12601
+ interface JointDynamicsColliderSnapshot {
12602
+ r: ColliderR;
12603
+ transform: Nullable<SceneNode>;
12604
+ enabled: boolean;
12605
+ }
12606
+ /**
12607
+ * Serializable snapshot of a runtime flat plane.
12608
+ * @public
12609
+ */
12610
+ interface JointDynamicsFlatPlaneSnapshot {
12611
+ up: Vector3;
12612
+ position: Vector3;
12613
+ enabled: boolean;
12614
+ }
12615
+ /**
12616
+ * Serializable snapshot of a runtime grabber.
12617
+ * @public
12618
+ */
12619
+ interface JointDynamicsGrabberSnapshot {
12620
+ r: GrabberR;
12621
+ transform: Nullable<SceneNode>;
12622
+ enabled: boolean;
12623
+ }
12295
12624
  /**
12296
12625
  * High-level controller for joint dynamics simulation.
12297
12626
  *
@@ -12322,6 +12651,10 @@ declare class JointDynamicsSystemController {
12322
12651
  private _previousRootPosition;
12323
12652
  private _previousRootRotation;
12324
12653
  private _rootTransform;
12654
+ private _rootPoints;
12655
+ private _allPoints;
12656
+ private _parentMap;
12657
+ private _maxPointDepth;
12325
12658
  private _pointTransforms;
12326
12659
  private _colliderTransforms;
12327
12660
  private _grabberTransforms;
@@ -12331,6 +12664,10 @@ declare class JointDynamicsSystemController {
12331
12664
  private _colliderHandleToIndex;
12332
12665
  private _flatPlaneHandleToIndex;
12333
12666
  private _grabberHandleToIndex;
12667
+ private _baseSystemScale;
12668
+ private _currentSystemScale;
12669
+ private _basePointParentLengths;
12670
+ private _baseConstraintLengths;
12334
12671
  private _nextColliderHandleId;
12335
12672
  private _nextFlatPlaneHandleId;
12336
12673
  private _nextGrabberHandleId;
@@ -12376,6 +12713,42 @@ declare class JointDynamicsSystemController {
12376
12713
  position: Vector3;
12377
12714
  rotation: Quaternion;
12378
12715
  }>;
12716
+ /**
12717
+ * Returns a detached snapshot of the current runtime configuration.
12718
+ */
12719
+ getConfig(): ControllerConfig;
12720
+ /**
12721
+ * Returns detached collider snapshots for persistence.
12722
+ */
12723
+ getColliderSnapshots(): JointDynamicsColliderSnapshot[];
12724
+ /**
12725
+ * Returns detached flat-plane snapshots for persistence.
12726
+ */
12727
+ getFlatPlaneSnapshots(): JointDynamicsFlatPlaneSnapshot[];
12728
+ /**
12729
+ * Returns detached grabber snapshots for persistence.
12730
+ */
12731
+ getGrabberSnapshots(): JointDynamicsGrabberSnapshot[];
12732
+ /**
12733
+ * Replaces the runtime configuration.
12734
+ *
12735
+ * If the controller is already initialized, cached per-point parameters and generated
12736
+ * constraints are refreshed immediately so editor-driven changes take effect in the next step.
12737
+ *
12738
+ * @param config - Complete controller configuration to apply.
12739
+ */
12740
+ setConfig(config: ControllerConfig): void;
12741
+ /**
12742
+ * Applies a partial runtime configuration update.
12743
+ *
12744
+ * This is intended for editor workflows that tweak one or more simulation parameters live.
12745
+ * The controller updates only the affected caches: global step parameters are applied directly,
12746
+ * per-point curve/gravity changes rebuild cached point coefficients, and constraint option
12747
+ * changes rebuild the generated constraints.
12748
+ *
12749
+ * @param config - Partial configuration update.
12750
+ */
12751
+ updateConfig(config: ControllerConfigUpdate): void;
12379
12752
  /**
12380
12753
  * Compensates for teleportation by resetting the previous root transform to the current one.
12381
12754
  * Call this after a character warp or teleport to avoid a large root-motion impulse on the
@@ -12557,6 +12930,7 @@ declare class JointDynamicsSystemController {
12557
12930
  /** Gets the number of runtime grabbers. */
12558
12931
  get grabberCount(): number;
12559
12932
  private _computeBlendRatio;
12933
+ private _refreshCachedSimulationConfig;
12560
12934
  private _getColliderIndex;
12561
12935
  private _getGrabberIndex;
12562
12936
  private _getFlatPlaneIndex;
@@ -12565,9 +12939,17 @@ declare class JointDynamicsSystemController {
12565
12939
  private _rebuildFlatPlaneHandleMap;
12566
12940
  private _rebuildActiveFlatPlanes;
12567
12941
  private _rebuildGrabberHandleMap;
12942
+ private _rebuildConstraints;
12943
+ private _getSystemUniformScale;
12944
+ private _updateScaleDependentParameters;
12945
+ private _refreshPointParameters;
12568
12946
  private _createPointR;
12947
+ private _applyConfigToPoint;
12569
12948
  private _createPointRW;
12570
12949
  private _createColliderRW;
12950
+ private _cloneControllerConfig;
12951
+ private _cloneInterpolatorScalar;
12952
+ private _sanitizeControllerConfig;
12571
12953
  }
12572
12954
 
12573
12955
  /**
@@ -12578,7 +12960,7 @@ declare class JointDynamicsSystemController {
12578
12960
  *
12579
12961
  * @public
12580
12962
  */
12581
- declare function createTransformAccess(obj: SceneNode): TransformAccess;
12963
+ declare function createTransformAccess(obj: SceneNode, exposeNode?: boolean): TransformAccess;
12582
12964
  /**
12583
12965
  * Describes the bone chains simulated by a JointDynamicsSystem.
12584
12966
  *
@@ -12618,6 +13000,8 @@ type JointDynamicSystemConfig = {
12618
13000
  */
12619
13001
  declare class JointDynamicsSystem {
12620
13002
  private _controller;
13003
+ private _chainConfig;
13004
+ private _bindPose;
12621
13005
  /**
12622
13006
  * Create a joint dynamics system for one or more bone chains.
12623
13007
  *
@@ -12645,10 +13029,30 @@ declare class JointDynamicsSystem {
12645
13029
  * @returns The underlying joint dynamics controller.
12646
13030
  */
12647
13031
  get controller(): JointDynamicsSystemController;
13032
+ /**
13033
+ * Get the node chain topology used to construct this system.
13034
+ */
13035
+ get chainConfig(): JointChainConfig;
13036
+ /**
13037
+ * Returns detached collider snapshots for serialization.
13038
+ */
13039
+ getColliderSnapshots(): JointDynamicsColliderSnapshot[];
13040
+ /**
13041
+ * Returns detached flat-plane snapshots for serialization.
13042
+ */
13043
+ getFlatPlaneSnapshots(): JointDynamicsFlatPlaneSnapshot[];
13044
+ /**
13045
+ * Returns detached grabber snapshots for serialization.
13046
+ */
13047
+ getGrabberSnapshots(): JointDynamicsGrabberSnapshot[];
13048
+ /**
13049
+ * Reset chain nodes to bind pose
13050
+ */
13051
+ resetChains(): void;
12648
13052
  /**
12649
13053
  * Add a fully configured collider at runtime.
12650
13054
  *
12651
- * The collider transform is read from the supplied scene node every simulation step.
13055
+ * The collider transform is read from the supplied scene node every simula ; ion step.
12652
13056
  * If no transform is supplied, the collider is created at the identity transform.
12653
13057
  *
12654
13058
  * @param r - Read-only collider parameters.
@@ -12816,7 +13220,7 @@ declare class JointDynamicsModifier extends SkeletonModifier {
12816
13220
  /**
12817
13221
  * Apply spring physics to skeleton joints.
12818
13222
  */
12819
- apply(_skeleton: Skeleton, deltaTime: number): void;
13223
+ apply(_skeleton: SkeletonRig, deltaTime: number): void;
12820
13224
  /**
12821
13225
  * Reset the spring system to initial state.
12822
13226
  */
@@ -12832,6 +13236,15 @@ declare class JointDynamicsModifier extends SkeletonModifier {
12832
13236
  * @public
12833
13237
  */
12834
13238
  type MeshUpdateCallback = (frameId: number, elapsedInSeconds: number, deltaInSeconds: number) => void;
13239
+ /**
13240
+ * Bounding data used to update a mesh's local bounding box after morph target weights change.
13241
+ *
13242
+ * @public
13243
+ */
13244
+ interface MorphBoundingInfo {
13245
+ targetBoxes: BoundingBox[];
13246
+ originBox: BoundingBox;
13247
+ }
12835
13248
  declare const MeshBase: typeof GraphNode & _zephyr3d_base.GenericConstructor<{
12836
13249
  getNode(): SceneNode;
12837
13250
  } & _zephyr3d_base.Disposable> & (new (...args: any[]) => IMixinDrawable) & (new (...args: any[]) => _zephyr3d_base.IEventTarget<{
@@ -12865,6 +13278,8 @@ declare class Mesh extends MeshBase implements BatchDrawable {
12865
13278
  setPickTarget(node: SceneNode, label?: string): void;
12866
13279
  get skeletonName(): string;
12867
13280
  set skeletonName(name: string);
13281
+ get skinBindingName(): string;
13282
+ set skinBindingName(name: string);
12868
13283
  /** Wether the mesh node casts shadows */
12869
13284
  get castShadow(): boolean;
12870
13285
  set castShadow(b: boolean);
@@ -12887,6 +13302,15 @@ declare class Mesh extends MeshBase implements BatchDrawable {
12887
13302
  * Gets the bounding box for animation
12888
13303
  */
12889
13304
  getAnimatedBoundingBox(): BoundingBox | null;
13305
+ /**
13306
+ * Sets morph target bounding data used to update the animated bounding box when weights change.
13307
+ * @param info - Morph target bounding data
13308
+ */
13309
+ setMorphBoundingInfo(info: Nullable<MorphBoundingInfo>): void;
13310
+ /**
13311
+ * Gets morph target bounding data.
13312
+ */
13313
+ getMorphBoundingInfo(): Nullable<MorphBoundingInfo>;
12890
13314
  /**
12891
13315
  * Sets the texture that contains the bone matrices for skeletal animation
12892
13316
  * @param matrices - The texture that contains the bone matrices
@@ -12928,6 +13352,12 @@ declare class Mesh extends MeshBase implements BatchDrawable {
12928
13352
  * @returns The name of the morph target, or null if not found
12929
13353
  */
12930
13354
  getMorphTargetName(index: number): Nullable<string>;
13355
+ /**
13356
+ * Get the index of the morph target by name
13357
+ * @param name - The name of the morph target
13358
+ * @returns The index of the morph target, or -1 if not found
13359
+ */
13360
+ getMorphTargetIndexByName(name: string): number;
12931
13361
  /**
12932
13362
  * Update morph target weight
12933
13363
  *
@@ -12935,6 +13365,13 @@ declare class Mesh extends MeshBase implements BatchDrawable {
12935
13365
  * @param weight - The weight of the morph target
12936
13366
  */
12937
13367
  setMorphWeight(name: string, weight: number): void;
13368
+ /**
13369
+ * Update morph target weight by index
13370
+ *
13371
+ * @param index - The index of the morph target
13372
+ * @param weight - The weight of the morph target
13373
+ */
13374
+ setMorphWeightByIndex(index: number, weight: number): void;
12938
13375
  /**
12939
13376
  * Get morph target weight
12940
13377
  *
@@ -12943,7 +13380,7 @@ declare class Mesh extends MeshBase implements BatchDrawable {
12943
13380
  */
12944
13381
  getMorphWeight(name: string): number;
12945
13382
  /**
12946
- * Update morph target weight
13383
+ * Update morph target weights
12947
13384
  *
12948
13385
  * @param weight - The morph target weights. The length must not exceed the mesh's morph target count.
12949
13386
  */
@@ -13008,9 +13445,7 @@ declare class BatchGroup extends GraphNode {
13008
13445
  * @param scene - The scene to which the mesh node belongs
13009
13446
  */
13010
13447
  constructor(scene: Scene);
13011
- /**
13012
- * {@inheritDoc Drawable.getName}
13013
- */
13448
+ /** Gets the batch group name. */
13014
13449
  getName(): string;
13015
13450
  /**
13016
13451
  * {@inheritDoc SceneNode.isBatchGroup}
@@ -13242,16 +13677,71 @@ declare class NamedObject {
13242
13677
  */
13243
13678
  constructor(name: string);
13244
13679
  }
13680
+ /**
13681
+ * Texture sampler settings for model loading.
13682
+ * @public
13683
+ */
13684
+ interface AssetSamplerInfo {
13685
+ wrapS: TextureAddressMode;
13686
+ wrapT: TextureAddressMode;
13687
+ magFilter: TextureFilterMode;
13688
+ mipFilter: TextureFilterMode;
13689
+ minFilter: TextureFilterMode;
13690
+ }
13691
+ /**
13692
+ * Image payload information for model loading.
13693
+ * @public
13694
+ */
13695
+ interface AssetImageInfo {
13696
+ uri?: string;
13697
+ data?: Uint8Array<ArrayBuffer>;
13698
+ mimeType?: string;
13699
+ }
13700
+ /**
13701
+ * Vertex buffer payload information for model loading.
13702
+ * @public
13703
+ */
13704
+ interface AssetVertexBufferInfo {
13705
+ attrib: VertexAttribFormat;
13706
+ data: TypedArray;
13707
+ }
13708
+ /**
13709
+ * Primitive geometry information for model loading.
13710
+ * @public
13711
+ */
13712
+ interface AssetPrimitiveInfo {
13713
+ vertices: Record<VertexSemantic, {
13714
+ format: VertexAttribFormat;
13715
+ data: TypedArray;
13716
+ }>;
13717
+ indices: Nullable<Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>>;
13718
+ indexCount: number;
13719
+ type: PrimitiveType;
13720
+ boxMin: Vector3;
13721
+ boxMax: Vector3;
13722
+ path?: string;
13723
+ }
13245
13724
  /**
13246
13725
  * Texture information for model loading
13247
13726
  * @public
13248
13727
  */
13249
- interface MaterialTextureInfo {
13250
- texture: Nullable<Texture2D>;
13251
- sampler: Nullable<TextureSampler>;
13728
+ interface AssetTextureInfo {
13729
+ image: Nullable<AssetImageInfo>;
13730
+ sRGB?: boolean;
13731
+ sampler: Nullable<AssetSamplerInfo>;
13252
13732
  texCoord: number;
13253
13733
  transform: Nullable<Matrix4x4>;
13254
13734
  }
13735
+ /**
13736
+ * Resolved material texture information.
13737
+ * @public
13738
+ */
13739
+ interface MaterialTextureInfo {
13740
+ texture: Texture2D;
13741
+ sampler: TextureSampler;
13742
+ texCoord: number;
13743
+ transform: Matrix4x4;
13744
+ }
13255
13745
  /**
13256
13746
  * Common properties of material for model loading
13257
13747
  * @public
@@ -13263,12 +13753,12 @@ interface AssetMaterialCommon {
13263
13753
  alphaMode?: 'blend' | 'mask';
13264
13754
  alphaCutoff?: number;
13265
13755
  doubleSided?: boolean;
13266
- normalMap?: Nullable<MaterialTextureInfo>;
13756
+ normalMap?: AssetTextureInfo;
13267
13757
  bumpScale?: number;
13268
- emissiveMap?: Nullable<MaterialTextureInfo>;
13758
+ emissiveMap?: AssetTextureInfo;
13269
13759
  emissiveColor?: Vector3;
13270
13760
  emissiveStrength?: number;
13271
- occlusionMap?: Nullable<MaterialTextureInfo>;
13761
+ occlusionMap?: AssetTextureInfo;
13272
13762
  occlusionStrength?: number;
13273
13763
  }
13274
13764
  /**
@@ -13278,13 +13768,15 @@ interface AssetMaterialCommon {
13278
13768
  interface AssetMaterial {
13279
13769
  type: string;
13280
13770
  common: AssetMaterialCommon;
13771
+ path?: string;
13772
+ material?: DRef<MeshMaterial>;
13281
13773
  }
13282
13774
  /**
13283
13775
  * Unlit related material properties for model loading
13284
13776
  * @public
13285
13777
  */
13286
13778
  interface AssetUnlitMaterial extends AssetMaterial {
13287
- diffuseMap?: Nullable<MaterialTextureInfo>;
13779
+ diffuseMap?: AssetTextureInfo;
13288
13780
  diffuse?: Vector4;
13289
13781
  }
13290
13782
  /**
@@ -13293,9 +13785,9 @@ interface AssetUnlitMaterial extends AssetMaterial {
13293
13785
  */
13294
13786
  interface AssetMaterialSheen {
13295
13787
  sheenColorFactor?: Vector3;
13296
- sheenColorMap?: Nullable<MaterialTextureInfo>;
13788
+ sheenColorMap?: AssetTextureInfo;
13297
13789
  sheenRoughnessFactor?: number;
13298
- sheenRoughnessMap?: Nullable<MaterialTextureInfo>;
13790
+ sheenRoughnessMap?: AssetTextureInfo;
13299
13791
  }
13300
13792
  /**
13301
13793
  * Clearcoat related material properties for model loading
@@ -13303,10 +13795,10 @@ interface AssetMaterialSheen {
13303
13795
  */
13304
13796
  interface AssetMaterialClearcoat {
13305
13797
  clearCoatFactor?: number;
13306
- clearCoatIntensityMap?: Nullable<MaterialTextureInfo>;
13798
+ clearCoatIntensityMap?: AssetTextureInfo;
13307
13799
  clearCoatRoughnessFactor?: number;
13308
- clearCoatRoughnessMap?: Nullable<MaterialTextureInfo>;
13309
- clearCoatNormalMap?: Nullable<MaterialTextureInfo>;
13800
+ clearCoatRoughnessMap?: AssetTextureInfo;
13801
+ clearCoatNormalMap?: AssetTextureInfo;
13310
13802
  }
13311
13803
  /**
13312
13804
  * Transmission related material properties for model loading
@@ -13314,9 +13806,9 @@ interface AssetMaterialClearcoat {
13314
13806
  */
13315
13807
  interface AssetMaterialTransmission {
13316
13808
  transmissionFactor?: number;
13317
- transmissionMap?: Nullable<MaterialTextureInfo>;
13809
+ transmissionMap?: AssetTextureInfo;
13318
13810
  thicknessFactor?: number;
13319
- thicknessMap?: Nullable<MaterialTextureInfo>;
13811
+ thicknessMap?: AssetTextureInfo;
13320
13812
  attenuationColor?: Vector3;
13321
13813
  attenuationDistance?: number;
13322
13814
  }
@@ -13326,11 +13818,11 @@ interface AssetMaterialTransmission {
13326
13818
  */
13327
13819
  interface AssetMaterialIridescence {
13328
13820
  iridescenceFactor?: number;
13329
- iridescenceMap?: Nullable<MaterialTextureInfo>;
13821
+ iridescenceMap?: AssetTextureInfo;
13330
13822
  iridescenceIor?: number;
13331
13823
  iridescenceThicknessMinimum?: number;
13332
13824
  iridescenceThicknessMaximum?: number;
13333
- iridescenceThicknessMap?: Nullable<MaterialTextureInfo>;
13825
+ iridescenceThicknessMap?: AssetTextureInfo;
13334
13826
  }
13335
13827
  /**
13336
13828
  * PBR related material properties for model loading
@@ -13346,11 +13838,11 @@ interface AssetPBRMaterialCommon extends AssetUnlitMaterial {
13346
13838
  interface AssetPBRMaterialMR extends AssetPBRMaterialCommon {
13347
13839
  metallic?: number;
13348
13840
  roughness?: number;
13349
- metallicMap?: Nullable<MaterialTextureInfo>;
13841
+ metallicMap?: AssetTextureInfo;
13350
13842
  metallicIndex?: number;
13351
13843
  roughnessIndex?: number;
13352
- specularMap?: Nullable<MaterialTextureInfo>;
13353
- specularColorMap?: Nullable<MaterialTextureInfo>;
13844
+ specularMap?: AssetTextureInfo;
13845
+ specularColorMap?: AssetTextureInfo;
13354
13846
  specularFactor?: Vector4;
13355
13847
  sheen?: AssetMaterialSheen;
13356
13848
  clearcoat?: AssetMaterialClearcoat;
@@ -13364,16 +13856,15 @@ interface AssetPBRMaterialMR extends AssetPBRMaterialCommon {
13364
13856
  interface AssetPBRMaterialSG extends AssetPBRMaterialCommon {
13365
13857
  specular?: Vector3;
13366
13858
  glossness?: number;
13367
- specularGlossnessMap?: Nullable<MaterialTextureInfo>;
13859
+ specularGlossnessMap?: AssetTextureInfo;
13368
13860
  }
13369
13861
  /**
13370
13862
  * Sub mesh data interface for model loading
13371
13863
  * @public
13372
13864
  */
13373
13865
  interface AssetSubMeshData {
13374
- primitive: DRef<Primitive>;
13375
- material: DRef<MeshMaterial>;
13376
- mesh?: Mesh;
13866
+ primitive: Nullable<AssetPrimitiveInfo>;
13867
+ material: Nullable<AssetMaterial>;
13377
13868
  rawPositions: Nullable<Float32Array>;
13378
13869
  rawBlendIndices: Nullable<TypedArray>;
13379
13870
  rawJointWeights: Nullable<TypedArray>;
@@ -13391,9 +13882,35 @@ interface AssetSubMeshData {
13391
13882
  * @public
13392
13883
  */
13393
13884
  interface AssetMeshData {
13394
- morphWeights?: Nullable<number[]>;
13885
+ morphWeights?: number[];
13886
+ morphNames?: string[];
13395
13887
  subMeshes: AssetSubMeshData[];
13396
13888
  }
13889
+ /**
13890
+ * Morph target binding in a model-level expression/group.
13891
+ * @public
13892
+ */
13893
+ interface AssetMorphTargetBinding {
13894
+ /** Restrict this binding to runtime meshes created from this asset node. */
13895
+ node?: AssetHierarchyNode;
13896
+ /** Restrict this binding to runtime meshes created from this asset mesh. */
13897
+ mesh?: AssetMeshData;
13898
+ /** Morph target index in the source mesh. */
13899
+ targetIndex?: number;
13900
+ /** Morph target name in the source mesh. */
13901
+ targetName?: string;
13902
+ /** Weight contributed by this binding when the group weight is 1. */
13903
+ weight: number;
13904
+ }
13905
+ /**
13906
+ * Model-level morph target group, commonly used as a complete facial expression.
13907
+ * @public
13908
+ */
13909
+ interface AssetMorphTargetGroup {
13910
+ name: string;
13911
+ bindings: AssetMorphTargetBinding[];
13912
+ isBinary?: boolean;
13913
+ }
13397
13914
  /**
13398
13915
  * Animation track interface for model loading
13399
13916
  * @public
@@ -13405,8 +13922,16 @@ interface AssetAnimationTrack {
13405
13922
  defaultMorphWeights?: number[];
13406
13923
  }
13407
13924
  /**
13408
- * Fixed-frame geometry cache animation track data.
13409
- *
13925
+ * A single geometry cache frame.
13926
+ * @public
13927
+ */
13928
+ interface AssetGeometryCacheFrame {
13929
+ positions: Float32Array;
13930
+ normals?: Nullable<Float32Array>;
13931
+ boundingBox: BoundingBox;
13932
+ }
13933
+ /**
13934
+ * Fixed-vertex geometry cache animation track information.
13410
13935
  * @public
13411
13936
  */
13412
13937
  interface AssetFixedGeometryCacheAnimationTrack {
@@ -13415,11 +13940,10 @@ interface AssetFixedGeometryCacheAnimationTrack {
13415
13940
  codec?: 'fixed';
13416
13941
  subMeshIndex: number;
13417
13942
  times: Float32Array;
13418
- frames: FixedGeometryCacheFrame[];
13943
+ frames: AssetGeometryCacheFrame[];
13419
13944
  }
13420
13945
  /**
13421
- * PCA-compressed geometry cache animation track data.
13422
- *
13946
+ * PCA-compressed geometry cache animation track information.
13423
13947
  * @public
13424
13948
  */
13425
13949
  interface AssetPCAGeometryCacheAnimationTrack {
@@ -13438,8 +13962,7 @@ interface AssetPCAGeometryCacheAnimationTrack {
13438
13962
  normalCoefficients?: Nullable<Float32Array[]>;
13439
13963
  }
13440
13964
  /**
13441
- * Geometry cache animation track data.
13442
- *
13965
+ * Geometry cache animation track information.
13443
13966
  * @public
13444
13967
  */
13445
13968
  type AssetGeometryCacheAnimationTrack = AssetFixedGeometryCacheAnimationTrack | AssetPCAGeometryCacheAnimationTrack;
@@ -13501,18 +14024,17 @@ declare class AssetHierarchyNode extends NamedObject {
13501
14024
  private _mesh;
13502
14025
  private _skeleton;
13503
14026
  private _attachToSkeleton;
13504
- private _meshAttached;
13505
14027
  private _matrix;
13506
14028
  private _worldMatrix;
13507
14029
  private _weights;
13508
14030
  private readonly _children;
13509
- private readonly _instances?;
14031
+ private readonly _instances;
13510
14032
  /**
13511
14033
  * Creates an instance of AssetHierarchyNode
13512
14034
  * @param name - Name of the node
13513
14035
  * @param parent - Parent of the node
13514
14036
  */
13515
- constructor(name: string, parent?: Nullable<AssetHierarchyNode>);
14037
+ constructor(name: string, model: SharedModel, parent?: AssetHierarchyNode);
13516
14038
  /** Parent of the node */
13517
14039
  get parent(): Nullable<AssetHierarchyNode>;
13518
14040
  /** Local transformation matrix of the node */
@@ -13527,7 +14049,7 @@ declare class AssetHierarchyNode extends NamedObject {
13527
14049
  t: Vector3;
13528
14050
  s: Vector3;
13529
14051
  r: Quaternion;
13530
- }[] | null;
14052
+ }[];
13531
14053
  /** Default morph target weights */
13532
14054
  get weights(): Nullable<number[]>;
13533
14055
  set weights(val: Nullable<number[]>);
@@ -13543,12 +14065,13 @@ declare class AssetHierarchyNode extends NamedObject {
13543
14065
  /** The scale of the node */
13544
14066
  get scaling(): Vector3;
13545
14067
  set scaling(val: Vector3);
13546
- /** true if the node is parent of a mesh node */
13547
- get meshAttached(): boolean;
13548
14068
  /** Children of the node */
13549
14069
  get children(): AssetHierarchyNode[];
13550
14070
  /** The skeleton to which the node belongs if this is a joint node */
13551
14071
  get skeletonAttached(): Nullable<Set<AssetSkeleton>>;
14072
+ isParentOf(child: Nullable<AssetHierarchyNode>): boolean;
14073
+ getWorldPosition(): Vector3;
14074
+ computeTransforms(parentTransform: Nullable<Matrix4x4>): void;
13552
14075
  /**
13553
14076
  * Adds a child to this node
13554
14077
  * @param child - The child node to be added
@@ -13594,6 +14117,7 @@ declare class AssetSkeleton extends NamedObject {
13594
14117
  * @param inverseBindMatrix - Inverse binding matrix of the joint
13595
14118
  */
13596
14119
  addJoint(joint: AssetHierarchyNode, inverseBindMatrix: Matrix4x4): void;
14120
+ get root(): AssetHierarchyNode;
13597
14121
  }
13598
14122
  /**
13599
14123
  * Scene for model loading
@@ -13608,6 +14132,115 @@ declare class AssetScene extends NamedObject {
13608
14132
  */
13609
14133
  constructor(name: string);
13610
14134
  }
14135
+ /**
14136
+ * Spring bone collider shape information.
14137
+ * @public
14138
+ */
14139
+ type AssetSpringBoneColliderShape = {
14140
+ type: 'sphere';
14141
+ offset: Vector3;
14142
+ radius: number;
14143
+ inside?: boolean;
14144
+ } | {
14145
+ type: 'capsule';
14146
+ offset: Vector3;
14147
+ tail: Vector3;
14148
+ radius: number;
14149
+ inside?: boolean;
14150
+ } | {
14151
+ type: 'plane';
14152
+ offset: Vector3;
14153
+ normal: Vector3;
14154
+ };
14155
+ /**
14156
+ * Spring bone collider information.
14157
+ * @public
14158
+ */
14159
+ interface AssetSpringBoneCollider {
14160
+ name?: string;
14161
+ node: AssetHierarchyNode;
14162
+ shape: AssetSpringBoneColliderShape;
14163
+ }
14164
+ /**
14165
+ * Spring bone collider group information.
14166
+ * @public
14167
+ */
14168
+ interface AssetSpringBoneColliderGroup {
14169
+ name?: string;
14170
+ colliders: AssetSpringBoneCollider[];
14171
+ }
14172
+ /**
14173
+ * Spring bone joint information.
14174
+ * @public
14175
+ */
14176
+ interface AssetSpringBoneJoint {
14177
+ node: AssetHierarchyNode;
14178
+ hitRadius: number;
14179
+ stiffness: number;
14180
+ gravityPower: number;
14181
+ gravityDir: Vector3;
14182
+ dragForce: number;
14183
+ }
14184
+ /**
14185
+ * Spring bone chain information.
14186
+ * @public
14187
+ */
14188
+ interface AssetSpringBone {
14189
+ name?: string;
14190
+ center?: AssetHierarchyNode;
14191
+ joints: AssetSpringBoneJoint[];
14192
+ rootBones?: AssetHierarchyNode[];
14193
+ colliderGroups: AssetSpringBoneColliderGroup[];
14194
+ }
14195
+ /**
14196
+ * Joint dynamics collider information.
14197
+ * @public
14198
+ */
14199
+ interface AssetJointDynamicsCollider {
14200
+ name?: string;
14201
+ node: AssetHierarchyNode;
14202
+ localPosition: Vector3;
14203
+ localRotation: Quaternion;
14204
+ collider: ColliderR;
14205
+ }
14206
+ /**
14207
+ * Joint dynamics chain information.
14208
+ * @public
14209
+ */
14210
+ interface AssetJointDynamicsChain {
14211
+ start: AssetHierarchyNode;
14212
+ end: AssetHierarchyNode;
14213
+ }
14214
+ /**
14215
+ * Joint dynamics flat plane information.
14216
+ * @public
14217
+ */
14218
+ interface AssetJointDynamicsFlatPlane {
14219
+ node: AssetHierarchyNode;
14220
+ position: Vector3;
14221
+ up: Vector3;
14222
+ }
14223
+ /**
14224
+ * Joint dynamics spring bone information.
14225
+ * @public
14226
+ */
14227
+ interface AssetJointDynamicsSpringBone {
14228
+ name?: string;
14229
+ center?: AssetHierarchyNode;
14230
+ chains: AssetJointDynamicsChain[];
14231
+ controllerConfig: DeepPartial<ControllerConfig, 2>;
14232
+ colliders: AssetJointDynamicsCollider[];
14233
+ flatPlanes: AssetJointDynamicsFlatPlane[];
14234
+ }
14235
+ /**
14236
+ * Options controlling which model resources are persisted.
14237
+ * @public
14238
+ */
14239
+ type SaveOptions = {
14240
+ importMeshes: boolean;
14241
+ importSkeletons: boolean;
14242
+ importAnimations: boolean;
14243
+ };
13611
14244
  /**
13612
14245
  * Model information that can be shared by multiple model nodes
13613
14246
  * @public
@@ -13615,31 +14248,58 @@ declare class AssetScene extends NamedObject {
13615
14248
  declare class SharedModel extends Disposable {
13616
14249
  /**
13617
14250
  * Creates an instance of SharedModel
13618
- * @param name - Name of the model
13619
14251
  */
13620
- constructor(name?: string);
13621
- /** Name of the model */
13622
- get name(): string;
13623
- set name(val: string);
14252
+ constructor();
13624
14253
  /** All scenes that the model contains */
13625
14254
  get scenes(): AssetScene[];
14255
+ /** All Primitives that the model contains */
14256
+ get primitives(): AssetPrimitiveInfo[];
14257
+ /** All nodes that the model contains */
14258
+ get nodes(): AssetHierarchyNode[];
13626
14259
  /** All animations that the model contains */
13627
14260
  get animations(): AssetAnimationData[];
13628
14261
  /** All skeletons that the model contains */
13629
14262
  get skeletons(): AssetSkeleton[];
13630
- /** All nodes that the model contains */
13631
- get nodes(): AssetHierarchyNode[];
14263
+ /** All SpringBone colliders that the model contains */
14264
+ get springBoneColliders(): AssetSpringBoneCollider[];
14265
+ /** All SpringBone collider groups that the model contains */
14266
+ get springBoneColliderGroups(): AssetSpringBoneColliderGroup[];
14267
+ /** All SpringBone springs that the model contains */
14268
+ get springBones(): AssetSpringBone[];
14269
+ /** SpringBone colliders converted to Zephyr3D JointDynamics collider format */
14270
+ get jointDynamicsColliders(): AssetJointDynamicsCollider[];
14271
+ /** SpringBone springs converted to Zephyr3D JointDynamics system format */
14272
+ get jointDynamicsSpringBones(): AssetJointDynamicsSpringBone[];
14273
+ /** Model-level morph target groups, commonly facial expressions. */
14274
+ get morphTargetGroups(): AssetMorphTargetGroup[];
13632
14275
  /** The active scene of the model */
13633
14276
  get activeScene(): number;
13634
14277
  set activeScene(val: number);
14278
+ getImage(index: number): AssetImageInfo;
14279
+ setImage(index: number, img: AssetImageInfo): void;
14280
+ getMaterial(hash: string): AssetMaterial;
14281
+ setMaterial(hash: string, material: AssetMaterial): void;
14282
+ addPrimitive(prim: AssetPrimitiveInfo): void;
13635
14283
  /**
13636
- * Adds a node to the scene
13637
- * @param parent - Under which node the node should be added
13638
- * @param index - Index of the node
13639
- * @param name - Name of the node
13640
- * @returns The added node
14284
+ * Adds a model-level morph target group.
14285
+ * @param group - Morph target group to add
14286
+ */
14287
+ addMorphTargetGroup(group: AssetMorphTargetGroup): void;
14288
+ /**
14289
+ * Removes all model-level morph target groups.
14290
+ */
14291
+ clearMorphTargetGroups(): void;
14292
+ /**
14293
+ * Finds a model-level morph target group by name.
14294
+ * @param name - Group name
14295
+ * @returns The matching group, or null if not found
14296
+ */
14297
+ getMorphTargetGroup(name: string): Nullable<AssetMorphTargetGroup>;
14298
+ /**
14299
+ * Builds morph target groups by collecting morph target names from every mesh.
14300
+ * @returns Generated morph target groups
13641
14301
  */
13642
- addNode(parent: Nullable<AssetHierarchyNode>, index: number, name: string): AssetHierarchyNode;
14302
+ buildMorphTargetGroupsByName(): AssetMorphTargetGroup[];
13643
14303
  /**
13644
14304
  * Adds a skeleton to the scene
13645
14305
  * @param skeleton - The skeleton to be added
@@ -13650,7 +14310,14 @@ declare class SharedModel extends Disposable {
13650
14310
  * @param animation - The animation to be added
13651
14311
  */
13652
14312
  addAnimation(animation: AssetAnimationData): void;
13653
- createSceneNode(scene: Scene, instancing: boolean): SceneNode;
14313
+ static writePrimitive(vfs: VFS, primitive: AssetPrimitiveInfo, path: string): Promise<void>;
14314
+ /** preprocess */
14315
+ preprocess(manager: ResourceManager, name: string, destPath: string, srcVFS: VFS, dstVFS: VFS): Promise<void>;
14316
+ createJointDynamics(rootNode: SceneNode, nodeMap: Map<AssetHierarchyNode, SceneNode>): void;
14317
+ private createMorphTargetGroups;
14318
+ private getInitialMorphTargetGroupWeight;
14319
+ private getMorphTargetBindingWeight;
14320
+ createSceneNode(manager: ResourceManager, scene: Scene, instancing: boolean, saveMeshes: boolean, saveSkeletons: boolean, saveAnimations: boolean, saveJointDynamics: boolean, srcVFS: VFS): Promise<SceneNode>;
13654
14321
  private remapGeometryCacheFrames;
13655
14322
  private remapPCAGeometryCacheData;
13656
14323
  private reconstructPCAGeometryCacheReference;
@@ -13661,6 +14328,10 @@ declare class SharedModel extends Disposable {
13661
14328
  private geometryCachePositionKey;
13662
14329
  protected onDispose(): void;
13663
14330
  private setAssetNodeToSceneNode;
14331
+ private image2Texture;
14332
+ private createTexture;
14333
+ private createPrimitive;
14334
+ private createMaterial;
13664
14335
  }
13665
14336
 
13666
14337
  /**
@@ -13710,27 +14381,6 @@ declare abstract class AbstractTextureLoader extends LoaderBase {
13710
14381
  */
13711
14382
  abstract load(mimeType: string, data: ArrayBuffer | TypedArray, srgb: boolean, samplerOptions?: SamplerOptions, texture?: Nullable<BaseTexture>): Promise<Nullable<BaseTexture>>;
13712
14383
  }
13713
- /**
13714
- * Base class for any kind of model loaders
13715
- * @public
13716
- */
13717
- declare abstract class AbstractModelLoader extends LoaderBase {
13718
- /**
13719
- * Tests whether the loader supports loading a model with given MIME type.
13720
- * @param mimeType - The MIME type to test
13721
- * @returns true if it supports
13722
- */
13723
- abstract supportMIMEType(mimeType: string): boolean;
13724
- /**
13725
- * Loads a model
13726
- * @param assetManager - The instance of AssetManager
13727
- * @param url - The request URL
13728
- * @param mimeType - MIME type for the model data
13729
- * @param data - The model data
13730
- * @returns The loaded model
13731
- */
13732
- abstract load(assetManager: AssetManager, url: string, mimeType: string, data: Blob, dracoDecoderModule?: DecoderModule, VFSs?: VFS[]): Promise<Nullable<SharedModel>>;
13733
- }
13734
14384
 
13735
14385
  /**
13736
14386
  * Font outline point.
@@ -13776,10 +14426,10 @@ type FontMetrics = {
13776
14426
  glyphCount: number;
13777
14427
  };
13778
14428
 
13779
- type FontAssetFetchOptions = {
13780
- pageSize?: number;
13781
- glyphSize?: number;
13782
- };
14429
+ /**
14430
+ * MSDF atlas settings associated with a font asset.
14431
+ * @public
14432
+ */
13783
14433
  type FontAssetMSDFAtlasSettings = Readonly<{
13784
14434
  pageSize: number;
13785
14435
  glyphSize: number;
@@ -13916,6 +14566,10 @@ type MSDFShape = {
13916
14566
  sourceContours: GlyphContour[];
13917
14567
  };
13918
14568
 
14569
+ /**
14570
+ * Builds an MSDF shape from glyph contours.
14571
+ * @public
14572
+ */
13919
14573
  declare function buildMSDFShape(contours: GlyphContour[]): MSDFShape;
13920
14574
 
13921
14575
  /**
@@ -13928,6 +14582,25 @@ declare function buildMSDFShape(contours: GlyphContour[]): MSDFShape;
13928
14582
  */
13929
14583
  declare function generateMSDF(glyph: GlyphData, options: MSDFOptions): MSDFBitmap;
13930
14584
 
14585
+ /**
14586
+ * Base fetch options
14587
+ *
14588
+ * @public
14589
+ */
14590
+ type BaseFetchOptions = {
14591
+ /**
14592
+ * VFS used to fetch file data
14593
+ */
14594
+ overrideVFS?: VFS;
14595
+ };
14596
+ /**
14597
+ * Options for font fetching.
14598
+ * @public
14599
+ */
14600
+ type FontAssetFetchOptions = BaseFetchOptions & {
14601
+ pageSize?: number;
14602
+ glyphSize?: number;
14603
+ };
13931
14604
  /**
13932
14605
  * Options for texture fetching.
13933
14606
  *
@@ -13936,7 +14609,7 @@ declare function generateMSDF(glyph: GlyphData, options: MSDFOptions): MSDFBitma
13936
14609
  * @typeParam T - Texture type to be returned, extending BaseTexture.
13937
14610
  * @public
13938
14611
  */
13939
- type TextureFetchOptions<T extends BaseTexture> = {
14612
+ type TextureFetchOptions<T extends BaseTexture> = BaseFetchOptions & {
13940
14613
  /**
13941
14614
  * Explicit MIME type hint. If omitted, the type is inferred from file extension via VFS.
13942
14615
  */
@@ -13964,7 +14637,7 @@ type TextureFetchOptions<T extends BaseTexture> = {
13964
14637
  * Provides decoding and instancing hints used by supported model loaders.
13965
14638
  * @public
13966
14639
  */
13967
- type ModelFetchOptions = {
14640
+ type ModelFetchOptions = BaseFetchOptions & {
13968
14641
  /**
13969
14642
  * Explicit MIME type hint for the model. If omitted, inferred from file extension via VFS.
13970
14643
  */
@@ -13978,6 +14651,26 @@ type ModelFetchOptions = {
13978
14651
  * Default is false.
13979
14652
  */
13980
14653
  enableInstancing?: boolean;
14654
+ /**
14655
+ * If true, meshes will be loaded from this model.
14656
+ * Default is true.
14657
+ */
14658
+ loadMeshes?: boolean;
14659
+ /**
14660
+ * If true, rigs and skin bindings will be loaded from this model.
14661
+ * Default is true.
14662
+ */
14663
+ loadSkeletons?: boolean;
14664
+ /**
14665
+ * If true, animations will be loaded from this model.
14666
+ * Default is true.
14667
+ */
14668
+ loadAnimations?: boolean;
14669
+ /**
14670
+ * If true, automatically create joint dynamics (for VRM models only).
14671
+ * Default is true.
14672
+ */
14673
+ loadJointDynamics?: boolean;
13981
14674
  /**
13982
14675
  * Optional post-process callback applied to the loaded SharedModel before creating nodes.
13983
14676
  * Use this to remap materials, merge meshes, or apply custom data transforms.
@@ -14000,6 +14693,14 @@ type ModelInfo = {
14000
14693
  */
14001
14694
  animationSet: AnimationSet;
14002
14695
  };
14696
+ /**
14697
+ * Interface for model importers
14698
+ *
14699
+ * @public
14700
+ */
14701
+ interface ModelLoader {
14702
+ loadModel(path: string, vfs?: VFS): Promise<SharedModel>;
14703
+ }
14003
14704
  /**
14004
14705
  * Centralized asset manager for loading and caching resources.
14005
14706
  *
@@ -14052,12 +14753,8 @@ declare class AssetManager {
14052
14753
  static addTextureLoader(loader: AbstractTextureLoader): void;
14053
14754
  /**
14054
14755
  * Register a model loader (highest priority first).
14055
- *
14056
- * Note: This is a static registry shared by all AssetManager instances.
14057
- *
14058
- * @param loader - A concrete model loader implementation.
14059
14756
  */
14060
- static addModelLoader(loader: AbstractModelLoader): void;
14757
+ setModelLoader(mimeType: string, loader: ModelLoader): void;
14061
14758
  /**
14062
14759
  * Fetch a UTF-8 text resource via VFS.
14063
14760
  *
@@ -14070,7 +14767,7 @@ declare class AssetManager {
14070
14767
  * @param httpRequest - Optional HttpRequest for custom URL resolution/headers.
14071
14768
  * @returns A promise that resolves to the loaded (and optionally processed) text.
14072
14769
  */
14073
- fetchTextData(url: string, postProcess?: (text: string) => string, httpRequest?: HttpRequest, VFSs?: VFS[]): Promise<string>;
14770
+ fetchTextData(url: string, postProcess?: (text: string) => string, httpRequest?: HttpRequest, options?: BaseFetchOptions): Promise<string>;
14074
14771
  /**
14075
14772
  * Fetch a JSON resource via VFS.
14076
14773
  *
@@ -14082,7 +14779,7 @@ declare class AssetManager {
14082
14779
  * @param httpRequest - Optional HttpRequest for custom URL resolution/headers.
14083
14780
  * @returns A promise that resolves to the loaded (and optionally processed) JSON value.
14084
14781
  */
14085
- fetchJsonData<T = any>(url: string, postProcess?: (json: T) => T, httpRequest?: HttpRequest, VFSs?: VFS[]): Promise<T>;
14782
+ fetchJsonData<T = any>(url: string, postProcess?: (json: T) => T, httpRequest?: HttpRequest, options?: BaseFetchOptions): Promise<T>;
14086
14783
  /**
14087
14784
  * Fetch a binary resource via VFS.
14088
14785
  *
@@ -14093,7 +14790,7 @@ declare class AssetManager {
14093
14790
  * @param httpRequest - Optional HttpRequest for custom URL resolution/headers.
14094
14791
  * @returns A promise that resolves to the loaded (and optionally processed) ArrayBuffer.
14095
14792
  */
14096
- fetchBinaryData(url: string, postProcess?: Nullable<(data: ArrayBuffer) => ArrayBuffer>, httpRequest?: Nullable<HttpRequest>, VFSs?: VFS[]): Promise<Nullable<ArrayBuffer>>;
14793
+ fetchBinaryData(url: string, postProcess?: Nullable<(data: ArrayBuffer) => ArrayBuffer>, httpRequest?: Nullable<HttpRequest>, options?: BaseFetchOptions): Promise<Nullable<ArrayBuffer>>;
14097
14794
  /**
14098
14795
  * Fetch a font asset via VFS.
14099
14796
  *
@@ -14105,14 +14802,14 @@ declare class AssetManager {
14105
14802
  * @param options - Optional MSDF atlas settings bound to the loaded FontAsset.
14106
14803
  * @returns A promise that resolves to the loaded (and optionally processed) font asset.
14107
14804
  */
14108
- fetchFontAsset(url: string, options?: FontAssetFetchOptions, VFSs?: VFS[]): Promise<Nullable<FontAsset>>;
14805
+ fetchFontAsset(url: string, options?: FontAssetFetchOptions): Promise<Nullable<FontAsset>>;
14109
14806
  /**
14110
14807
  * Fetch a font asset via VFS if already cached.
14111
14808
  * @param url - Resource URL or VFS path.
14112
14809
  * @returns The cached FontAsset if it exists and is loaded, or null if not cached or still loading.
14113
14810
  */
14114
14811
  getFontAsset(url: string): Nullable<FontAsset>;
14115
- fetchBluePrint(url: string, VFSs?: VFS[]): Promise<Nullable<Record<string, MaterialBlueprintIR>>>;
14812
+ fetchBluePrint(url: string, options?: BaseFetchOptions): Promise<Nullable<Record<string, MaterialBlueprintIR>>>;
14116
14813
  /**
14117
14814
  * Fetch a material resource.
14118
14815
  *
@@ -14120,7 +14817,7 @@ declare class AssetManager {
14120
14817
  * @param url - Resource URL or VFS path.
14121
14818
  * @returns A promise that resolves to the loaded material.
14122
14819
  */
14123
- fetchMaterial<T extends Material = Material>(url: string, VFSs?: VFS[]): Promise<Nullable<T>>;
14820
+ fetchMaterial<T extends Material = Material>(url: string, options?: BaseFetchOptions): Promise<Nullable<T>>;
14124
14821
  /**
14125
14822
  * Fetch a primitive resource.
14126
14823
  *
@@ -14128,7 +14825,7 @@ declare class AssetManager {
14128
14825
  * @param url - Resource URL or VFS path.
14129
14826
  * @returns A promise that resolves to the loaded primitive.
14130
14827
  */
14131
- fetchPrimitive<T extends Primitive = Primitive>(url: string, VFSs?: VFS[]): Promise<Nullable<T>>;
14828
+ fetchPrimitive<T extends Primitive = Primitive>(url: string, options?: BaseFetchOptions): Promise<Nullable<T>>;
14132
14829
  /**
14133
14830
  * Fetch a texture resource via registered loaders.
14134
14831
  *
@@ -14143,24 +14840,8 @@ declare class AssetManager {
14143
14840
  * @param httpRequest - Optional HttpRequest (not used for binary read but may supply URL resolver for hashing).
14144
14841
  * @returns A promise that resolves to the loaded texture.
14145
14842
  */
14146
- fetchTexture<T extends BaseTexture>(url: string, options?: TextureFetchOptions<T>, VFSs?: VFS[]): Promise<T>;
14147
- /**
14148
- * Fetch a model resource and instantiate it under a scene.
14149
- *
14150
- * - Loads or retrieves a cached SharedModel, then creates a SceneNode hierarchy.
14151
- * - Returns both the created group node and any associated AnimationSet.
14152
- *
14153
- * @param scene - Scene into which the model node will be created.
14154
- * @param url - Model URL or VFS path.
14155
- * @param options - Model loader options and instancing hint.
14156
- * @param httpRequest - Optional HttpRequest (unused for binary read; present for API symmetry).
14157
- * @returns A promise with the created node group and animation set info.
14158
- */
14159
- fetchModel(scene: Scene, url: string, options?: ModelFetchOptions, VFSs?: VFS[]): Promise<{
14160
- group: SceneNode;
14161
- animationSet: AnimationSet;
14162
- }>;
14163
- loadPrimitive<T extends Primitive = Primitive>(url: string, VFSs?: VFS[]): Promise<Nullable<T>>;
14843
+ fetchTexture<T extends BaseTexture>(url: string, options?: TextureFetchOptions<T>): Promise<T>;
14844
+ loadPrimitive<T extends Primitive = Primitive>(url: string, vfs?: VFS): Promise<Nullable<T>>;
14164
14845
  reloadBluePrintMaterials(filter?: (m: PBRBluePrintMaterial) => boolean): Promise<void>;
14165
14846
  private loadBluePrintMaterialData;
14166
14847
  private rebuildGraphStructure;
@@ -14178,7 +14859,7 @@ declare class AssetManager {
14178
14859
  order: number[];
14179
14860
  };
14180
14861
  invalidateBluePrint(path: string): void;
14181
- loadBluePrint(path: string, VFSs?: VFS[]): Promise<Record<string, MaterialBlueprintIR> | null>;
14862
+ loadBluePrint(path: string, vfs?: VFS): Promise<Record<string, MaterialBlueprintIR> | null>;
14182
14863
  /**
14183
14864
  * Load a texture directly from an ArrayBuffer or typed array.
14184
14865
  *
@@ -14218,14 +14899,14 @@ declare class AssetManager {
14218
14899
  */
14219
14900
  static setBuiltinTextureLoader(name: string, loader: (assetManager: AssetManager) => BaseTexture): void;
14220
14901
  /**
14221
- * Write file to a list of VFSs
14902
+ * Write file to a VFS
14222
14903
  *
14223
14904
  * @param path - File path
14224
14905
  * @param data - Data to write
14225
14906
  * @param options - Write options
14226
- * @param vfsList - Which VFSs will be written to
14907
+ * @param vfs - VFS to write to
14227
14908
  */
14228
- writeFileToVFSs(path: string, data: ArrayBuffer | string, options: WriteOptions, vfsList?: VFS[]): Promise<void>;
14909
+ writeFileToVFSs(path: string, data: ArrayBuffer | string, options: WriteOptions, vfs?: VFS): Promise<void>;
14229
14910
  }
14230
14911
 
14231
14912
  declare const WaterMaterial_base: typeof MeshMaterial & (new (...args: any[]) => IMixinLight);
@@ -15194,6 +15875,10 @@ declare class MSDFGlyphAtlas extends TextureAtlasManager {
15194
15875
  private createGlyph;
15195
15876
  }
15196
15877
 
15878
+ /**
15879
+ * Manages MSDF glyph atlases for font assets.
15880
+ * @public
15881
+ */
15197
15882
  declare class MSDFTextAtlasManager {
15198
15883
  private readonly _atlases;
15199
15884
  constructor();
@@ -15359,6 +16044,46 @@ type NodeIterateFunc = ((node: SceneNode) => boolean) | ((node: SceneNode) => vo
15359
16044
  * @public
15360
16045
  */
15361
16046
  type SceneNodeVisible = 'visible' | 'inherit' | 'hidden';
16047
+ /**
16048
+ * Runtime morph target binding used by model-level expression groups.
16049
+ * @public
16050
+ */
16051
+ interface SceneMorphTargetBinding {
16052
+ mesh: Mesh;
16053
+ targetIndex?: number;
16054
+ targetName?: string;
16055
+ weight: number;
16056
+ }
16057
+ /**
16058
+ * Runtime morph target group used by model instances.
16059
+ * @public
16060
+ */
16061
+ interface SceneMorphTargetGroup {
16062
+ name: string;
16063
+ bindings: SceneMorphTargetBinding[];
16064
+ isBinary?: boolean;
16065
+ weight?: number;
16066
+ }
16067
+ /**
16068
+ * Serializable morph target binding descriptor.
16069
+ * @public
16070
+ */
16071
+ interface SerializedMorphTargetBinding {
16072
+ meshId: string;
16073
+ targetIndex?: number;
16074
+ targetName?: string;
16075
+ weight: number;
16076
+ }
16077
+ /**
16078
+ * Serializable morph target group descriptor.
16079
+ * @public
16080
+ */
16081
+ interface SerializedMorphTargetGroup {
16082
+ name: string;
16083
+ bindings: SerializedMorphTargetBinding[];
16084
+ isBinary?: boolean;
16085
+ weight?: number;
16086
+ }
15362
16087
  declare const SceneNode_base: (new (...args: any[]) => {
15363
16088
  _listeners: Nullable<{
15364
16089
  nodeattached?: {
@@ -16117,6 +16842,9 @@ declare class SceneNode extends SceneNode_base implements IDisposable {
16117
16842
  */
16118
16843
  get sharedModel(): Nullable<SharedModel>;
16119
16844
  set sharedModel(model: Nullable<SharedModel>);
16845
+ /** Runtime morph target groups bound to this model instance. */
16846
+ get morphTargetGroups(): SceneMorphTargetGroup[];
16847
+ set morphTargetGroups(groups: SceneMorphTargetGroup[]);
16120
16848
  /**
16121
16849
  * Clone this node.
16122
16850
  *
@@ -16255,7 +16983,19 @@ declare class SceneNode extends SceneNode_base implements IDisposable {
16255
16983
  * @param id - Persistent identifier to match against `Skeleton.persistentId`.
16256
16984
  * @returns The first matchign node, or `null` if not found.
16257
16985
  */
16258
- findSkeletonById(id: string): Skeleton | null;
16986
+ findSkeletonById(id: string): SkinBinding | null;
16987
+ /**
16988
+ * Finds a skin binding by its persistent ID.
16989
+ * @param id - Persistent identifier to match against `SkinBinding.persistentId`.
16990
+ * @returns The first matching binding, or `null` if not found.
16991
+ */
16992
+ findSkinBindingById(id: string): SkinBinding | null;
16993
+ /**
16994
+ * Finds a shared skeleton rig by its persistent ID.
16995
+ * @param id - Persistent identifier to match against `SkeletonRig.persistentId`.
16996
+ * @returns The first matching rig, or `null` if not found.
16997
+ */
16998
+ findSkeletonRigById(id: string): SkeletonRig | null;
16259
16999
  /**
16260
17000
  * Finds a scene node by name.
16261
17001
  *
@@ -16275,7 +17015,43 @@ declare class SceneNode extends SceneNode_base implements IDisposable {
16275
17015
  /** Bounding box draw mode */
16276
17016
  get boundingBoxDrawMode(): number;
16277
17017
  set boundingBoxDrawMode(mode: number);
17018
+ /** Returns serialized morph target groups for this node. */
17019
+ getSerializedMorphTargetGroups(): SerializedMorphTargetGroup[];
17020
+ /** Restores serialized morph target groups for this node. */
17021
+ setSerializedMorphTargetGroups(groups: SerializedMorphTargetGroup[]): void;
17022
+ /**
17023
+ * Force transform update and notify descendants.
17024
+ * @param invalidateLocal - If true, also invalidate local matrix; otherwise only invalidate world matrix.
17025
+ */
16278
17026
  invalidateTransform(invalidateLocal?: boolean): void;
17027
+ /**
17028
+ * Set morph target weight by name for all meshes in the subtree.
17029
+ * @param name - Morph target name
17030
+ * @param weight - Morph target weight
17031
+ */
17032
+ setMorphTargetWeight(name: string, weight: number): void;
17033
+ /**
17034
+ * Set morph target group weight for the model instance.
17035
+ * @param name - Morph target group name
17036
+ * @param weight - Group weight
17037
+ */
17038
+ setMorphTargetGroupWeight(name: string, weight: number): void;
17039
+ /**
17040
+ * Get morph target group weight.
17041
+ * @param name - Morph target group name
17042
+ * @returns The group weight, or 0 if no group was found
17043
+ */
17044
+ getMorphTargetGroupWeight(name: string): number;
17045
+ /**
17046
+ * Collect all morph target names from meshes in the subtree.
17047
+ * @returns Array of unique morph target names
17048
+ */
17049
+ collectMorphTargetNames(): string[];
17050
+ /**
17051
+ * Collect all model-level morph target group names.
17052
+ * @returns Array of morph target group names
17053
+ */
17054
+ collectMorphTargetGroupNames(): string[];
16279
17055
  /** Get called when the node was just created by cloning from other node */
16280
17056
  protected onPostClone(): void | Promise<void>;
16281
17057
  /** Disposes the node */
@@ -16529,16 +17305,16 @@ declare class InputManager {
16529
17305
  *
16530
17306
  * Responsibilities:
16531
17307
  * - Resolve logical module IDs to physical paths or URLs.
16532
- * - In editor mode, rewrite import specifiers and serve modules as data URLs after transpile.
17308
+ * - In editor mode, bundle local script modules into a single data URL after transpile.
16533
17309
  * - Transpile TypeScript to JavaScript on the fly (requires `window.ts` TypeScript runtime).
16534
17310
  * - Gather static and dynamic import dependencies for tooling.
16535
17311
  *
16536
17312
  * Modes:
16537
- * - Editor mode (`editorMode === true`): modules are rewritten to data URLs after transpile/build.
17313
+ * - Editor mode (`editorMode === true`): local script graphs are bundled to data URLs.
16538
17314
  * - Runtime mode (`editorMode === false`): returns .js URLs directly (with .ts -\> .js mapping).
16539
17315
  *
16540
17316
  * Caching:
16541
- * - Built modules are memoized in `_built` map keyed by logical ID.
17317
+ * - Built bundles are memoized in `_built` map keyed by canonical source path.
16542
17318
  *
16543
17319
  * @public
16544
17320
  */
@@ -16546,10 +17322,11 @@ declare class ScriptRegistry {
16546
17322
  private _vfs;
16547
17323
  private _scriptsRoot;
16548
17324
  private _built;
17325
+ private _building;
17326
+ private _builtDeps;
16549
17327
  /**
16550
17328
  * @param vfs - The virtual file system for existence checks, reads, and path ops.
16551
17329
  * @param scriptsRoot - Root directory for script resolution (used with `#/` specifiers).
16552
- * @param editorMode - Whether to build modules to data URLs and rewrite imports.
16553
17330
  */
16554
17331
  constructor(vfs: VFS, scriptsRoot: string);
16555
17332
  /**
@@ -16614,56 +17391,31 @@ declare class ScriptRegistry {
16614
17391
  */
16615
17392
  getDependencies(entryId: string, fromId: string, dependencies: Record<string, string>): Promise<void>;
16616
17393
  /**
16617
- * Builds a logical module id into a data URL (editor mode pipeline).
17394
+ * Builds a logical module id into a bundled data URL (editor mode pipeline).
16618
17395
  *
16619
17396
  * Steps:
16620
17397
  * - Resolve source path (.ts/.js) via {@link ScriptRegistry.resolveSourcePath}.
16621
- * - Read source code.
16622
- * - Rewrite import specifiers via {@link ScriptRegistry.rewriteImports}.
16623
- * - Transpile TypeScript if needed via {@link ScriptRegistry.transpile}.
16624
- * - Convert to `data:` URL and memoize in `_built`.
17398
+ * - Collect reachable local imports without recursively building data URLs.
17399
+ * - Transpile local modules to `System.register`.
17400
+ * - Emit a single `data:` URL with a small module loader and memoize it in `_built`.
16625
17401
  *
16626
17402
  * @param id - Logical module id to build.
16627
17403
  * @returns Data URL string for dynamic import, or empty string if not found.
16628
17404
  */
16629
17405
  private build;
17406
+ private buildBundle;
17407
+ private collectModule;
17408
+ private resolveModuleInfo;
17409
+ private getTypeScriptRuntime;
17410
+ private transpileToESModule;
17411
+ private transpileToSystemModule;
16630
17412
  /**
16631
- * Transpiles code to JavaScript and appends sourceURL/sourceMap hints.
16632
- *
16633
- * Behavior:
16634
- * - For `'js'`, returns code with `//# sourceURL=logicalId`.
16635
- * - For `'ts'`, requires `window.ts` (TypeScript compiler) to be present and
16636
- * transpiles to ES2015/ESNext module with inline source maps.
16637
- *
16638
- * @param code - Source code to transpile.
16639
- * @param _id - Logical module id (used for fileName/sourceURL).
16640
- * @param type - Source type (`'js' | 'ts'`).
16641
- * @returns Transpiled JavaScript source.
16642
- * @throws If TypeScript runtime is not found for TS input.
16643
- */
16644
- private transpile;
16645
- /**
16646
- * Rewrites ESM import specifiers in `code` into runtime-loadable URLs.
16647
- *
16648
- * Parsing:
16649
- * - Uses `es-module-lexer` to find import spans; sorts them ascending by start.
16650
- *
16651
- * Replacement rules:
16652
- * - Skip invalid spans or ones without quoted specifiers.
16653
- * - If spec is absolute URL, special URL (data:, blob:), or bare module:
16654
- * - If it starts with `@zephyr3d/`, keep as-is (external).
16655
- * - Otherwise resolve to a logical id and attempt to `build` it (if available).
16656
- * - Else (relative spec), resolve from `fromId` and `build` recursively.
16657
- *
16658
- * Output:
16659
- * - Directly writes the replacement specifier without re-adding quotes,
16660
- * so replacements must themselves be quoted or be valid URLs/data URLs.
16661
- *
16662
- * @param code - Module source code to transform.
16663
- * @param fromId - The logical id of the current module (resolution base for relatives).
16664
- * @returns Transformed source with rewritten import specifiers.
17413
+ * Rewrites local ESM specifiers to canonical source paths and records local deps.
17414
+ * External URLs and package imports are left for the native dynamic import path.
16665
17415
  */
16666
- private rewriteImports;
17416
+ private rewriteImportsToLogicalIds;
17417
+ private resolveImportTarget;
17418
+ private getSystemBundleRuntime;
16667
17419
  /**
16668
17420
  * Resolves a specifier to a logical id suitable for further processing.
16669
17421
  *
@@ -17086,6 +17838,7 @@ declare class ScriptingSystem {
17086
17838
  interface IRenderable extends IDisposable {
17087
17839
  render(): void;
17088
17840
  }
17841
+ type RenderFunc = () => void;
17089
17842
  /**
17090
17843
  * Interface for render hooks to customize rendering behavior.
17091
17844
  *
@@ -17120,7 +17873,7 @@ declare class Engine {
17120
17873
  private _enabled;
17121
17874
  private _screen;
17122
17875
  protected _activeRenderables: {
17123
- renderable: DRef<IRenderable>;
17876
+ renderable: Nullable<RenderFunc> | DRef<IRenderable>;
17124
17877
  hook: Nullable<IRenderHook>;
17125
17878
  }[];
17126
17879
  private _loadingScenes;
@@ -17140,6 +17893,14 @@ declare class Engine {
17140
17893
  * Exposes the virtual file system used by the underlying {@link ScriptingSystem}'s registry.
17141
17894
  */
17142
17895
  get VFS(): VFS;
17896
+ /**
17897
+ * Replaces the virtual file system used by the engine.
17898
+ *
17899
+ * The previous resource manager VFS is closed, the scripting registry is updated,
17900
+ * and built-in assets are remounted on the new VFS.
17901
+ *
17902
+ * @param vfs - New virtual file system.
17903
+ */
17143
17904
  set VFS(vfs: VFS);
17144
17905
  /**
17145
17906
  * Exposes the instance of {@link ResourceManager}.
@@ -17155,7 +17916,7 @@ declare class Engine {
17155
17916
  * Existing scene nodes that still reference this font asset are not updated automatically.
17156
17917
  * Call this only after you have stopped using the font, or when you intentionally want it to rebuild later.
17157
17918
  *
17158
- * @param fontAsset - The loaded font asset to release.
17919
+ * @param font - The loaded font asset path to release.
17159
17920
  * @returns `true` if either the atlas cache or the font cache had an entry to remove.
17160
17921
  */
17161
17922
  releaseFontAsset(font: string): boolean;
@@ -17203,6 +17964,7 @@ declare class Engine {
17203
17964
  * @typeParam T - Host type.
17204
17965
  * @param host - Host object to attach the script to.
17205
17966
  * @param module - Module identifier to resolve and load.
17967
+ * @param config - Optional configuration passed to the script instance.
17206
17968
  * @returns The `RuntimeScript<T>` instance, or `null` if disabled or on failure.
17207
17969
  */
17208
17970
  attachScript<T extends Host>(host: Nullable<T>, module: string, config?: Nullable<RuntimeScriptConfig>): Promise<Nullable<RuntimeScript<T>>>;
@@ -17233,10 +17995,52 @@ declare class Engine {
17233
17995
  * @param elapsedTime - Total elapsed time in Seconds.
17234
17996
  */
17235
17997
  update(deltaTime: number, elapsedTime: number): void;
17998
+ /**
17999
+ * Loads a scene from a file path.
18000
+ *
18001
+ * Concurrent requests for the same normalized path share the same loading promise.
18002
+ * Scripts declared on the scene and its nodes are attached after the scene is loaded.
18003
+ *
18004
+ * @param path - Scene file path in the current VFS.
18005
+ * @returns The loaded scene, or `null` when loading fails.
18006
+ */
17236
18007
  loadSceneFromFile(path: string): Promise<Nullable<Scene>>;
17237
- setRenderable(renderable: Nullable<IRenderable>, layer?: number, hook?: IRenderHook): void;
18008
+ /**
18009
+ * Sets or clears the renderable for a render layer.
18010
+ *
18011
+ * Passing `null` clears the layer. Object renderables are held through a strong reference wrapper,
18012
+ * while render functions are stored directly.
18013
+ *
18014
+ * @param renderable - Renderable object or render function to assign, or `null` to clear.
18015
+ * @param layer - Render layer index. Defaults to `0`.
18016
+ * @param hook - Optional render hook invoked before and after this layer renders.
18017
+ */
18018
+ setRenderable(renderable: Nullable<IRenderable | RenderFunc>, layer?: number, hook?: IRenderHook): void;
18019
+ /**
18020
+ * Reads a file from the current VFS.
18021
+ *
18022
+ * @typeParam T - Requested read encoding.
18023
+ * @param path - File path to read.
18024
+ * @param encoding - Optional read encoding. Defaults to `binary`.
18025
+ * @returns The file content, or `null` when the read fails.
18026
+ */
17238
18027
  readFile<T extends ReadOptions['encoding'] = 'binary'>(path: string, encoding?: T): Promise<(T extends "binary" ? ArrayBuffer : string) | null>;
18028
+ /**
18029
+ * Starts the runtime by optionally showing a splash screen, running a startup script,
18030
+ * and loading the startup scene.
18031
+ *
18032
+ * @param startupScene - Optional scene path rendered on layer `0` after startup completes.
18033
+ * @param splashScreen - Optional scene path rendered on a temporary splash layer during startup.
18034
+ * @param startupScript - Optional startup script module path. A trailing `.ts` or `.js`
18035
+ * extension is removed before loading.
18036
+ */
17239
18037
  startup(startupScene?: Nullable<string>, splashScreen?: Nullable<string>, startupScript?: Nullable<string>): Promise<void>;
18038
+ /**
18039
+ * Renders all active render layers.
18040
+ *
18041
+ * Each layer's `beforeRender` hook can return `false` to skip rendering that layer.
18042
+ * The `afterRender` hook is invoked after the render attempt.
18043
+ */
17240
18044
  render(): void;
17241
18045
  private ensureBuiltinVFS;
17242
18046
  private createBuiltinVFS;
@@ -18247,6 +19051,13 @@ declare class ResourceManager {
18247
19051
  *
18248
19052
  */
18249
19053
  setAssetId(asset: unknown, id?: Nullable<string>): void;
19054
+ /**
19055
+ * Register a model loader.
19056
+ *
19057
+ * @param mimeType - What MIME type of files this loader can load
19058
+ * @param loader - A concrete model loader implementation.
19059
+ */
19060
+ setModelLoader(mimeType: string, loader: ModelLoader): void;
18250
19061
  /**
18251
19062
  * Fetch a binary asset by ID via the asset manager.
18252
19063
  *
@@ -18258,7 +19069,7 @@ declare class ResourceManager {
18258
19069
  *
18259
19070
  * @returns A Promise that resolves to the binary content, or `null` if not found.
18260
19071
  */
18261
- fetchBinary(path: string): Promise<Nullable<ArrayBuffer>>;
19072
+ fetchBinary(path: string, options?: BaseFetchOptions): Promise<Nullable<ArrayBuffer>>;
18262
19073
  /**
18263
19074
  * Fetch a text asset by ID via the asset manager.
18264
19075
  *
@@ -18334,10 +19145,7 @@ declare class ResourceManager {
18334
19145
  *
18335
19146
  * @returns A Promise resolving to the loaded model object, or `null` if failed.
18336
19147
  */
18337
- fetchModel(path: string, scene: Scene, options?: ModelFetchOptions): Promise<{
18338
- group: SceneNode;
18339
- animationSet: AnimationSet;
18340
- }>;
19148
+ fetchModel(path: string, scene: Scene, options?: ModelFetchOptions): Promise<SceneNode | undefined>;
18341
19149
  /**
18342
19150
  * Load a texture directly from an ArrayBuffer or typed array.
18343
19151
  *
@@ -18369,7 +19177,7 @@ declare class ResourceManager {
18369
19177
  *
18370
19178
  * @returns A Promise resolving to the loaded material, or `null` if failed.
18371
19179
  */
18372
- fetchMaterial<T extends Material = MeshMaterial>(path: string): Promise<Nullable<T>>;
19180
+ fetchMaterial<T extends Material = MeshMaterial>(path: string, options?: BaseFetchOptions): Promise<Nullable<T>>;
18373
19181
  /**
18374
19182
  * Reload specific blue print materials
18375
19183
  *
@@ -18389,7 +19197,7 @@ declare class ResourceManager {
18389
19197
  *
18390
19198
  * @returns A Promise resolving to the loaded primitive, or `null` if failed.
18391
19199
  */
18392
- fetchPrimitive<T extends Primitive = Primitive>(path: string): Promise<Nullable<T>>;
19200
+ fetchPrimitive<T extends Primitive = Primitive>(path: string, options?: BaseFetchOptions): Promise<Nullable<T>>;
18393
19201
  /**
18394
19202
  * Load a prefab content.
18395
19203
  * @param path - Path to the prefab JSON file in VFS.
@@ -21657,6 +22465,7 @@ declare class TextureSampleGrad extends BaseGraphNode {
21657
22465
 
21658
22466
  /**
21659
22467
  * Vertex output node
22468
+ * @public
21660
22469
  */
21661
22470
  declare class VertexOutputNode extends BaseGraphNode {
21662
22471
  private _index;
@@ -21688,6 +22497,7 @@ declare class VertexOutputNode extends BaseGraphNode {
21688
22497
  }
21689
22498
  /**
21690
22499
  * Vertex index input node
22500
+ * @public
21691
22501
  */
21692
22502
  declare class VertexIndexNode extends BaseGraphNode {
21693
22503
  /**
@@ -21728,6 +22538,7 @@ declare class VertexIndexNode extends BaseGraphNode {
21728
22538
  }
21729
22539
  /**
21730
22540
  * Instance index input node
22541
+ * @public
21731
22542
  */
21732
22543
  declare class InstanceIndexNode extends BaseGraphNode {
21733
22544
  /**
@@ -24338,6 +25149,121 @@ declare function interleavedGradientNoise(scope: PBInsideFunctionScope, c: PBSha
24338
25149
  */
24339
25150
  declare function temporalResolve(scope: PBInsideFunctionScope, currentColorTex: PBShaderExp, historyColorTex: PBShaderExp, currentDepthTex: PBShaderExp, motionVectorTex: PBShaderExp, prevMotionVectorTex: PBShaderExp, uv: PBShaderExp, workSize: PBShaderExp, debug?: number): PBShaderExp;
24340
25151
 
25152
+ /** @public */
25153
+ type AvatarSlotId = string;
25154
+ /** @public */
25155
+ type AvatarBindMode = 'exact' | 'humanoid' | 'name' | 'custom';
25156
+ /** @public */
25157
+ type AvatarFitMode = 'reuseInverseBind' | 'preserveRestPose';
25158
+ /** @public */
25159
+ type AvatarOutfitSource = string | SceneNode | SharedModel;
25160
+ /** @public */
25161
+ type AvatarBodyRegionTarget = SceneNode | Mesh;
25162
+ /** @public */
25163
+ type AvatarBodyRegions = Record<string, AvatarBodyRegionTarget[]>;
25164
+ /** @public */
25165
+ type AvatarJointMap = Record<string, string> | ((sourceJoint: SceneNode, targetRig: SkeletonRig, sourceRig: SkeletonRig) => Nullable<SceneNode>);
25166
+ /** @public */
25167
+ type AvatarSlotOptions = {
25168
+ id: AvatarSlotId;
25169
+ hideBodyRegions?: string[];
25170
+ exclusiveWith?: AvatarSlotId[];
25171
+ allowMultiple?: boolean;
25172
+ };
25173
+ /** @public */
25174
+ type AvatarWardrobeOptions = {
25175
+ root: SceneNode;
25176
+ rig?: SkeletonRig | string;
25177
+ slots?: AvatarSlotOptions[];
25178
+ bodyRegions?: AvatarBodyRegions;
25179
+ modelFetchOptions?: ModelFetchOptions;
25180
+ };
25181
+ /** @public */
25182
+ type AvatarEquipOptions = {
25183
+ slot?: AvatarSlotId;
25184
+ bindMode?: AvatarBindMode;
25185
+ fitMode?: AvatarFitMode;
25186
+ jointMap?: AvatarJointMap;
25187
+ hideBodyRegions?: string[];
25188
+ modelFetchOptions?: ModelFetchOptions;
25189
+ };
25190
+ /** @public */
25191
+ type AvatarOutfitValidation = {
25192
+ ok: boolean;
25193
+ meshes: number;
25194
+ skinBindings: number;
25195
+ mappedJoints: number;
25196
+ missingJoints: string[];
25197
+ errors: string[];
25198
+ warnings: string[];
25199
+ };
25200
+ /**
25201
+ * A concrete equipped outfit item.
25202
+ *
25203
+ * Disposing the instance unequips it from the owning wardrobe.
25204
+ *
25205
+ * @public
25206
+ */
25207
+ declare class AvatarOutfitInstance extends Disposable {
25208
+ readonly id: string;
25209
+ readonly slot: AvatarSlotId;
25210
+ readonly root: DRef<SceneNode>;
25211
+ readonly meshes: DRef<Mesh>[];
25212
+ readonly skinBindings: SkinBinding[];
25213
+ readonly hiddenBodyRegions: string[];
25214
+ private _wardrobe;
25215
+ protected onDispose(): void;
25216
+ }
25217
+ /**
25218
+ * High level avatar outfit controller.
25219
+ *
25220
+ * The wardrobe keeps one avatar {@link SkeletonRig} as the animation source and
25221
+ * binds equipped clothing meshes to that rig with new {@link SkinBinding}s.
25222
+ *
25223
+ * @public
25224
+ */
25225
+ declare class AvatarWardrobe extends Disposable {
25226
+ private readonly _root;
25227
+ private readonly _rig;
25228
+ private readonly _slots;
25229
+ private readonly _bodyRegions;
25230
+ private readonly _equipped;
25231
+ private readonly _hiddenBodyNodeCounts;
25232
+ private readonly _bodyNodeOriginalState;
25233
+ private readonly _modelFetchOptions;
25234
+ constructor(options: AvatarWardrobeOptions);
25235
+ static from(root: SceneNode, options?: Omit<AvatarWardrobeOptions, 'root'>): AvatarWardrobe;
25236
+ get root(): SceneNode;
25237
+ get rig(): SkeletonRig;
25238
+ getEquipped(slot?: AvatarSlotId): AvatarOutfitInstance[];
25239
+ equip(source: AvatarOutfitSource, options?: AvatarEquipOptions): Promise<Nullable<AvatarOutfitInstance>>;
25240
+ unequip(slotOrInstance: AvatarSlotId | AvatarOutfitInstance): void;
25241
+ clear(): void;
25242
+ validateOutfit(source: SceneNode, options?: AvatarEquipOptions): AvatarOutfitValidation;
25243
+ protected onDispose(): void;
25244
+ private resolveTargetRig;
25245
+ private ensureRigRegistered;
25246
+ private enforceSlotRules;
25247
+ private resolveSource;
25248
+ private collectSkinnedMeshes;
25249
+ private chooseBindMode;
25250
+ private resolveTargetJoint;
25251
+ private resolveHumanoidTargetJoint;
25252
+ private findHumanoidMappedJoint;
25253
+ private findTargetJointByName;
25254
+ private createInverseBindMatrices;
25255
+ private computeBindWorldMatrices;
25256
+ private getRigNodeBindPose;
25257
+ private stripSourceSkinBindings;
25258
+ private removeSkinBinding;
25259
+ private removeRefs;
25260
+ private getHiddenBodyRegions;
25261
+ private retainBodyRegions;
25262
+ private releaseBodyRegions;
25263
+ private collectBodyRegionNodes;
25264
+ private uniqueNodes;
25265
+ }
25266
+
24341
25267
  /**
24342
25268
  * Blit type
24343
25269
  * @public
@@ -24732,4 +25658,4 @@ declare const ATMOSPHERIC_FOG_BIT: number;
24732
25658
  */
24733
25659
  declare const HEIGHT_FOG_BIT: number;
24734
25660
 
24735
- export { AABBTree, ABufferOIT, ATMOSPHERIC_FOG_BIT, AbsNode, AbstractPostEffect, AllConditionNode, type AngleLimitConfig, AnimationClip, AnimationSet, AnimationTrack, AnyConditionNode, type AppCreationOptions, type AppOptions, Application, type ApplyResultOutput, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, type AssetAnimationData, type AssetAnimationTrack, type AssetFixedGeometryCacheAnimationTrack, type AssetGeometryCacheAnimationTrack, AssetHierarchyNode, AssetManager, type AssetMaterial, type AssetMaterialClearcoat, type AssetMaterialCommon, type AssetMaterialIridescence, type AssetMaterialSheen, type AssetMaterialTransmission, type AssetMeshData, type AssetPBRMaterialCommon, type AssetPBRMaterialMR, type AssetPBRMaterialSG, type AssetPCAGeometryCacheAnimationTrack, type AssetRotationTrack, type AssetScaleTrack, AssetScene, type AssetSkeletalAnimationTrack, AssetSkeleton, type AssetSubMeshData, type AssetTranslationTrack, type AssetUnlitMaterial, BUILTIN_ASSET_TEST_CUBEMAP, BUILTIN_ASSET_TEXTURE_SHEEN_LUT, BaseCameraController, BaseGraphNode, BaseLight, BaseSprite, BaseTextureNode, type BatchDrawable, BatchGroup, BillboardMatrixNode, type BlendMode, BlinnMaterial, type BlitType, Blitter, Bloom, type BluePrintEditorState, type BluePrintUniformTexture, type BluePrintUniformValue, type BlueprintDAG, type BoneNode, BoundingBox, type BoundingVolume, type BoxCreationOptions, BoxFilterBlitter, BoxFrameShape, BoxShape, CCDSolver, type CachedBindGroup, Camera, CameraNearFarNode, type CameraOITMode, CameraPositionNode, CameraVectorNode, type CapsuleCollider, type CapsuleCreationOptions, CapsuleShape, CeilNode, ClampNode, ClipmapTerrain, ClipmapTerrainMaterial, ColliderForce, type ColliderR, type ColliderRW, type CollisionResult, ColorAdjust, type ColoredEdge, type ColoredLineEdge, type ColoredQuadraticEdge, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, type ComparisonMode, type CompiledRenderGraph, Compositor, type CompositorContext, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node, ConstantBooleanNode, ConstantScalarNode, ConstantTexture2DArrayNode, ConstantTexture2DNode, ConstantTextureCubeNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, type Constraint, type ConstraintBuildOptions, ConstraintType, type ControllerConfig, CopyBlitter, CosHNode, CosNode, CrossProductNode, CubemapSHProjector, CullVisitor, type CylinderCreationOptions, CylinderShape, DDXNode, DDYNode, Degrees2RadiansNode, DepthPass, DevicePoolAllocator, DirectionalLight, DistanceNode, DotProductNode, DracoMeshDecoder, type DrawContext, type Drawable, type DrawableInstanceInfo, EPSILON, type EdgeColor, type EditorMode, ElapsedTimeNode, type EmitterBehavior, type EmitterShape, Engine, EnvConstantAmbient, EnvHemisphericAmbient, type EnvLightType, EnvLightWrapper, EnvShIBL, Environment, EnvironmentLighting, EqualNode, Exp2Node, ExpNode, type ExtractMixinReturnType, type ExtractMixinType, FABRIKSolver, FBMWaveGenerator, FFTWaveGenerator, FPSCameraController, type FPSCameraControllerOptions, FWidthNode, FXAA, FaceForwardNode, type FixedGeometryCacheFrame, type FixedGeometryCacheState, FixedGeometryCacheTrack, type FlatPlane, FloorNode, FmaNode, type FogType, FontAsset, type FontAssetFetchOptions, type FontAssetMSDFAtlasSettings, type FontMetrics, type ForwardPlusOptions, FractNode, FunctionCallNode, FunctionInputNode, FunctionOutputNode, GPUClothSystem, type GPUClothSystemOptions, type GPUClothWrapBindingData, type GPUClothWrapBindingTarget, GaussianBlurBlitter, GenericMathNode, type GeometryCacheFrame, type GeometryCacheMeshBinding, type GeometryCacheState, GerstnerWaveGenerator, type GlyphContour, type GlyphData, type GlyphPoint, type GrabberR, type GrabberRW, GraphNode, type GraphNodeInput, type GraphNodeOutput, type GraphStructure, type GrassInstanceInfo, GrassLayer, GrassMaterial, GrassRenderer, Grayscale, HEIGHT_FOG_BIT, Hash1Node, Hash2Node, Hash3Node, HistoryResourceManager, type Host, HumanoidBodyRig, HumanoidHandRig, type HumanoidJointMapping, type IAttachedScript, type IBaseEvent, type IControllerKeyboardEvent, type IControllerKeydownEvent, type IControllerKeypressEvent, type IControllerKeyupEvent, type IControllerMouseEvent, type IControllerPointerCancelEvent, type IControllerPointerDownEvent, type IControllerPointerMoveEvent, type IControllerPointerUpEvent, type IControllerWheelEvent, type IGraphNode, IKAngleConstraint, IKChain, IKConstraint, type IKJoint, IKModifier, IKSolver, type IMixinAlbedoColor, type IMixinBlinnPhong, type IMixinFoliage, type IMixinLambert, type IMixinLight, type IMixinPBRBluePrint, type IMixinPBRCommon, type IMixinPBRMetallicRoughness, type IMixinPBRSpecularGlossiness, type IMixinVertexColor, type IModKey, type IRUniformTexture, type IRUniformValue, type IRenderHook, type IRenderable, type InputEventHandler, InputManager, InstanceBindGroupAllocator, type InstanceData, InstanceIndexNode, type InstanceUniformType, type InterChainConstraint, InvProjMatrixNode, InvSqrtNode, InvViewProjMatrixNode, type JointChainConfig, type JointDynamicSystemConfig, type JointDynamicsColliderHandle, type JointDynamicsFlatPlaneHandle, type JointDynamicsGrabberHandle, JointDynamicsModifier, JointDynamicsSystem, JointDynamicsSystemController, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT, LambertMaterial, LengthNode, type LineCollisionResult, Log2Node, type LogMode, LogNode, LogicallyAndNode, LogicallyOrNode, MAX_GERSTNER_WAVE_COUNT, MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MAX_TERRAIN_MIPMAP_LEVELS, MORPH_ATTRIBUTE_VECTOR_COUNT, MORPH_TARGET_COLOR, MORPH_TARGET_NORMAL, MORPH_TARGET_POSITION, MORPH_TARGET_TANGENT, MORPH_TARGET_TEX0, MORPH_TARGET_TEX1, MORPH_TARGET_TEX2, MORPH_TARGET_TEX3, MORPH_WEIGHTS_VECTOR_COUNT, type MSDFBitmap, type MSDFOptions, type MSDFShape, MSDFText, MSDFTextAtlasManager, MSDFTextMaterial, MSDFTextSprite, MSDFTextSpriteMaterial, MakeVectorNode, Material, MaterialBlueprintIR, type MaterialBlueprintIRBehaviors, type MaterialTextureInfo, MaterialVaryingFlags, MaxNode, Mesh, MeshMaterial, type MeshUpdateCallback, type Metadata, MinNode, MixNode, ModNode, type ModelFetchOptions, type ModelInfo, type MorphData, type MorphInfo, type MorphState, MorphTargetTrack, MultiChainSpringSystem, type MultiChainSpringSystemOptions, NamedObject, type NearestPointsResult, type NodeConnection, NodeEulerRotationTrack, type NodeIterateFunc, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack, NormalizeNode, NotEqualNode, type OIT, Octree, OctreeNode, OctreeNodeChunk, OctreePlacement, OrbitCameraController, type OrbitCameraControllerOptions, OrthoCamera, PBRBlockNode, PBRBluePrintMaterial, PBRMetallicRoughnessMaterial, type PBRReflectionMode, PBRSpecularGlossinessMaterial, type PCAGeometryCacheState, PCAGeometryCacheTrack, type PCAGeometryCacheTrackData, type PairAdjustment, PannerNode, ParticleMaterial, ParticleSystem, PerlinNoise2DNode, PerspectiveCamera, type PhysicsCurves, type PickResult, type PickTarget, PixelNormalNode, PixelWorldPositionNode, type PlaneCollider, type PlaneCreationOptions, PlaneShape, type PlayAnimationOptions, type PointInit, PointLight, type PointR, type PointRW, type PointTransform, PostEffectLayer, PowNode, Primitive, ProjectionMatrixNode, type PropEdit, type PropertyAccessor, type PropertyAccessorOptions, type PropertySceneNodeOptions, type PropertyToType, PropertyTrack, type PropertyType, type PropertyValue, PunctualLight, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_DEPTH, RENDER_PASS_TYPE_LIGHT, RENDER_PASS_TYPE_OBJECT_COLOR, RENDER_PASS_TYPE_SHADOWMAP, type RGExecuteContext, type RGExecuteFn, type RGFramebufferDesc, RGHandle, RGHistoryResources, type RGPassBuilder, type RGResolvedSize, type RGResourceLifetime, type RGSizeMode, RGSubpass, type RGTextureAllocator, type RGTextureDesc, Radians2DegreesNode, RaycastVisitor, RectLight, ReflectNode, RefractNode, RenderContext, RenderGraph, RenderGraphExecutor, type RenderItemList, type RenderItemListBundle, type RenderItemListInfo, RenderPass, RenderQueue, type RenderQueueItem, type RenderQueueRef, RenderTarget, type ResolutionTransform, ResolveVertexNormalNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResourceManager, RotateAboutAxisNode, RuntimeScript, type RuntimeScriptArrayDeclaration, type RuntimeScriptArrayElementDeclaration, type RuntimeScriptConfig, type RuntimeScriptObjectDeclaration, type RuntimeScriptObjectFieldDeclaration, type RuntimeScriptPropertyDeclaration, type RuntimeScriptPropertyInfo, type RuntimeScriptPropertyOptions, type RuntimeScriptPropertyType, type RuntimeScriptValueDeclaration, type RuntimeScriptValueType, SAO, type SamplerType, SaturateNode, Scene, SceneNode, type SceneNodeVisible, ScreenAdapter, type ScreenConfig, ScreenRenderTarget, type ScreenScaleMode, ScriptAttachment, type ScriptAttachmentConfig, ScriptRegistry, ScriptingSystem, type ScriptingSystemOptions, SelectionNode, type SerializableClass, ShaderHelper, ShadowMapPass, ShadowMapper, type ShadowMode, type ShadowQualityPreset, Shape, type ShapeCreationOptions, type ShapeOptionType, type ShapeType, SharedModel, SignNode, SimplexNoise2DNode, type SimulationParams, SinHNode, SinNode, Skeleton, SkeletonModifier, type SkinnedBoundingBox, SkyEnvTextureNode, SkyRenderer, type SkyType, SmoothStepNode, type SphereCollider, type SphereCreationOptions, SphereShape, SpotLight, SpringChain, type SpringCollider, type SpringConstraint, SpringModifier, type SpringParticle, SpringSystem, type SpringSystemOptions, Sprite, SpriteBlockNode, SpriteBlueprintMaterial, SpriteMaterial, SqrtNode, StandardSpriteMaterial, StepNode, type StopAnimationOptions, type SurfaceCheckResult, SwizzleNode, TanHNode, TanNode, type TerrainDebugMode, type TetrahedronCreationOptions, TetrahedronFrameShape, TetrahedronShape, TextSprite, type TextureFetchOptions, type TextureMixinInstanceTypes, type TextureMixinTypes, type TextureProp, type TexturePropUniforms, TextureSampleGrad, TextureSampleNode, type ToMixedTextureType, Tonemap, type TorusCreationOptions, TorusShape, type TransformAccess, TransformNode, type TwistConstraint, TwoBoneIKSolver, UnlitMaterial, VertexBinormalNode, VertexBlockNode, VertexColorNode, VertexIndexNode, VertexNormalNode, VertexOutputNode, VertexPositionNode, VertexTangentNode, VertexUVNode, ViewMatrixNode, ViewProjMatrixNode, type Visitor, Water, type WaveGenerator, WeightedBlendedOIT, applyAngleLimits, applyMaterialMixins, applyResult, applyRuntimeScriptConfig, buildConstraints, buildForwardPlusGraph, buildMSDFShape, buildSurfaceFaces, checkSurfaceCollision, collisionDetection, collisionDetectionCapsule, collisionDetectionSphere, computeMaxDepth, computeNearestPoints, createCapsuleCollider, createGPUClothWrapBindingData, createGeometryCacheState, createPlaneCollider, createSphereCollider, createSpringConstraint, createSpringParticle, createTransformAccess, decode2HalfFromRGBA, decodeFloatFromRGBA, decodeNormalizedFloatFromRGBA, decodeRGBM, defineProps, encode2HalfToRGBA, encodeFloatToRGBA, encodeNormalizedFloatToRGBA, encodeRGBM, ensureGeometryCacheMeshBinding, executeForwardPlusGraph, fetchSampler, gammaToLinear, generateMSDF, getApp, getDevice, getEngine, getInput, getRuntimeScriptProperties, gradient, hash11, hash12, hash13, hash21, hash22, hash23, hash31, hash32, hash33, interleavedGradientNoise, isGPUClothSupported, linearToGamma, mixGeometryCacheBoundingBox, mixinAlbedoColor, mixinBlinnPhong, mixinFoliage, mixinLambert, mixinLight, mixinPBRBluePrint, mixinPBRCommon, mixinPBRMetallicRoughness, mixinPBRSpecularGlossness, mixinTextureProps, mixinVertexColor, noise3D, normalizeRuntimeScriptConfig, normalizeScriptAttachmentConfig, normalizeScriptAttachments, panoramaToCubemap, perlinNoise2D, perlinNoise3D, prefilterCubemap, pushInCollisionDetection, pushInFromCapsule, pushInFromCollider, pushInFromSphere, pushoutFromCapsule, pushoutFromCollider, pushoutFromSphere, resolveCapsuleCollision, resolvePlaneCollision, resolveSphereCollision, restoreGeometryCacheMeshBinding, scriptProp, simulate, smoothNoise3D, sortRootPointsByProximity, temporalResolve, tryGetApp, updateColliderFromNode, valueNoise, whiteNoise, worleyFBM, worleyNoise };
25661
+ export { AABBTree, ABufferOIT, ATMOSPHERIC_FOG_BIT, AbsNode, AbstractPostEffect, AllConditionNode, type AngleLimitConfig, AnimationClip, AnimationSet, AnimationTrack, AnyConditionNode, type AppCreationOptions, type AppOptions, Application, type ApplyResultOutput, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, type AssetAnimationData, type AssetAnimationTrack, type AssetFixedGeometryCacheAnimationTrack, type AssetGeometryCacheAnimationTrack, type AssetGeometryCacheFrame, AssetHierarchyNode, type AssetImageInfo, type AssetJointDynamicsChain, type AssetJointDynamicsCollider, type AssetJointDynamicsFlatPlane, type AssetJointDynamicsSpringBone, AssetManager, type AssetMaterial, type AssetMaterialClearcoat, type AssetMaterialCommon, type AssetMaterialIridescence, type AssetMaterialSheen, type AssetMaterialTransmission, type AssetMeshData, type AssetMorphTargetBinding, type AssetMorphTargetGroup, type AssetPBRMaterialCommon, type AssetPBRMaterialMR, type AssetPBRMaterialSG, type AssetPCAGeometryCacheAnimationTrack, type AssetPrimitiveInfo, type AssetRotationTrack, type AssetSamplerInfo, type AssetScaleTrack, AssetScene, type AssetSkeletalAnimationTrack, AssetSkeleton, type AssetSpringBone, type AssetSpringBoneCollider, type AssetSpringBoneColliderGroup, type AssetSpringBoneColliderShape, type AssetSpringBoneJoint, type AssetSubMeshData, type AssetTextureInfo, type AssetTranslationTrack, type AssetUnlitMaterial, type AssetVertexBufferInfo, type AvatarBindMode, type AvatarBodyRegionTarget, type AvatarBodyRegions, type AvatarEquipOptions, type AvatarFitMode, type AvatarJointMap, AvatarOutfitInstance, type AvatarOutfitSource, type AvatarOutfitValidation, type AvatarSlotId, type AvatarSlotOptions, AvatarWardrobe, type AvatarWardrobeOptions, BUILTIN_ASSET_TEST_CUBEMAP, BUILTIN_ASSET_TEXTURE_SHEEN_LUT, BaseCameraController, type BaseFetchOptions, BaseGraphNode, BaseLight, BaseSprite, BaseTextureNode, type BatchDrawable, BatchGroup, BillboardMatrixNode, type BlendMode, BlinnMaterial, type BlitType, Blitter, Bloom, type BluePrintEditorState, type BluePrintUniformTexture, type BluePrintUniformValue, type BlueprintDAG, type BoneNode, BoundingBox, type BoundingVolume, type BoxCreationOptions, BoxFilterBlitter, BoxFrameShape, BoxShape, CCDSolver, type CachedBindGroup, Camera, CameraNearFarNode, type CameraOITMode, CameraPositionNode, CameraVectorNode, type CapsuleCollider, type CapsuleCreationOptions, CapsuleShape, CeilNode, ClampNode, ClipmapTerrain, ClipmapTerrainMaterial, ColliderForce, type ColliderR, type ColliderRW, type CollisionResult, ColorAdjust, type ColoredEdge, type ColoredLineEdge, type ColoredQuadraticEdge, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, type ComparisonMode, type CompiledRenderGraph, Compositor, type CompositorContext, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node, ConstantBooleanNode, ConstantScalarNode, ConstantTexture2DArrayNode, ConstantTexture2DNode, ConstantTextureCubeNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, type Constraint, type ConstraintBuildOptions, ConstraintType, type ControllerConfig, type ControllerConfigUpdate, CopyBlitter, type CopyHumanoidAnimationOptions, CosHNode, CosNode, CrossProductNode, CubemapSHProjector, CullVisitor, type CylinderCreationOptions, CylinderShape, DDXNode, DDYNode, Degrees2RadiansNode, DepthPass, DevicePoolAllocator, DirectionalLight, DistanceNode, DotProductNode, DracoMeshDecoder, type DrawContext, type Drawable, type DrawableInstanceInfo, EPSILON, type EdgeColor, type EditorMode, ElapsedTimeNode, type EmitterBehavior, type EmitterShape, Engine, EnvConstantAmbient, EnvHemisphericAmbient, type EnvLightType, EnvLightWrapper, EnvShIBL, Environment, EnvironmentLighting, EqualNode, Exp2Node, ExpNode, type ExtractMixinReturnType, type ExtractMixinType, FABRIKSolver, FBMWaveGenerator, FFTWaveGenerator, FPSCameraController, type FPSCameraControllerOptions, FWidthNode, FXAA, FaceForwardNode, type FixedGeometryCacheFrame, type FixedGeometryCacheState, FixedGeometryCacheTrack, type FlatPlane, FloorNode, FmaNode, type FogType, FontAsset, type FontAssetFetchOptions, type FontAssetMSDFAtlasSettings, type FontMetrics, type ForwardPlusOptions, FractNode, FunctionCallNode, FunctionInputNode, FunctionOutputNode, GPUClothSystem, type GPUClothSystemOptions, type GPUClothWrapBindingData, type GPUClothWrapBindingTarget, GaussianBlurBlitter, GenericMathNode, type GeometryCacheFrame, type GeometryCacheMeshBinding, type GeometryCacheState, GerstnerWaveGenerator, type GlyphContour, type GlyphData, type GlyphPoint, type GrabberR, type GrabberRW, GraphNode, type GraphNodeInput, type GraphNodeOutput, type GraphStructure, type GrassInstanceInfo, GrassLayer, GrassMaterial, GrassRenderer, Grayscale, HEIGHT_FOG_BIT, Hash1Node, Hash2Node, Hash3Node, HistoryResourceManager, type Host, HumanoidBodyRig, HumanoidHandRig, type HumanoidJointMapping, type HumanoidRetargetAxisLocks, type HumanoidRootMotionMode, type HumanoidRootMotionScaleMode, type HumanoidSkeletalAnimationMaskOptions, type HumanoidSkeletalAnimationMaskPreset, type IAttachedScript, type IBaseEvent, type IControllerKeyboardEvent, type IControllerKeydownEvent, type IControllerKeypressEvent, type IControllerKeyupEvent, type IControllerMouseEvent, type IControllerPointerCancelEvent, type IControllerPointerDownEvent, type IControllerPointerMoveEvent, type IControllerPointerUpEvent, type IControllerWheelEvent, type IGraphNode, IKAngleConstraint, IKChain, IKConstraint, type IKJoint, IKModifier, IKSolver, type IMixinAlbedoColor, type IMixinBlinnPhong, type IMixinFoliage, type IMixinLambert, type IMixinLight, type IMixinPBRBluePrint, type IMixinPBRCommon, type IMixinPBRMetallicRoughness, type IMixinPBRSpecularGlossiness, type IMixinVertexColor, type IModKey, type IRUniformTexture, type IRUniformValue, type IRenderHook, type IRenderable, type InputEventHandler, InputManager, InstanceBindGroupAllocator, type InstanceData, InstanceIndexNode, type InstanceUniformType, type InterChainConstraint, InvProjMatrixNode, InvSqrtNode, InvViewProjMatrixNode, type JointChainConfig, type JointDynamicSystemConfig, type JointDynamicsColliderHandle, type JointDynamicsColliderSnapshot, type JointDynamicsFlatPlaneHandle, type JointDynamicsFlatPlaneSnapshot, type JointDynamicsGrabberHandle, type JointDynamicsGrabberSnapshot, JointDynamicsModifier, JointDynamicsSystem, JointDynamicsSystemController, type JointNameMatcher, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT, LambertMaterial, LengthNode, type LineCollisionResult, Log2Node, type LogMode, LogNode, LogicallyAndNode, LogicallyOrNode, MAX_GERSTNER_WAVE_COUNT, MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MAX_TERRAIN_MIPMAP_LEVELS, MORPH_ATTRIBUTE_VECTOR_COUNT, MORPH_TARGET_COLOR, MORPH_TARGET_NORMAL, MORPH_TARGET_POSITION, MORPH_TARGET_TANGENT, MORPH_TARGET_TEX0, MORPH_TARGET_TEX1, MORPH_TARGET_TEX2, MORPH_TARGET_TEX3, MORPH_WEIGHTS_VECTOR_COUNT, type MSDFBitmap, type MSDFOptions, type MSDFShape, MSDFText, MSDFTextAtlasManager, MSDFTextMaterial, MSDFTextSprite, MSDFTextSpriteMaterial, MakeVectorNode, Material, MaterialBlueprintIR, type MaterialBlueprintIRBehaviors, type MaterialTextureInfo, MaterialVaryingFlags, MaxNode, Mesh, MeshMaterial, type MeshUpdateCallback, type Metadata, MinNode, MixNode, ModNode, type ModelFetchOptions, type ModelInfo, type ModelLoader, type MorphBoundingInfo, type MorphData, type MorphInfo, type MorphState, MorphTargetTrack, MultiChainSpringSystem, type MultiChainSpringSystemOptions, type NamedJointsSkeletalAnimationMaskOptions, NamedObject, type NearestPointsResult, type NodeConnection, NodeEulerRotationTrack, type NodeIterateFunc, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack, NormalizeNode, NotEqualNode, type OIT, Octree, OctreeNode, OctreeNodeChunk, OctreePlacement, OrbitCameraController, type OrbitCameraControllerOptions, OrthoCamera, PBRBlockNode, PBRBluePrintMaterial, PBRMetallicRoughnessMaterial, type PBRReflectionMode, PBRSpecularGlossinessMaterial, type PCAGeometryCacheState, PCAGeometryCacheTrack, type PCAGeometryCacheTrackData, type PairAdjustment, PannerNode, ParticleMaterial, ParticleSystem, PerlinNoise2DNode, PerspectiveCamera, type PhysicsCurves, type PickResult, type PickTarget, PixelNormalNode, PixelWorldPositionNode, type PlaneCollider, type PlaneCreationOptions, PlaneShape, type PlayAnimationOptions, type PointInit, PointLight, type PointR, type PointRW, type PointTransform, PostEffectLayer, PowNode, Primitive, ProjectionMatrixNode, type PropEdit, type PropertyAccessor, type PropertyAccessorOptions, type PropertySceneNodeOptions, type PropertyToType, PropertyTrack, type PropertyType, type PropertyValue, PunctualLight, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_DEPTH, RENDER_PASS_TYPE_LIGHT, RENDER_PASS_TYPE_OBJECT_COLOR, RENDER_PASS_TYPE_SHADOWMAP, type RGExecuteContext, type RGExecuteFn, type RGFramebufferDesc, RGHandle, RGHistoryResources, type RGPassBuilder, type RGResolvedSize, type RGResourceLifetime, type RGSizeMode, RGSubpass, type RGTextureAllocator, type RGTextureDesc, Radians2DegreesNode, RaycastVisitor, RectLight, ReflectNode, RefractNode, RenderContext, type RenderFunc, RenderGraph, RenderGraphExecutor, type RenderItemList, type RenderItemListBundle, type RenderItemListInfo, RenderPass, RenderQueue, type RenderQueueItem, type RenderQueueRef, RenderTarget, type ResolutionTransform, ResolveVertexNormalNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResourceManager, RotateAboutAxisNode, RuntimeScript, type RuntimeScriptArrayDeclaration, type RuntimeScriptArrayElementDeclaration, type RuntimeScriptConfig, type RuntimeScriptObjectDeclaration, type RuntimeScriptObjectFieldDeclaration, type RuntimeScriptPropertyDeclaration, type RuntimeScriptPropertyInfo, type RuntimeScriptPropertyOptions, type RuntimeScriptPropertyType, type RuntimeScriptValueDeclaration, type RuntimeScriptValueType, SAO, type SamplerType, SaturateNode, type SaveOptions, Scene, type SceneMorphTargetBinding, type SceneMorphTargetGroup, SceneNode, type SceneNodeVisible, ScreenAdapter, type ScreenConfig, ScreenRenderTarget, type ScreenScaleMode, ScriptAttachment, type ScriptAttachmentConfig, ScriptRegistry, ScriptingSystem, type ScriptingSystemOptions, SelectionNode, type SerializableClass, type SerializedMorphTargetBinding, type SerializedMorphTargetGroup, ShaderHelper, ShadowMapPass, ShadowMapper, type ShadowMode, type ShadowQualityPreset, Shape, type ShapeCreationOptions, type ShapeOptionType, type ShapeType, SharedModel, SignNode, SimplexNoise2DNode, type SimulationParams, SinHNode, SinNode, type SkeletalAnimationMaskCommonOptions, type SkeletalAnimationMaskOptions, type SkeletalAnimationMaskRootMotionMode, type SkeletalAnimationMaskUnsupportedTrackMode, Skeleton, type SkeletonBindPose, SkeletonModifier, SkeletonRig, type SkeletonRigOptions, SkinBinding, type SkinnedBoundingBox, SkyEnvTextureNode, SkyRenderer, type SkyType, SmoothStepNode, type SphereCollider, type SphereCreationOptions, SphereShape, SpotLight, SpringChain, type SpringCollider, type SpringConstraint, SpringModifier, type SpringParticle, SpringSystem, type SpringSystemOptions, Sprite, SpriteBlockNode, SpriteBlueprintMaterial, SpriteMaterial, SqrtNode, StandardSpriteMaterial, StepNode, type StopAnimationOptions, type SurfaceCheckResult, SwizzleNode, TanHNode, TanNode, type TerrainDebugMode, type TetrahedronCreationOptions, TetrahedronFrameShape, TetrahedronShape, TextSprite, type TextureFetchOptions, type TextureMixinInstanceTypes, type TextureMixinTypes, type TextureProp, type TexturePropUniforms, TextureSampleGrad, TextureSampleNode, type ToMixedTextureType, Tonemap, type TorusCreationOptions, TorusShape, type TransformAccess, TransformNode, type TwistConstraint, TwoBoneIKSolver, UnlitMaterial, VertexBinormalNode, VertexBlockNode, VertexColorNode, VertexIndexNode, VertexNormalNode, VertexOutputNode, VertexPositionNode, VertexTangentNode, VertexUVNode, ViewMatrixNode, ViewProjMatrixNode, type Visitor, Water, type WaveGenerator, WeightedBlendedOIT, applyAngleLimits, applyMaterialMixins, applyResult, applyRuntimeScriptConfig, buildConstraints, buildForwardPlusGraph, buildMSDFShape, buildSurfaceFaces, checkSurfaceCollision, collisionDetection, collisionDetectionCapsule, collisionDetectionSphere, computeMaxDepth, computeNearestPoints, createCapsuleCollider, createGPUClothWrapBindingData, createGeometryCacheState, createPlaneCollider, createSphereCollider, createSpringConstraint, createSpringParticle, createTransformAccess, decode2HalfFromRGBA, decodeFloatFromRGBA, decodeNormalizedFloatFromRGBA, decodeRGBM, defineProps, encode2HalfToRGBA, encodeFloatToRGBA, encodeNormalizedFloatToRGBA, encodeRGBM, ensureGeometryCacheMeshBinding, executeForwardPlusGraph, fetchSampler, gammaToLinear, generateMSDF, getApp, getDevice, getEngine, getInput, getRuntimeScriptProperties, gradient, hash11, hash12, hash13, hash21, hash22, hash23, hash31, hash32, hash33, interleavedGradientNoise, isGPUClothSupported, linearToGamma, mixGeometryCacheBoundingBox, mixinAlbedoColor, mixinBlinnPhong, mixinFoliage, mixinLambert, mixinLight, mixinPBRBluePrint, mixinPBRCommon, mixinPBRMetallicRoughness, mixinPBRSpecularGlossness, mixinTextureProps, mixinVertexColor, noise3D, normalizeRuntimeScriptConfig, normalizeScriptAttachmentConfig, normalizeScriptAttachments, panoramaToCubemap, perlinNoise2D, perlinNoise3D, prefilterCubemap, pushInCollisionDetection, pushInFromCapsule, pushInFromCollider, pushInFromSphere, pushoutFromCapsule, pushoutFromCollider, pushoutFromSphere, resolveCapsuleCollision, resolvePlaneCollision, resolveSphereCollision, restoreGeometryCacheMeshBinding, scriptProp, simulate, smoothNoise3D, sortRootPointsByProximity, temporalResolve, tryGetApp, updateColliderFromNode, valueNoise, whiteNoise, worleyFBM, worleyNoise };