@zephyr3d/scene 0.7.1 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/animation.js +0 -18
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +200 -3
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +371 -0
- package/dist/animation/ik/ccd_solver.js.map +1 -0
- package/dist/animation/ik/fabrik_solver.js +398 -0
- package/dist/animation/ik/fabrik_solver.js.map +1 -0
- package/dist/animation/ik/ik_angle_constraint.js +181 -0
- package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
- package/dist/animation/ik/ik_chain.js +163 -0
- package/dist/animation/ik/ik_chain.js.map +1 -0
- package/dist/animation/ik/ik_constraint.js +25 -0
- package/dist/animation/ik/ik_constraint.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +128 -0
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
- package/dist/animation/ik/ik_solver.js +48 -0
- package/dist/animation/ik/ik_solver.js.map +1 -0
- package/dist/animation/ik/ik_track.js +96 -0
- package/dist/animation/ik/ik_track.js.map +1 -0
- package/dist/animation/ik/ik_utils.js +191 -0
- package/dist/animation/ik/ik_utils.js.map +1 -0
- package/dist/animation/ik/two_bone_ik_solver.js +331 -0
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
- package/dist/animation/ik_modifier.js +61 -0
- package/dist/animation/ik_modifier.js.map +1 -0
- package/dist/animation/ik_postprocessor.js +71 -0
- package/dist/animation/ik_postprocessor.js.map +1 -0
- package/dist/animation/manual_transform_processor.js +156 -0
- package/dist/animation/manual_transform_processor.js.map +1 -0
- package/dist/animation/skeleton.js +55 -51
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +38 -0
- package/dist/animation/skeleton_modifier.js.map +1 -0
- package/dist/animation/skeleton_postprocessor.js +50 -0
- package/dist/animation/skeleton_postprocessor.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +503 -0
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
- package/dist/animation/spring/spring_bone.js +240 -0
- package/dist/animation/spring/spring_bone.js.map +1 -0
- package/dist/animation/spring/spring_bone_collider.js +198 -0
- package/dist/animation/spring/spring_bone_collider.js.map +1 -0
- package/dist/animation/spring/spring_bone_constraint.js +170 -0
- package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
- package/dist/animation/spring/spring_bone_system.js +328 -0
- package/dist/animation/spring/spring_bone_system.js.map +1 -0
- package/dist/animation/spring/spring_chain.js +103 -0
- package/dist/animation/spring/spring_chain.js.map +1 -0
- package/dist/animation/spring/spring_collider.js +247 -0
- package/dist/animation/spring/spring_collider.js.map +1 -0
- package/dist/animation/spring/spring_constraint.js +21 -0
- package/dist/animation/spring/spring_constraint.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +20 -0
- package/dist/animation/spring/spring_particle.js.map +1 -0
- package/dist/animation/spring/spring_system.js +526 -0
- package/dist/animation/spring/spring_system.js.map +1 -0
- package/dist/animation/spring_modifier.js +45 -0
- package/dist/animation/spring_modifier.js.map +1 -0
- package/dist/animation/spring_postprocessor.js +54 -0
- package/dist/animation/spring_postprocessor.js.map +1 -0
- package/dist/app/screen.js +1 -1
- package/dist/app/screen.js.map +1 -1
- package/dist/asset/model.js +10 -6
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/perspectivecamera.js +3 -3
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +1400 -4
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +20 -17
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/shader/helper.js +5 -3
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/render/gpu_picking.js +100 -0
- package/dist/render/gpu_picking.js.map +1 -0
- package/dist/render/rendergraph/device_pool_allocator.js +41 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
- package/dist/render/rendergraph/executor.js +146 -0
- package/dist/render/rendergraph/executor.js.map +1 -0
- package/dist/render/rendergraph/forward_plus_builder.js +414 -0
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +306 -0
- package/dist/render/rendergraph/rendergraph.js.map +1 -0
- package/dist/render/rendergraph/types.js +57 -0
- package/dist/render/rendergraph/types.js.map +1 -0
- package/dist/render/sky_motion_vector.js +85 -0
- package/dist/render/sky_motion_vector.js.map +1 -0
- package/dist/scene/mesh.js +15 -23
- package/dist/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +24 -23
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +62 -0
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +1 -1
- package/package.json +3 -3
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -2229,6 +2229,9 @@ declare class LambertMaterial extends LambertMaterial_base implements Clonable<L
|
|
|
2229
2229
|
*/
|
|
2230
2230
|
type IMixinBlinnPhong = {
|
|
2231
2231
|
shininess: number;
|
|
2232
|
+
scatterWrap: number;
|
|
2233
|
+
scatterWidth: number;
|
|
2234
|
+
scatterColor: Vector4;
|
|
2232
2235
|
blinnPhongLight(scope: PBInsideFunctionScope, worldPos: PBShaderExp, normal: PBShaderExp, viewVec: PBShaderExp, albedo: PBShaderExp, outRoughness?: PBShaderExp): PBShaderExp;
|
|
2233
2236
|
} & IMixinLight;
|
|
2234
2237
|
/**
|
|
@@ -4919,7 +4922,11 @@ declare class AssetSkeleton extends NamedObject {
|
|
|
4919
4922
|
/** Inverse of the binding matrices of the joints */
|
|
4920
4923
|
inverseBindMatrices: Matrix4x4[];
|
|
4921
4924
|
/** Binding pose matrices of the joints */
|
|
4922
|
-
|
|
4925
|
+
bindPose: {
|
|
4926
|
+
position: Vector3;
|
|
4927
|
+
rotation: Quaternion;
|
|
4928
|
+
scale: Vector3;
|
|
4929
|
+
}[];
|
|
4923
4930
|
/**
|
|
4924
4931
|
* Creates an instance of AssetSkeleton
|
|
4925
4932
|
* @param name - Name of the skeleton
|
|
@@ -12092,6 +12099,55 @@ declare class Scene extends Scene_base implements IRenderable {
|
|
|
12092
12099
|
protected onDispose(): void;
|
|
12093
12100
|
}
|
|
12094
12101
|
|
|
12102
|
+
/**
|
|
12103
|
+
* Abstract base class for skeleton post-processors.
|
|
12104
|
+
*
|
|
12105
|
+
* Post-processors are applied after the base animation/bind pose layer,
|
|
12106
|
+
* allowing procedural modifications like IK, spring physics, or manual overrides.
|
|
12107
|
+
*
|
|
12108
|
+
* @public
|
|
12109
|
+
*/
|
|
12110
|
+
declare abstract class SkeletonModifier {
|
|
12111
|
+
/** Blend weight for this processor [0-1] */
|
|
12112
|
+
protected _weight: number;
|
|
12113
|
+
/** Whether this processor is enabled */
|
|
12114
|
+
protected _enabled: boolean;
|
|
12115
|
+
constructor(weight?: number);
|
|
12116
|
+
/**
|
|
12117
|
+
* Get the blend weight [0-1]
|
|
12118
|
+
*/
|
|
12119
|
+
get weight(): number;
|
|
12120
|
+
/**
|
|
12121
|
+
* Set the blend weight [0-1]
|
|
12122
|
+
*/
|
|
12123
|
+
set weight(value: number);
|
|
12124
|
+
/**
|
|
12125
|
+
* Get whether this processor is enabled
|
|
12126
|
+
*/
|
|
12127
|
+
get enabled(): boolean;
|
|
12128
|
+
/**
|
|
12129
|
+
* Set whether this processor is enabled
|
|
12130
|
+
*/
|
|
12131
|
+
set enabled(value: boolean);
|
|
12132
|
+
/**
|
|
12133
|
+
* Apply post-processing to skeleton joints.
|
|
12134
|
+
*
|
|
12135
|
+
* This method is called after the base animation/bind pose has been applied.
|
|
12136
|
+
* Implementations should modify joint transforms and blend with the current state
|
|
12137
|
+
* using the processor's weight.
|
|
12138
|
+
*
|
|
12139
|
+
* @param skeleton - The skeleton to process
|
|
12140
|
+
* @param deltaTime - Time elapsed since last frame (in seconds)
|
|
12141
|
+
*/
|
|
12142
|
+
abstract apply(skeleton: Skeleton, deltaTime: number): void;
|
|
12143
|
+
/**
|
|
12144
|
+
* Reset the processor to its initial state.
|
|
12145
|
+
*
|
|
12146
|
+
* Called when the skeleton or animation state changes significantly.
|
|
12147
|
+
*/
|
|
12148
|
+
abstract reset(): void;
|
|
12149
|
+
}
|
|
12150
|
+
|
|
12095
12151
|
/**
|
|
12096
12152
|
* Skinned bounding box information for a submesh.
|
|
12097
12153
|
*
|
|
@@ -12149,9 +12205,9 @@ declare class Skeleton extends Disposable {
|
|
|
12149
12205
|
* @param inverseBindMatrices - Inverse bind matrices for each joint.
|
|
12150
12206
|
* @param bindPoseMatrices - Bind pose matrices for each joint (model-space).
|
|
12151
12207
|
*/
|
|
12152
|
-
constructor(joints: SceneNode[], inverseBindMatrices: Matrix4x4[],
|
|
12153
|
-
scale: Vector3;
|
|
12208
|
+
constructor(joints: SceneNode[], inverseBindMatrices: Matrix4x4[], bindPose: {
|
|
12154
12209
|
rotation: Quaternion;
|
|
12210
|
+
scale: Vector3;
|
|
12155
12211
|
position: Vector3;
|
|
12156
12212
|
}[]);
|
|
12157
12213
|
set playing(b: boolean);
|
|
@@ -12162,6 +12218,24 @@ declare class Skeleton extends Disposable {
|
|
|
12162
12218
|
* Each matrix is stored in 4 texels (one row per texel, RGBA = 4 floats).
|
|
12163
12219
|
*/
|
|
12164
12220
|
get jointTexture(): Texture2D<unknown>;
|
|
12221
|
+
/**
|
|
12222
|
+
* Get joint index by joint node
|
|
12223
|
+
* @param joint - joint node
|
|
12224
|
+
* @returns The index of the joint
|
|
12225
|
+
*/
|
|
12226
|
+
getJointIndex(joint: SceneNode): number;
|
|
12227
|
+
/**
|
|
12228
|
+
* Get joint index by joint name
|
|
12229
|
+
* @param jointName - joint name
|
|
12230
|
+
* @returns The index of the joint
|
|
12231
|
+
*/
|
|
12232
|
+
getJointIndexByName(jointName: string): number;
|
|
12233
|
+
/**
|
|
12234
|
+
* Get all modifiers attached to this skeleton.
|
|
12235
|
+
*
|
|
12236
|
+
* @public
|
|
12237
|
+
*/
|
|
12238
|
+
get modifiers(): SkeletonModifier[];
|
|
12165
12239
|
/**
|
|
12166
12240
|
* Dispose GPU resources and references held by the skeleton.
|
|
12167
12241
|
*
|
|
@@ -12375,6 +12449,21 @@ declare class AnimationSet extends Disposable implements IDisposable {
|
|
|
12375
12449
|
* @param options - Optional fade-out configuration.
|
|
12376
12450
|
*/
|
|
12377
12451
|
stopAnimation(name: string, options?: StopAnimationOptions): void;
|
|
12452
|
+
/**
|
|
12453
|
+
* Copy an animation clip from another AnimationSet into this one.
|
|
12454
|
+
*
|
|
12455
|
+
* Prerequisites:
|
|
12456
|
+
* - Both sets must reference skeletons with identical joint names and counts.
|
|
12457
|
+
* - The source clip must exist in `sourceSet`.
|
|
12458
|
+
*
|
|
12459
|
+
* @param sourceSet - The AnimationSet to copy from.
|
|
12460
|
+
* @param animationName - Name of the clip to copy.
|
|
12461
|
+
* @param targetName - Name for the new clip in this set. Defaults to `animationName`.
|
|
12462
|
+
* @param excludeJoint - Optional predicate; joints whose name returns true are excluded from
|
|
12463
|
+
* skeleton structure matching.
|
|
12464
|
+
* @returns The newly created AnimationClip, or null on failure.
|
|
12465
|
+
*/
|
|
12466
|
+
copyAnimationFrom(sourceSet: AnimationSet, animationName: string, targetName?: string, excludeJoint?: (jointName: string) => boolean): AnimationClip | null;
|
|
12378
12467
|
/**
|
|
12379
12468
|
* Dispose the animation set and release owned resources.
|
|
12380
12469
|
*
|
|
@@ -12875,6 +12964,1313 @@ declare class MorphTargetTrack extends AnimationTrack<MorphState> {
|
|
|
12875
12964
|
reset(node: SceneNode): void;
|
|
12876
12965
|
}
|
|
12877
12966
|
|
|
12967
|
+
/**
|
|
12968
|
+
* Represents a joint in an IK chain.
|
|
12969
|
+
*
|
|
12970
|
+
* @public
|
|
12971
|
+
*/
|
|
12972
|
+
interface IKJoint {
|
|
12973
|
+
/** The scene node associated with this joint */
|
|
12974
|
+
node: SceneNode;
|
|
12975
|
+
/** Current position in world space (updated during solving) */
|
|
12976
|
+
position: Vector3;
|
|
12977
|
+
/** Original position before solving (for reference) */
|
|
12978
|
+
originalPosition: Vector3;
|
|
12979
|
+
/** Current rotation in world space */
|
|
12980
|
+
rotation: Quaternion;
|
|
12981
|
+
/** Original rotation before solving (for reference) */
|
|
12982
|
+
originalRotation: Quaternion;
|
|
12983
|
+
/** Length of the bone from this joint to the next (0 for end effector) */
|
|
12984
|
+
boneLength: number;
|
|
12985
|
+
/** Previous IK world rotation (for twist continuity across frames) */
|
|
12986
|
+
previousIKRotation?: Quaternion;
|
|
12987
|
+
/** Previous twist angle in radians (for twist smoothing) */
|
|
12988
|
+
previousTwist?: number;
|
|
12989
|
+
}
|
|
12990
|
+
|
|
12991
|
+
/**
|
|
12992
|
+
* Base class for IK constraints.
|
|
12993
|
+
*
|
|
12994
|
+
* Constraints are applied after each FABRIK iteration to enforce
|
|
12995
|
+
* joint limitations (angle limits, pole vectors, etc.).
|
|
12996
|
+
*
|
|
12997
|
+
* @public
|
|
12998
|
+
*/
|
|
12999
|
+
declare abstract class IKConstraint {
|
|
13000
|
+
/** The joint index this constraint applies to */
|
|
13001
|
+
protected _jointIndex: number;
|
|
13002
|
+
/**
|
|
13003
|
+
* Create an IK constraint.
|
|
13004
|
+
*
|
|
13005
|
+
* @param jointIndex - Index of the joint in the chain (0 = root)
|
|
13006
|
+
*/
|
|
13007
|
+
constructor(jointIndex: number);
|
|
13008
|
+
/**
|
|
13009
|
+
* Get the joint index this constraint applies to.
|
|
13010
|
+
*/
|
|
13011
|
+
get jointIndex(): number;
|
|
13012
|
+
/**
|
|
13013
|
+
* Apply the constraint to the joint chain.
|
|
13014
|
+
*
|
|
13015
|
+
* This method modifies joint positions to satisfy the constraint.
|
|
13016
|
+
*
|
|
13017
|
+
* @param joints - Array of all joints in the chain
|
|
13018
|
+
*/
|
|
13019
|
+
abstract apply(joints: IKJoint[]): void;
|
|
13020
|
+
}
|
|
13021
|
+
/**
|
|
13022
|
+
* Twist constraint configuration for a joint.
|
|
13023
|
+
*
|
|
13024
|
+
* @public
|
|
13025
|
+
*/
|
|
13026
|
+
interface TwistConstraint {
|
|
13027
|
+
/** Minimum twist angle in radians */
|
|
13028
|
+
minTwist: number;
|
|
13029
|
+
/** Maximum twist angle in radians */
|
|
13030
|
+
maxTwist: number;
|
|
13031
|
+
/** Smoothing factor [0-1], 0 = no smoothing, 1 = full smoothing */
|
|
13032
|
+
smoothFactor: number;
|
|
13033
|
+
}
|
|
13034
|
+
|
|
13035
|
+
/**
|
|
13036
|
+
* Represents a chain of joints for IK solving.
|
|
13037
|
+
*
|
|
13038
|
+
* @public
|
|
13039
|
+
*/
|
|
13040
|
+
declare class IKChain {
|
|
13041
|
+
/** Array of joints in the chain (root to end effector) */
|
|
13042
|
+
private _joints;
|
|
13043
|
+
/** Total length of the chain */
|
|
13044
|
+
private _totalLength;
|
|
13045
|
+
/** Constraints applied to joints */
|
|
13046
|
+
private _constraints;
|
|
13047
|
+
/**
|
|
13048
|
+
* Create an IK chain from an array of scene nodes.
|
|
13049
|
+
*
|
|
13050
|
+
* @param nodes - Array of scene nodes from root to end effector
|
|
13051
|
+
*/
|
|
13052
|
+
constructor(nodes: SceneNode[]);
|
|
13053
|
+
/**
|
|
13054
|
+
* Create an IK chain by traversing from a start node to an end node.
|
|
13055
|
+
*
|
|
13056
|
+
* @remarks
|
|
13057
|
+
* This method walks up the parent chain from the end node until it
|
|
13058
|
+
* reaches the start node, building the joint chain in the process.
|
|
13059
|
+
*
|
|
13060
|
+
* @param startNode - The root joint of the chain
|
|
13061
|
+
* @param endNode - The end effector joint
|
|
13062
|
+
* @returns The created IK chain
|
|
13063
|
+
*/
|
|
13064
|
+
static fromNodeHierarchy(startNode: SceneNode, endNode: SceneNode): IKChain;
|
|
13065
|
+
/**
|
|
13066
|
+
* Get all joints in the chain.
|
|
13067
|
+
*/
|
|
13068
|
+
get joints(): IKJoint[];
|
|
13069
|
+
/**
|
|
13070
|
+
* Get the root joint (first joint in the chain).
|
|
13071
|
+
*/
|
|
13072
|
+
get root(): IKJoint;
|
|
13073
|
+
/**
|
|
13074
|
+
* Get the end effector (last joint in the chain).
|
|
13075
|
+
*/
|
|
13076
|
+
get endEffector(): IKJoint;
|
|
13077
|
+
/**
|
|
13078
|
+
* Get the total length of the chain.
|
|
13079
|
+
*/
|
|
13080
|
+
get totalLength(): number;
|
|
13081
|
+
/**
|
|
13082
|
+
* Get the number of joints in the chain.
|
|
13083
|
+
*/
|
|
13084
|
+
get length(): number;
|
|
13085
|
+
/**
|
|
13086
|
+
* Update joint positions from their scene nodes.
|
|
13087
|
+
*/
|
|
13088
|
+
updateFromNodes(): void;
|
|
13089
|
+
/**
|
|
13090
|
+
* Store current positions as original positions.
|
|
13091
|
+
*/
|
|
13092
|
+
storeOriginalPositions(): void;
|
|
13093
|
+
/**
|
|
13094
|
+
* Restore joints to their original positions.
|
|
13095
|
+
*/
|
|
13096
|
+
restoreOriginalPositions(): void;
|
|
13097
|
+
/**
|
|
13098
|
+
* Add a constraint to a specific joint.
|
|
13099
|
+
*
|
|
13100
|
+
* @param constraint - The constraint to add
|
|
13101
|
+
*/
|
|
13102
|
+
addConstraint(constraint: IKConstraint): void;
|
|
13103
|
+
/**
|
|
13104
|
+
* Remove a constraint from the chain.
|
|
13105
|
+
*
|
|
13106
|
+
* @param constraint - The constraint to remove
|
|
13107
|
+
* @returns True if the constraint was found and removed
|
|
13108
|
+
*/
|
|
13109
|
+
removeConstraint(constraint: IKConstraint): boolean;
|
|
13110
|
+
/**
|
|
13111
|
+
* Clear all constraints from the chain.
|
|
13112
|
+
*/
|
|
13113
|
+
clearConstraints(): void;
|
|
13114
|
+
/**
|
|
13115
|
+
* Get all constraints in the chain.
|
|
13116
|
+
*/
|
|
13117
|
+
get constraints(): readonly IKConstraint[];
|
|
13118
|
+
/**
|
|
13119
|
+
* Apply all constraints to the joint chain.
|
|
13120
|
+
*/
|
|
13121
|
+
applyConstraints(): void;
|
|
13122
|
+
}
|
|
13123
|
+
|
|
13124
|
+
/**
|
|
13125
|
+
* Base class for IK solvers.
|
|
13126
|
+
*
|
|
13127
|
+
* @public
|
|
13128
|
+
*/
|
|
13129
|
+
declare abstract class IKSolver {
|
|
13130
|
+
/** The IK chain to solve */
|
|
13131
|
+
protected _chain: IKChain;
|
|
13132
|
+
/** Maximum number of iterations */
|
|
13133
|
+
protected _maxIterations: number;
|
|
13134
|
+
/** Convergence tolerance (distance threshold) */
|
|
13135
|
+
protected _tolerance: number;
|
|
13136
|
+
/**
|
|
13137
|
+
* Create an IK solver.
|
|
13138
|
+
*
|
|
13139
|
+
* @param chain - The IK chain to solve
|
|
13140
|
+
* @param maxIterations - Maximum number of iterations (default: 10)
|
|
13141
|
+
* @param tolerance - Convergence tolerance in world units (default: 0.001)
|
|
13142
|
+
*/
|
|
13143
|
+
constructor(chain: IKChain, maxIterations?: number, tolerance?: number);
|
|
13144
|
+
/**
|
|
13145
|
+
* Get the IK chain.
|
|
13146
|
+
*/
|
|
13147
|
+
get chain(): IKChain;
|
|
13148
|
+
/**
|
|
13149
|
+
* Set maximum number of iterations.
|
|
13150
|
+
*/
|
|
13151
|
+
setMaxIterations(value: number): void;
|
|
13152
|
+
/**
|
|
13153
|
+
* Get maximum number of iterations.
|
|
13154
|
+
*/
|
|
13155
|
+
getMaxIterations(): number;
|
|
13156
|
+
/**
|
|
13157
|
+
* Set convergence tolerance.
|
|
13158
|
+
*/
|
|
13159
|
+
setTolerance(value: number): void;
|
|
13160
|
+
/**
|
|
13161
|
+
* Get convergence tolerance.
|
|
13162
|
+
*/
|
|
13163
|
+
getTolerance(): number;
|
|
13164
|
+
/**
|
|
13165
|
+
* Solve the IK chain to reach the target position.
|
|
13166
|
+
*
|
|
13167
|
+
* @param target - Target position for the end effector
|
|
13168
|
+
* @returns True if converged, false otherwise
|
|
13169
|
+
*/
|
|
13170
|
+
abstract solve(target: Vector3): boolean;
|
|
13171
|
+
/**
|
|
13172
|
+
* Apply the solved positions to the scene nodes as rotations.
|
|
13173
|
+
*
|
|
13174
|
+
* @param weight - Blend weight (0 = original, 1 = full IK)
|
|
13175
|
+
*/
|
|
13176
|
+
abstract applyToNodes(weight?: number): void;
|
|
13177
|
+
}
|
|
13178
|
+
|
|
13179
|
+
/**
|
|
13180
|
+
* Skeleton modifier for IK solvers.
|
|
13181
|
+
*
|
|
13182
|
+
* Integrates IK solving into the skeleton post-processing pipeline.
|
|
13183
|
+
* The IK solver is executed each frame and results are blended with the base animation.
|
|
13184
|
+
*
|
|
13185
|
+
* @public
|
|
13186
|
+
*/
|
|
13187
|
+
declare class IKModifier<Solver extends IKSolver = IKSolver> extends SkeletonModifier {
|
|
13188
|
+
private _solver;
|
|
13189
|
+
private _target;
|
|
13190
|
+
/**
|
|
13191
|
+
* Create an IK post-processor.
|
|
13192
|
+
*
|
|
13193
|
+
* @param solver - The IK solver to integrate
|
|
13194
|
+
* @param target - Target position for the end effector
|
|
13195
|
+
* @param weight - Blend weight [0-1] (default: 1.0)
|
|
13196
|
+
*/
|
|
13197
|
+
constructor(solver: Solver, target: Vector3, weight?: number);
|
|
13198
|
+
/**
|
|
13199
|
+
* Get the IK solver.
|
|
13200
|
+
*/
|
|
13201
|
+
get solver(): Solver;
|
|
13202
|
+
/**
|
|
13203
|
+
* Get the current target position.
|
|
13204
|
+
*/
|
|
13205
|
+
get target(): Vector3;
|
|
13206
|
+
/**
|
|
13207
|
+
* Set the target position for the end effector.
|
|
13208
|
+
*
|
|
13209
|
+
* @param target - New target position (will be cloned)
|
|
13210
|
+
*/
|
|
13211
|
+
setTarget(target: Vector3): void;
|
|
13212
|
+
/**
|
|
13213
|
+
* Apply IK solving to skeleton joints.
|
|
13214
|
+
*/
|
|
13215
|
+
apply(_skeleton: Skeleton, _deltaTime: number): void;
|
|
13216
|
+
/**
|
|
13217
|
+
* Reset the IK solver to initial state.
|
|
13218
|
+
*/
|
|
13219
|
+
reset(): void;
|
|
13220
|
+
}
|
|
13221
|
+
|
|
13222
|
+
/**
|
|
13223
|
+
* Represents a particle in the spring system
|
|
13224
|
+
*
|
|
13225
|
+
* @public
|
|
13226
|
+
*/
|
|
13227
|
+
interface SpringParticle {
|
|
13228
|
+
/** Current position in world space */
|
|
13229
|
+
position: Vector3;
|
|
13230
|
+
/** Previous position for Verlet integration */
|
|
13231
|
+
prevPosition: Vector3;
|
|
13232
|
+
/** Original position for reset */
|
|
13233
|
+
originalPosition: Vector3;
|
|
13234
|
+
/** Original world rotation (for calculating rotation delta) */
|
|
13235
|
+
originalRotation: Quaternion | null;
|
|
13236
|
+
/** Mass of the particle (affects inertia) */
|
|
13237
|
+
mass: number;
|
|
13238
|
+
/** Damping coefficient [0-1] (0 = no damping, 1 = full damping) */
|
|
13239
|
+
damping: number;
|
|
13240
|
+
/** Whether this particle is fixed (anchor point) */
|
|
13241
|
+
fixed: boolean;
|
|
13242
|
+
/** Associated scene node (optional) */
|
|
13243
|
+
node: Nullable<SceneNode>;
|
|
13244
|
+
/** Previous frame position (used to calculate velocity for inertial forces) */
|
|
13245
|
+
lastFramePosition: Vector3;
|
|
13246
|
+
/** Position history for rotation center estimation (for fixed particles) */
|
|
13247
|
+
positionHistory?: Vector3[];
|
|
13248
|
+
}
|
|
13249
|
+
/**
|
|
13250
|
+
* Creates a new spring particle
|
|
13251
|
+
*
|
|
13252
|
+
* @public
|
|
13253
|
+
*/
|
|
13254
|
+
declare function createSpringParticle(position: Vector3, options?: {
|
|
13255
|
+
mass?: number;
|
|
13256
|
+
damping?: number;
|
|
13257
|
+
fixed?: boolean;
|
|
13258
|
+
node?: SceneNode;
|
|
13259
|
+
originalRotation?: Quaternion;
|
|
13260
|
+
}): SpringParticle;
|
|
13261
|
+
|
|
13262
|
+
/**
|
|
13263
|
+
* Represents a spring constraint between two particles
|
|
13264
|
+
*
|
|
13265
|
+
* @public
|
|
13266
|
+
*/
|
|
13267
|
+
interface SpringConstraint {
|
|
13268
|
+
/** Index of the first particle */
|
|
13269
|
+
particleA: number;
|
|
13270
|
+
/** Index of the second particle */
|
|
13271
|
+
particleB: number;
|
|
13272
|
+
/** Rest length of the spring */
|
|
13273
|
+
restLength: number;
|
|
13274
|
+
/** Stiffness coefficient [0-1] used by Verlet solver (0 = no constraint, 1 = rigid) */
|
|
13275
|
+
stiffness: number;
|
|
13276
|
+
/**
|
|
13277
|
+
* XPBD compliance (inverse stiffness) in m/N.
|
|
13278
|
+
* 0 = perfectly rigid, larger values = softer spring.
|
|
13279
|
+
* Typical ranges: 0 (rigid) ~ 1e-7 (very stiff) ~ 1e-3 (soft cloth) ~ 1e-1 (rubber band).
|
|
13280
|
+
* Only used when solver is 'xpbd'.
|
|
13281
|
+
*/
|
|
13282
|
+
compliance: number;
|
|
13283
|
+
/**
|
|
13284
|
+
* XPBD Lagrange multiplier accumulator, reset to 0 at the start of each time step.
|
|
13285
|
+
* Managed internally by the solver — do not set manually.
|
|
13286
|
+
*/
|
|
13287
|
+
lambda: number;
|
|
13288
|
+
}
|
|
13289
|
+
/**
|
|
13290
|
+
* Creates a new spring constraint
|
|
13291
|
+
*
|
|
13292
|
+
* @public
|
|
13293
|
+
*/
|
|
13294
|
+
declare function createSpringConstraint(particleA: number, particleB: number, restLength: number, stiffness?: number, compliance?: number): SpringConstraint;
|
|
13295
|
+
|
|
13296
|
+
/**
|
|
13297
|
+
* Manages a chain of spring particles and constraints
|
|
13298
|
+
*
|
|
13299
|
+
* @public
|
|
13300
|
+
*/
|
|
13301
|
+
declare class SpringChain {
|
|
13302
|
+
/** Array of particles in the chain */
|
|
13303
|
+
particles: SpringParticle[];
|
|
13304
|
+
/** Array of constraints between particles */
|
|
13305
|
+
constraints: SpringConstraint[];
|
|
13306
|
+
constructor();
|
|
13307
|
+
/**
|
|
13308
|
+
* Creates a spring chain from a bone hierarchy
|
|
13309
|
+
* @param startNode - Root node of the bone chain
|
|
13310
|
+
* @param endNode - End node of the bone chain (optional, if null uses all descendants)
|
|
13311
|
+
* @param options - Additional options
|
|
13312
|
+
* @returns A new SpringChain instance
|
|
13313
|
+
*/
|
|
13314
|
+
static fromBoneChain(startNode: SceneNode, endNode?: SceneNode | null, options?: {
|
|
13315
|
+
mass?: number;
|
|
13316
|
+
damping?: number;
|
|
13317
|
+
stiffness?: number;
|
|
13318
|
+
}): SpringChain;
|
|
13319
|
+
/**
|
|
13320
|
+
* Adds a particle to the chain
|
|
13321
|
+
* @param particle - The particle to add
|
|
13322
|
+
* @returns The index of the added particle
|
|
13323
|
+
*/
|
|
13324
|
+
addParticle(particle: SpringParticle): number;
|
|
13325
|
+
/**
|
|
13326
|
+
* Adds a constraint to the chain
|
|
13327
|
+
* @param constraint - The constraint to add
|
|
13328
|
+
*/
|
|
13329
|
+
addConstraint(constraint: SpringConstraint): void;
|
|
13330
|
+
/**
|
|
13331
|
+
* Adds cross constraints between particles for cloth-like behavior
|
|
13332
|
+
* @param stiffness - Stiffness of the cross constraints
|
|
13333
|
+
* @param skipDistance - Distance between particles to connect (default: 2)
|
|
13334
|
+
*/
|
|
13335
|
+
addCrossConstraints(stiffness?: number, skipDistance?: number): void;
|
|
13336
|
+
/**
|
|
13337
|
+
* Resets all particles to their original positions
|
|
13338
|
+
*/
|
|
13339
|
+
reset(): void;
|
|
13340
|
+
}
|
|
13341
|
+
|
|
13342
|
+
/**
|
|
13343
|
+
* Base interface for spring collision shapes
|
|
13344
|
+
*
|
|
13345
|
+
* @public
|
|
13346
|
+
*/
|
|
13347
|
+
interface SpringCollider {
|
|
13348
|
+
/** Type of collider */
|
|
13349
|
+
type: 'sphere' | 'capsule' | 'plane';
|
|
13350
|
+
/** Associated scene node (optional, for dynamic colliders) */
|
|
13351
|
+
node?: Nullable<SceneNode>;
|
|
13352
|
+
/** Whether this collider is enabled */
|
|
13353
|
+
enabled: boolean;
|
|
13354
|
+
}
|
|
13355
|
+
/**
|
|
13356
|
+
* Sphere collider for spring collision detection
|
|
13357
|
+
*
|
|
13358
|
+
* @public
|
|
13359
|
+
*/
|
|
13360
|
+
interface SphereCollider extends SpringCollider {
|
|
13361
|
+
type: 'sphere';
|
|
13362
|
+
/** Center position in world space */
|
|
13363
|
+
center: Vector3;
|
|
13364
|
+
/** Radius of the sphere */
|
|
13365
|
+
radius: number;
|
|
13366
|
+
/** Local offset from node (if node is set) */
|
|
13367
|
+
localOffset?: Vector3;
|
|
13368
|
+
}
|
|
13369
|
+
/**
|
|
13370
|
+
* Capsule collider for spring collision detection
|
|
13371
|
+
*
|
|
13372
|
+
* @public
|
|
13373
|
+
*/
|
|
13374
|
+
interface CapsuleCollider extends SpringCollider {
|
|
13375
|
+
type: 'capsule';
|
|
13376
|
+
/** Start point of the capsule axis in world space */
|
|
13377
|
+
start: Vector3;
|
|
13378
|
+
/** End point of the capsule axis in world space */
|
|
13379
|
+
end: Vector3;
|
|
13380
|
+
/** Radius of the capsule */
|
|
13381
|
+
radius: number;
|
|
13382
|
+
/** Local start offset from node (if node is set) */
|
|
13383
|
+
localStartOffset?: Vector3;
|
|
13384
|
+
/** Local end offset from node (if node is set) */
|
|
13385
|
+
localEndOffset?: Vector3;
|
|
13386
|
+
}
|
|
13387
|
+
/**
|
|
13388
|
+
* Plane collider for spring collision detection
|
|
13389
|
+
*
|
|
13390
|
+
* @public
|
|
13391
|
+
*/
|
|
13392
|
+
interface PlaneCollider extends SpringCollider {
|
|
13393
|
+
type: 'plane';
|
|
13394
|
+
/** Point on the plane in world space */
|
|
13395
|
+
point: Vector3;
|
|
13396
|
+
/** Normal vector of the plane (should be normalized) */
|
|
13397
|
+
normal: Vector3;
|
|
13398
|
+
/** Local point offset from node (if node is set) */
|
|
13399
|
+
localPointOffset?: Vector3;
|
|
13400
|
+
/** Local normal direction (if node is set) */
|
|
13401
|
+
localNormal?: Vector3;
|
|
13402
|
+
}
|
|
13403
|
+
/**
|
|
13404
|
+
* Creates a sphere collider
|
|
13405
|
+
* @param centerOrOffset - Center position in world space, or local offset if node is provided
|
|
13406
|
+
* @param radius - Radius of the sphere
|
|
13407
|
+
* @param node - Optional scene node to attach to (if provided, centerOrOffset is treated as local offset)
|
|
13408
|
+
*
|
|
13409
|
+
* @public
|
|
13410
|
+
*/
|
|
13411
|
+
declare function createSphereCollider(centerOrOffset: Vector3, radius: number, node?: SceneNode): SphereCollider;
|
|
13412
|
+
/**
|
|
13413
|
+
* Creates a capsule collider
|
|
13414
|
+
* @param startOrOffset - Start point in world space, or local offset if node is provided
|
|
13415
|
+
* @param endOrOffset - End point in world space, or local offset if node is provided
|
|
13416
|
+
* @param radius - Radius of the capsule
|
|
13417
|
+
* @param node - Optional scene node to attach to (if provided, offsets are treated as local)
|
|
13418
|
+
*
|
|
13419
|
+
* @public
|
|
13420
|
+
*/
|
|
13421
|
+
declare function createCapsuleCollider(startOrOffset: Vector3, endOrOffset: Vector3, radius: number, node?: SceneNode): CapsuleCollider;
|
|
13422
|
+
/**
|
|
13423
|
+
* Creates a plane collider
|
|
13424
|
+
* @param pointOrOffset - Point on plane in world space, or local offset if node is provided
|
|
13425
|
+
* @param normal - Normal vector (will be normalized)
|
|
13426
|
+
* @param node - Optional scene node to attach to (if provided, pointOrOffset is treated as local offset)
|
|
13427
|
+
*
|
|
13428
|
+
* @public
|
|
13429
|
+
*/
|
|
13430
|
+
declare function createPlaneCollider(pointOrOffset: Vector3, normal: Vector3, node?: SceneNode): PlaneCollider;
|
|
13431
|
+
/**
|
|
13432
|
+
* Resolves collision between a particle and a sphere collider
|
|
13433
|
+
* @returns true if collision occurred
|
|
13434
|
+
*
|
|
13435
|
+
* @public
|
|
13436
|
+
*/
|
|
13437
|
+
declare function resolveSphereCollision(particlePos: Vector3, collider: SphereCollider): boolean;
|
|
13438
|
+
/**
|
|
13439
|
+
* Resolves collision between a particle and a capsule collider
|
|
13440
|
+
* @returns true if collision occurred
|
|
13441
|
+
*
|
|
13442
|
+
* @public
|
|
13443
|
+
*/
|
|
13444
|
+
declare function resolveCapsuleCollision(particlePos: Vector3, collider: CapsuleCollider): boolean;
|
|
13445
|
+
/**
|
|
13446
|
+
* Resolves collision between a particle and a plane collider
|
|
13447
|
+
* @returns true if collision occurred
|
|
13448
|
+
*
|
|
13449
|
+
* @public
|
|
13450
|
+
*/
|
|
13451
|
+
declare function resolvePlaneCollision(particlePos: Vector3, collider: PlaneCollider): boolean;
|
|
13452
|
+
/**
|
|
13453
|
+
* Updates collider position from its associated node
|
|
13454
|
+
*
|
|
13455
|
+
* @public
|
|
13456
|
+
*/
|
|
13457
|
+
declare function updateColliderFromNode(collider: SpringCollider): void;
|
|
13458
|
+
|
|
13459
|
+
/**
|
|
13460
|
+
* Options for creating a SpringSystem
|
|
13461
|
+
*
|
|
13462
|
+
* @public
|
|
13463
|
+
*/
|
|
13464
|
+
interface SpringSystemOptions {
|
|
13465
|
+
/** Number of constraint solver iterations (default: 5) */
|
|
13466
|
+
iterations?: number;
|
|
13467
|
+
/** Gravity force vector (default: (0, -9.8, 0)) */
|
|
13468
|
+
gravity?: Vector3;
|
|
13469
|
+
/** Wind force vector (default: (0, 0, 0)) */
|
|
13470
|
+
wind?: Vector3;
|
|
13471
|
+
/** Enable inertial forces (centrifugal/Coriolis) when root rotates (default: true) */
|
|
13472
|
+
enableInertialForces?: boolean;
|
|
13473
|
+
/** Centrifugal force multiplier (default: 1.0) */
|
|
13474
|
+
centrifugalScale?: number;
|
|
13475
|
+
/** Coriolis force multiplier (default: 1.0) */
|
|
13476
|
+
coriolisScale?: number;
|
|
13477
|
+
/**
|
|
13478
|
+
* Constraint solver type (default: 'verlet').
|
|
13479
|
+
* - 'verlet': Classic Verlet integration with iterative position correction.
|
|
13480
|
+
* stiffness [0-1] controls correction strength per iteration.
|
|
13481
|
+
* - 'xpbd': Extended Position-Based Dynamics (Müller et al. 2020).
|
|
13482
|
+
* Uses compliance (inverse stiffness in m/N) for physically correct,
|
|
13483
|
+
* iteration-count-independent constraint solving.
|
|
13484
|
+
*/
|
|
13485
|
+
solver?: 'verlet' | 'xpbd';
|
|
13486
|
+
}
|
|
13487
|
+
/**
|
|
13488
|
+
* Physics engine for spring-based particle simulation
|
|
13489
|
+
* Uses Verlet integration and iterative constraint solving
|
|
13490
|
+
*
|
|
13491
|
+
* @public
|
|
13492
|
+
*/
|
|
13493
|
+
declare class SpringSystem {
|
|
13494
|
+
private _chain;
|
|
13495
|
+
private _iterations;
|
|
13496
|
+
private _gravity;
|
|
13497
|
+
private _wind;
|
|
13498
|
+
private _enableInertialForces;
|
|
13499
|
+
private _centrifugalScale;
|
|
13500
|
+
private _coriolisScale;
|
|
13501
|
+
private _colliders;
|
|
13502
|
+
private _solver;
|
|
13503
|
+
constructor(chain: SpringChain, options?: SpringSystemOptions);
|
|
13504
|
+
/**
|
|
13505
|
+
* Updates the physics simulation
|
|
13506
|
+
* @param deltaTime - Time step in seconds
|
|
13507
|
+
*/
|
|
13508
|
+
update(deltaTime: number): void;
|
|
13509
|
+
/**
|
|
13510
|
+
* Updates fixed particles to match their scene node positions
|
|
13511
|
+
*/
|
|
13512
|
+
private updateFixedParticles;
|
|
13513
|
+
/**
|
|
13514
|
+
* Calculates global rotation parameters from fixed particle movements
|
|
13515
|
+
* Uses position history to estimate rotation center
|
|
13516
|
+
*/
|
|
13517
|
+
private calculateGlobalRotation;
|
|
13518
|
+
/**
|
|
13519
|
+
* Estimates rotation center from a single particle's position history
|
|
13520
|
+
* Uses circular motion fitting
|
|
13521
|
+
*/
|
|
13522
|
+
private estimateRotationCenterFromHistory;
|
|
13523
|
+
/**
|
|
13524
|
+
* Calculates the center of a circle passing through 3 points
|
|
13525
|
+
* Uses perpendicular bisector method
|
|
13526
|
+
*/
|
|
13527
|
+
private calculateCircleCenter;
|
|
13528
|
+
/**
|
|
13529
|
+
* Calculates inertial acceleration for a particle in a rotating reference frame
|
|
13530
|
+
*/
|
|
13531
|
+
private calculateInertialAcceleration;
|
|
13532
|
+
/**
|
|
13533
|
+
* Solves a single spring constraint using XPBD (Extended Position-Based Dynamics).
|
|
13534
|
+
*
|
|
13535
|
+
* Reference: Müller et al., "Detailed Rigid Body Simulation with Extended Position Based Dynamics", 2020.
|
|
13536
|
+
*
|
|
13537
|
+
* The XPBD correction for a distance constraint C(x) = |x_b - x_a| - L is:
|
|
13538
|
+
* α̃ = compliance / dt² (scaled compliance)
|
|
13539
|
+
* Δλ = (-C - α̃·λ) / (w_a + w_b + α̃)
|
|
13540
|
+
* λ += Δλ
|
|
13541
|
+
* Δx_a = -w_a · Δλ · n̂
|
|
13542
|
+
* Δx_b = +w_b · Δλ · n̂
|
|
13543
|
+
* where w = 1/mass (0 for fixed particles), n̂ = unit vector from a to b.
|
|
13544
|
+
*/
|
|
13545
|
+
private solveConstraintXPBD;
|
|
13546
|
+
/**
|
|
13547
|
+
* Solves a single spring constraint (Verlet / PBD)
|
|
13548
|
+
*/
|
|
13549
|
+
private solveConstraint;
|
|
13550
|
+
/**
|
|
13551
|
+
* Solves collisions for all particles
|
|
13552
|
+
*/
|
|
13553
|
+
private solveCollisions;
|
|
13554
|
+
/**
|
|
13555
|
+
* Applies simulation results to scene nodes
|
|
13556
|
+
* @param weight - Blend weight [0-1] (default: 1.0)
|
|
13557
|
+
*/
|
|
13558
|
+
applyToNodes(weight?: number): void;
|
|
13559
|
+
/**
|
|
13560
|
+
* Resets the simulation to initial state
|
|
13561
|
+
*/
|
|
13562
|
+
reset(): void;
|
|
13563
|
+
/**
|
|
13564
|
+
* Gets the spring chain
|
|
13565
|
+
*/
|
|
13566
|
+
get chain(): SpringChain;
|
|
13567
|
+
/**
|
|
13568
|
+
* Gets the current gravity
|
|
13569
|
+
*/
|
|
13570
|
+
get gravity(): Vector3;
|
|
13571
|
+
set gravity(gravity: Vector3);
|
|
13572
|
+
/**
|
|
13573
|
+
* Gets the current wind
|
|
13574
|
+
*/
|
|
13575
|
+
get wind(): Vector3;
|
|
13576
|
+
set wind(wind: Vector3);
|
|
13577
|
+
/**
|
|
13578
|
+
* Gets the number of iterations
|
|
13579
|
+
*/
|
|
13580
|
+
get iterations(): number;
|
|
13581
|
+
set iterations(count: number);
|
|
13582
|
+
/**
|
|
13583
|
+
* Gets whether inertial forces are enabled
|
|
13584
|
+
*/
|
|
13585
|
+
get enableInertialForces(): boolean;
|
|
13586
|
+
set enableInertialForces(enabled: boolean);
|
|
13587
|
+
/**
|
|
13588
|
+
* Gets the centrifugal force scale
|
|
13589
|
+
*/
|
|
13590
|
+
get centrifugalScale(): number;
|
|
13591
|
+
set centrifugalScale(scale: number);
|
|
13592
|
+
/**
|
|
13593
|
+
* Gets the Coriolis force scale
|
|
13594
|
+
*/
|
|
13595
|
+
get coriolisScale(): number;
|
|
13596
|
+
/**
|
|
13597
|
+
* Sets the Coriolis force scale
|
|
13598
|
+
*/
|
|
13599
|
+
set coriolisScale(scale: number);
|
|
13600
|
+
/**
|
|
13601
|
+
* Gets the constraint solver type
|
|
13602
|
+
*/
|
|
13603
|
+
get solver(): 'verlet' | 'xpbd';
|
|
13604
|
+
/**
|
|
13605
|
+
* Sets the constraint solver type.
|
|
13606
|
+
* Switching to 'xpbd' resets all Lagrange multipliers.
|
|
13607
|
+
*/
|
|
13608
|
+
set solver(type: 'verlet' | 'xpbd');
|
|
13609
|
+
/**
|
|
13610
|
+
* Adds a collider to the system
|
|
13611
|
+
*/
|
|
13612
|
+
addCollider(collider: SpringCollider): void;
|
|
13613
|
+
/**
|
|
13614
|
+
* Removes a collider from the system
|
|
13615
|
+
*/
|
|
13616
|
+
removeCollider(collider: SpringCollider): boolean;
|
|
13617
|
+
/**
|
|
13618
|
+
* Clears all colliders
|
|
13619
|
+
*/
|
|
13620
|
+
clearColliders(): void;
|
|
13621
|
+
/**
|
|
13622
|
+
* Gets all colliders
|
|
13623
|
+
*/
|
|
13624
|
+
get colliders(): SpringCollider[];
|
|
13625
|
+
}
|
|
13626
|
+
|
|
13627
|
+
/**
|
|
13628
|
+
* Post-processor wrapper for spring physics systems.
|
|
13629
|
+
*
|
|
13630
|
+
* Integrates spring-based physics simulation into the skeleton post-processing pipeline.
|
|
13631
|
+
* The spring system is updated each frame and results are blended with the base animation.
|
|
13632
|
+
*
|
|
13633
|
+
* @public
|
|
13634
|
+
*/
|
|
13635
|
+
declare class SpringModifier extends SkeletonModifier {
|
|
13636
|
+
private _springSystem;
|
|
13637
|
+
/**
|
|
13638
|
+
* Create a spring post-processor.
|
|
13639
|
+
*
|
|
13640
|
+
* @param springSystem - The spring system to integrate
|
|
13641
|
+
* @param weight - Blend weight [0-1] (default: 1.0)
|
|
13642
|
+
*/
|
|
13643
|
+
constructor(springSystem: SpringSystem, weight?: number);
|
|
13644
|
+
/**
|
|
13645
|
+
* Get the spring system.
|
|
13646
|
+
*/
|
|
13647
|
+
get springSystem(): SpringSystem;
|
|
13648
|
+
/**
|
|
13649
|
+
* Apply spring physics to skeleton joints.
|
|
13650
|
+
*/
|
|
13651
|
+
apply(_skeleton: Skeleton, deltaTime: number): void;
|
|
13652
|
+
/**
|
|
13653
|
+
* Reset the spring system to initial state.
|
|
13654
|
+
*/
|
|
13655
|
+
reset(): void;
|
|
13656
|
+
}
|
|
13657
|
+
|
|
13658
|
+
/**
|
|
13659
|
+
* FABRIK (Forward And Backward Reaching Inverse Kinematics) solver.
|
|
13660
|
+
*
|
|
13661
|
+
* @remarks
|
|
13662
|
+
* FABRIK is an iterative IK algorithm that alternates between:
|
|
13663
|
+
* 1. Forward pass: Move from end effector to root, pulling joints toward target
|
|
13664
|
+
* 2. Backward pass: Move from root to end effector, restoring root position
|
|
13665
|
+
*
|
|
13666
|
+
* Supports multiple pole vectors to control the bending direction of different joints.
|
|
13667
|
+
*
|
|
13668
|
+
* @public
|
|
13669
|
+
*/
|
|
13670
|
+
declare class FABRIKSolver extends IKSolver {
|
|
13671
|
+
/** Map of joint index to pole vector configuration */
|
|
13672
|
+
private _poleVectors;
|
|
13673
|
+
/** Twist constraints for each joint (indexed by joint index) */
|
|
13674
|
+
private _twistConstraints;
|
|
13675
|
+
/**
|
|
13676
|
+
* Create a FABRIK solver.
|
|
13677
|
+
*
|
|
13678
|
+
* @param chain - The IK chain to solve
|
|
13679
|
+
* @param maxIterations - Maximum number of iterations (default: 15)
|
|
13680
|
+
* @param tolerance - Convergence tolerance in world units (default: 0.001)
|
|
13681
|
+
*/
|
|
13682
|
+
constructor(chain: IKChain, maxIterations?: number, tolerance?: number);
|
|
13683
|
+
/**
|
|
13684
|
+
* Set twist constraint for a specific joint.
|
|
13685
|
+
*
|
|
13686
|
+
* @param jointIndex - Index of the joint
|
|
13687
|
+
* @param minTwist - Minimum twist angle in radians
|
|
13688
|
+
* @param maxTwist - Maximum twist angle in radians
|
|
13689
|
+
* @param smoothFactor - Smoothing factor [0-1] (default: 0.3)
|
|
13690
|
+
*/
|
|
13691
|
+
setTwistConstraint(jointIndex: number, minTwist: number, maxTwist: number, smoothFactor?: number): void;
|
|
13692
|
+
/**
|
|
13693
|
+
* Get twist constraint for a specific joint.
|
|
13694
|
+
*
|
|
13695
|
+
* @param jointIndex - Index of the joint
|
|
13696
|
+
* @returns Twist constraint or undefined if not set
|
|
13697
|
+
*/
|
|
13698
|
+
getTwistConstraint(jointIndex: number): TwistConstraint | undefined;
|
|
13699
|
+
/**
|
|
13700
|
+
* Remove twist constraint for a specific joint.
|
|
13701
|
+
*
|
|
13702
|
+
* @param jointIndex - Index of the joint
|
|
13703
|
+
* @returns True if a constraint was removed
|
|
13704
|
+
*/
|
|
13705
|
+
removeTwistConstraint(jointIndex: number): boolean;
|
|
13706
|
+
/**
|
|
13707
|
+
* Clear all twist constraints.
|
|
13708
|
+
*/
|
|
13709
|
+
clearTwistConstraints(): void;
|
|
13710
|
+
/**
|
|
13711
|
+
* Set pole vector for a specific joint.
|
|
13712
|
+
*
|
|
13713
|
+
* @param jointIndex - Index of the joint to apply pole vector to
|
|
13714
|
+
* @param poleVector - Pole vector position in world space
|
|
13715
|
+
* @param weight - Weight of the pole vector constraint (0-1, default: 1)
|
|
13716
|
+
*/
|
|
13717
|
+
setPoleVector(jointIndex: number, poleVector: Vector3, weight?: number): void;
|
|
13718
|
+
/**
|
|
13719
|
+
* Remove pole vector for a specific joint.
|
|
13720
|
+
*
|
|
13721
|
+
* @param jointIndex - Index of the joint to remove pole vector from
|
|
13722
|
+
* @returns True if a pole vector was removed, false if none existed
|
|
13723
|
+
*/
|
|
13724
|
+
removePoleVector(jointIndex: number): boolean;
|
|
13725
|
+
/**
|
|
13726
|
+
* Clear all pole vectors.
|
|
13727
|
+
*/
|
|
13728
|
+
clearPoleVectors(): void;
|
|
13729
|
+
/**
|
|
13730
|
+
* Get pole vector configuration for a specific joint.
|
|
13731
|
+
*
|
|
13732
|
+
* @param jointIndex - Index of the joint
|
|
13733
|
+
* @returns Pole vector configuration or undefined if not set
|
|
13734
|
+
*/
|
|
13735
|
+
getPoleVector(jointIndex: number): {
|
|
13736
|
+
position: Vector3;
|
|
13737
|
+
weight: number;
|
|
13738
|
+
} | undefined;
|
|
13739
|
+
/**
|
|
13740
|
+
* Check if a joint has a pole vector.
|
|
13741
|
+
*
|
|
13742
|
+
* @param jointIndex - Index of the joint
|
|
13743
|
+
* @returns True if the joint has a pole vector
|
|
13744
|
+
*/
|
|
13745
|
+
hasPoleVector(jointIndex: number): boolean;
|
|
13746
|
+
/**
|
|
13747
|
+
* Solve the IK chain to reach the target position using FABRIK algorithm.
|
|
13748
|
+
*
|
|
13749
|
+
* @param target - Target position for the end effector
|
|
13750
|
+
* @returns True if converged within tolerance, false otherwise
|
|
13751
|
+
*/
|
|
13752
|
+
solve(target: Vector3): boolean;
|
|
13753
|
+
/**
|
|
13754
|
+
* Apply the solved joint positions to scene nodes as rotations.
|
|
13755
|
+
*
|
|
13756
|
+
* @param weight - Blend weight (0 = original, 1 = full IK, default: 1)
|
|
13757
|
+
*/
|
|
13758
|
+
applyToNodes(weight?: number): void;
|
|
13759
|
+
/**
|
|
13760
|
+
* Forward pass: move from end effector toward root.
|
|
13761
|
+
* Each joint is pulled toward its child, maintaining bone length.
|
|
13762
|
+
* Constraints are applied immediately after each joint adjustment.
|
|
13763
|
+
*
|
|
13764
|
+
* @param target - Target position for end effector
|
|
13765
|
+
*/
|
|
13766
|
+
private _forwardPass;
|
|
13767
|
+
/**
|
|
13768
|
+
* Backward pass: move from root toward end effector.
|
|
13769
|
+
* Each joint is pulled toward its parent, maintaining bone length.
|
|
13770
|
+
* Constraints are applied immediately after each joint adjustment.
|
|
13771
|
+
*
|
|
13772
|
+
* @param rootPos - Original root position to restore
|
|
13773
|
+
*/
|
|
13774
|
+
private _backwardPass;
|
|
13775
|
+
/**
|
|
13776
|
+
* Apply constraints for a specific joint.
|
|
13777
|
+
* This is called during the FABRIK passes to integrate constraints into the algorithm.
|
|
13778
|
+
*
|
|
13779
|
+
* @param jointIndex - Index of the joint to apply constraints to
|
|
13780
|
+
*/
|
|
13781
|
+
private _applyConstraintsForJoint;
|
|
13782
|
+
/**
|
|
13783
|
+
* Apply pole vector twist to a specific joint.
|
|
13784
|
+
*
|
|
13785
|
+
* @remarks
|
|
13786
|
+
* This method adjusts the joint position to align with the pole vector.
|
|
13787
|
+
* It uses the same algorithm as IKPoleVectorConstraint but is integrated
|
|
13788
|
+
* into the solver for better performance and control.
|
|
13789
|
+
*
|
|
13790
|
+
* @param jointIndex - Index of the pole joint
|
|
13791
|
+
* @param poleVector - Pole vector position in world space
|
|
13792
|
+
* @param weight - Weight of the pole vector constraint (0-1)
|
|
13793
|
+
*/
|
|
13794
|
+
private _applyPoleVectorTwist;
|
|
13795
|
+
/**
|
|
13796
|
+
* Stretch the chain toward an unreachable target.
|
|
13797
|
+
* All joints are aligned in a straight line toward the target.
|
|
13798
|
+
*
|
|
13799
|
+
* @param target - Unreachable target position
|
|
13800
|
+
*/
|
|
13801
|
+
private _stretchToward;
|
|
13802
|
+
}
|
|
13803
|
+
|
|
13804
|
+
/**
|
|
13805
|
+
* Two Bone IK solver for chains with exactly 3 joints (2 bones).
|
|
13806
|
+
*
|
|
13807
|
+
* @remarks
|
|
13808
|
+
* This solver uses an analytical solution specifically optimized for
|
|
13809
|
+
* two-bone chains like arms (shoulder-elbow-wrist) or legs (hip-knee-ankle).
|
|
13810
|
+
* It's faster and more stable than iterative methods like FABRIK for this case.
|
|
13811
|
+
*
|
|
13812
|
+
* The solver supports an optional pole vector to control the bending direction
|
|
13813
|
+
* of the middle joint (elbow/knee).
|
|
13814
|
+
*
|
|
13815
|
+
* @public
|
|
13816
|
+
*/
|
|
13817
|
+
declare class TwoBoneIKSolver extends IKSolver {
|
|
13818
|
+
/** Optional pole vector position in world space */
|
|
13819
|
+
private _poleVector;
|
|
13820
|
+
/** Weight of the pole vector constraint (0-1) */
|
|
13821
|
+
private _poleWeight;
|
|
13822
|
+
/** Twist constraints for each joint (indexed by joint index) */
|
|
13823
|
+
private _twistConstraints;
|
|
13824
|
+
/**
|
|
13825
|
+
* Create a Two Bone IK solver.
|
|
13826
|
+
*
|
|
13827
|
+
* @param chain - The IK chain to solve (must have exactly 3 joints)
|
|
13828
|
+
* @param poleVector - Optional pole vector position in world space
|
|
13829
|
+
* @param poleWeight - Weight of the pole vector constraint (0-1, default: 1)
|
|
13830
|
+
*/
|
|
13831
|
+
constructor(chain: IKChain, poleVector?: Vector3 | null, poleWeight?: number);
|
|
13832
|
+
/**
|
|
13833
|
+
* Set twist constraint for a specific joint.
|
|
13834
|
+
*
|
|
13835
|
+
* @param jointIndex - Index of the joint (0 = root, 1 = middle)
|
|
13836
|
+
* @param minTwist - Minimum twist angle in radians
|
|
13837
|
+
* @param maxTwist - Maximum twist angle in radians
|
|
13838
|
+
* @param smoothFactor - Smoothing factor [0-1] (default: 0.3)
|
|
13839
|
+
*/
|
|
13840
|
+
setTwistConstraint(jointIndex: number, minTwist: number, maxTwist: number, smoothFactor?: number): void;
|
|
13841
|
+
/**
|
|
13842
|
+
* Get twist constraint for a specific joint.
|
|
13843
|
+
*
|
|
13844
|
+
* @param jointIndex - Index of the joint
|
|
13845
|
+
* @returns Twist constraint or undefined if not set
|
|
13846
|
+
*/
|
|
13847
|
+
getTwistConstraint(jointIndex: number): TwistConstraint | undefined;
|
|
13848
|
+
/**
|
|
13849
|
+
* Remove twist constraint for a specific joint.
|
|
13850
|
+
*
|
|
13851
|
+
* @param jointIndex - Index of the joint
|
|
13852
|
+
* @returns True if a constraint was removed
|
|
13853
|
+
*/
|
|
13854
|
+
removeTwistConstraint(jointIndex: number): boolean;
|
|
13855
|
+
/**
|
|
13856
|
+
* Clear all twist constraints.
|
|
13857
|
+
*/
|
|
13858
|
+
clearTwistConstraints(): void;
|
|
13859
|
+
/**
|
|
13860
|
+
* Get the pole vector position.
|
|
13861
|
+
*/
|
|
13862
|
+
get poleVector(): Vector3 | null;
|
|
13863
|
+
/**
|
|
13864
|
+
* Set the pole vector position.
|
|
13865
|
+
*/
|
|
13866
|
+
set poleVector(value: Vector3 | null);
|
|
13867
|
+
/**
|
|
13868
|
+
* Get the pole vector weight.
|
|
13869
|
+
*/
|
|
13870
|
+
get poleWeight(): number;
|
|
13871
|
+
/**
|
|
13872
|
+
* Set the pole vector weight (0-1).
|
|
13873
|
+
*/
|
|
13874
|
+
set poleWeight(value: number);
|
|
13875
|
+
/**
|
|
13876
|
+
* Solve the IK chain to reach the target position using Two Bone IK algorithm.
|
|
13877
|
+
*
|
|
13878
|
+
* @param target - Target position for the end effector
|
|
13879
|
+
* @returns True if the target is reachable, false if stretched to maximum
|
|
13880
|
+
*/
|
|
13881
|
+
solve(target: Vector3): boolean;
|
|
13882
|
+
/**
|
|
13883
|
+
* Apply all constraints to the joint chain.
|
|
13884
|
+
* After applying constraints, we need to restore bone lengths.
|
|
13885
|
+
*/
|
|
13886
|
+
private _applyConstraints;
|
|
13887
|
+
/**
|
|
13888
|
+
* Restore bone lengths after constraints have been applied.
|
|
13889
|
+
* This ensures that the chain maintains correct bone lengths.
|
|
13890
|
+
*/
|
|
13891
|
+
private _restoreBoneLengths;
|
|
13892
|
+
/**
|
|
13893
|
+
* Apply the solved joint positions to scene nodes as rotations.
|
|
13894
|
+
*
|
|
13895
|
+
* @param weight - Blend weight (0 = original, 1 = full IK, default: 1)
|
|
13896
|
+
*/
|
|
13897
|
+
applyToNodes(weight?: number): void;
|
|
13898
|
+
/**
|
|
13899
|
+
* Get a default bend normal when no pole vector is specified.
|
|
13900
|
+
* This tries to find a reasonable perpendicular direction.
|
|
13901
|
+
*
|
|
13902
|
+
* @param rootToTarget - Direction from root to target
|
|
13903
|
+
* @returns A normalized perpendicular vector
|
|
13904
|
+
*/
|
|
13905
|
+
private _getDefaultBendNormal;
|
|
13906
|
+
}
|
|
13907
|
+
|
|
13908
|
+
/**
|
|
13909
|
+
* CCD (Cyclic Coordinate Descent) IK solver.
|
|
13910
|
+
*
|
|
13911
|
+
* @remarks
|
|
13912
|
+
* CCD is an iterative IK algorithm that works by:
|
|
13913
|
+
* 1. Starting from the joint closest to the end effector
|
|
13914
|
+
* 2. Rotating each joint to point the end effector toward the target
|
|
13915
|
+
* 3. Moving backward through the chain to the root
|
|
13916
|
+
* 4. Repeating until convergence or max iterations
|
|
13917
|
+
*
|
|
13918
|
+
* CCD is generally faster than FABRIK and works well for chains of any length.
|
|
13919
|
+
* It's particularly good for tentacles, tails, and other flexible chains.
|
|
13920
|
+
*
|
|
13921
|
+
* Supports multiple pole vectors to control the bending direction of different joints.
|
|
13922
|
+
*
|
|
13923
|
+
* @public
|
|
13924
|
+
*/
|
|
13925
|
+
declare class CCDSolver extends IKSolver {
|
|
13926
|
+
/** Map of joint index to pole vector configuration */
|
|
13927
|
+
private _poleVectors;
|
|
13928
|
+
/** Twist constraints for each joint (indexed by joint index) */
|
|
13929
|
+
private _twistConstraints;
|
|
13930
|
+
/**
|
|
13931
|
+
* Create a CCD solver.
|
|
13932
|
+
*
|
|
13933
|
+
* @param chain - The IK chain to solve
|
|
13934
|
+
* @param maxIterations - Maximum number of iterations (default: 10)
|
|
13935
|
+
* @param tolerance - Convergence tolerance in world units (default: 0.001)
|
|
13936
|
+
*/
|
|
13937
|
+
constructor(chain: IKChain, maxIterations?: number, tolerance?: number);
|
|
13938
|
+
/**
|
|
13939
|
+
* Set twist constraint for a specific joint.
|
|
13940
|
+
*
|
|
13941
|
+
* @param jointIndex - Index of the joint
|
|
13942
|
+
* @param minTwist - Minimum twist angle in radians
|
|
13943
|
+
* @param maxTwist - Maximum twist angle in radians
|
|
13944
|
+
* @param smoothFactor - Smoothing factor [0-1] (default: 0.3)
|
|
13945
|
+
*/
|
|
13946
|
+
setTwistConstraint(jointIndex: number, minTwist: number, maxTwist: number, smoothFactor?: number): void;
|
|
13947
|
+
/**
|
|
13948
|
+
* Get twist constraint for a specific joint.
|
|
13949
|
+
*
|
|
13950
|
+
* @param jointIndex - Index of the joint
|
|
13951
|
+
* @returns Twist constraint or undefined if not set
|
|
13952
|
+
*/
|
|
13953
|
+
getTwistConstraint(jointIndex: number): TwistConstraint | undefined;
|
|
13954
|
+
/**
|
|
13955
|
+
* Remove twist constraint for a specific joint.
|
|
13956
|
+
*
|
|
13957
|
+
* @param jointIndex - Index of the joint
|
|
13958
|
+
* @returns True if a constraint was removed
|
|
13959
|
+
*/
|
|
13960
|
+
removeTwistConstraint(jointIndex: number): boolean;
|
|
13961
|
+
/**
|
|
13962
|
+
* Clear all twist constraints.
|
|
13963
|
+
*/
|
|
13964
|
+
clearTwistConstraints(): void;
|
|
13965
|
+
/**
|
|
13966
|
+
* Set pole vector for a specific joint.
|
|
13967
|
+
*
|
|
13968
|
+
* @param jointIndex - Index of the joint to apply pole vector to
|
|
13969
|
+
* @param poleVector - Pole vector position in world space
|
|
13970
|
+
* @param weight - Weight of the pole vector constraint (0-1, default: 1)
|
|
13971
|
+
*/
|
|
13972
|
+
setPoleVector(jointIndex: number, poleVector: Vector3, weight?: number): void;
|
|
13973
|
+
/**
|
|
13974
|
+
* Remove pole vector for a specific joint.
|
|
13975
|
+
*
|
|
13976
|
+
* @param jointIndex - Index of the joint to remove pole vector from
|
|
13977
|
+
* @returns True if a pole vector was removed, false if none existed
|
|
13978
|
+
*/
|
|
13979
|
+
removePoleVector(jointIndex: number): boolean;
|
|
13980
|
+
/**
|
|
13981
|
+
* Clear all pole vectors.
|
|
13982
|
+
*/
|
|
13983
|
+
clearPoleVectors(): void;
|
|
13984
|
+
/**
|
|
13985
|
+
* Get pole vector configuration for a specific joint.
|
|
13986
|
+
*
|
|
13987
|
+
* @param jointIndex - Index of the joint
|
|
13988
|
+
* @returns Pole vector configuration or undefined if not set
|
|
13989
|
+
*/
|
|
13990
|
+
getPoleVector(jointIndex: number): {
|
|
13991
|
+
position: Vector3;
|
|
13992
|
+
weight: number;
|
|
13993
|
+
} | undefined;
|
|
13994
|
+
/**
|
|
13995
|
+
* Check if a joint has a pole vector.
|
|
13996
|
+
*
|
|
13997
|
+
* @param jointIndex - Index of the joint
|
|
13998
|
+
* @returns True if the joint has a pole vector
|
|
13999
|
+
*/
|
|
14000
|
+
hasPoleVector(jointIndex: number): boolean;
|
|
14001
|
+
/**
|
|
14002
|
+
* Solve the IK chain to reach the target position using CCD algorithm.
|
|
14003
|
+
*
|
|
14004
|
+
* @param target - Target position for the end effector
|
|
14005
|
+
* @returns True if converged within tolerance, false otherwise
|
|
14006
|
+
*/
|
|
14007
|
+
solve(target: Vector3): boolean;
|
|
14008
|
+
/**
|
|
14009
|
+
* Rotate all joints from the given index to the end effector around a pivot point.
|
|
14010
|
+
*
|
|
14011
|
+
* @param startIndex - Index of the joint to start rotating from
|
|
14012
|
+
* @param rotation - Rotation to apply
|
|
14013
|
+
* @param pivot - Pivot point for rotation (position of the joint being adjusted)
|
|
14014
|
+
*/
|
|
14015
|
+
private _rotateJointsFromIndex;
|
|
14016
|
+
/**
|
|
14017
|
+
* Apply all pole vector constraints.
|
|
14018
|
+
*
|
|
14019
|
+
* @remarks
|
|
14020
|
+
* This method applies all configured pole vectors to their respective joints.
|
|
14021
|
+
* Pole vectors are applied in reverse order (from end to root) to minimize
|
|
14022
|
+
* interference between multiple pole vectors. This ensures that pole vectors
|
|
14023
|
+
* closer to the end effector are not affected by pole vectors closer to the root.
|
|
14024
|
+
*/
|
|
14025
|
+
private _applyAllPoleVectors;
|
|
14026
|
+
/**
|
|
14027
|
+
* Apply pole vector twist to a specific joint.
|
|
14028
|
+
*
|
|
14029
|
+
* @remarks
|
|
14030
|
+
* This method is called after the base CCD rotation has been applied.
|
|
14031
|
+
* It adds an additional twist rotation around the joint-to-end axis
|
|
14032
|
+
* to make the next joint (child) bend toward the pole vector.
|
|
14033
|
+
*
|
|
14034
|
+
* @param jointIndex - Index of the pole joint
|
|
14035
|
+
* @param poleVector - Pole vector position in world space
|
|
14036
|
+
* @param weight - Weight of the pole vector constraint (0-1)
|
|
14037
|
+
*/
|
|
14038
|
+
private _applyPoleVectorTwist;
|
|
14039
|
+
/**
|
|
14040
|
+
* Apply constraints for a specific joint.
|
|
14041
|
+
*
|
|
14042
|
+
* @param jointIndex - Index of the joint to apply constraints to
|
|
14043
|
+
*/
|
|
14044
|
+
private _applyConstraintsForJoint;
|
|
14045
|
+
/**
|
|
14046
|
+
* Apply the solved joint positions to scene nodes as rotations.
|
|
14047
|
+
*
|
|
14048
|
+
* @param weight - Blend weight (0 = original, 1 = full IK, default: 1)
|
|
14049
|
+
*/
|
|
14050
|
+
applyToNodes(weight?: number): void;
|
|
14051
|
+
}
|
|
14052
|
+
|
|
14053
|
+
/**
|
|
14054
|
+
* Angle constraint for IK joints.
|
|
14055
|
+
*
|
|
14056
|
+
* Limits the angle between the bone from parent to this joint
|
|
14057
|
+
* and the bone from this joint to child.
|
|
14058
|
+
*
|
|
14059
|
+
* @remarks
|
|
14060
|
+
* This is useful for joints like elbows and knees that have
|
|
14061
|
+
* limited range of motion.
|
|
14062
|
+
*
|
|
14063
|
+
* @public
|
|
14064
|
+
*/
|
|
14065
|
+
declare class IKAngleConstraint extends IKConstraint {
|
|
14066
|
+
/** Minimum angle in degrees */
|
|
14067
|
+
private _minAngle;
|
|
14068
|
+
/** Maximum angle in degrees */
|
|
14069
|
+
private _maxAngle;
|
|
14070
|
+
/**
|
|
14071
|
+
* Create an angle constraint.
|
|
14072
|
+
*
|
|
14073
|
+
* @param jointIndex - Index of the joint in the chain
|
|
14074
|
+
* @param minAngle - Minimum angle in degrees (0 = straight)
|
|
14075
|
+
* @param maxAngle - Maximum angle in degrees (180 = fully bent)
|
|
14076
|
+
*/
|
|
14077
|
+
constructor(jointIndex: number, minAngle: number, maxAngle: number);
|
|
14078
|
+
/**
|
|
14079
|
+
* Get the minimum angle in degrees.
|
|
14080
|
+
*/
|
|
14081
|
+
get minAngle(): number;
|
|
14082
|
+
/**
|
|
14083
|
+
* Set the minimum angle in degrees.
|
|
14084
|
+
*/
|
|
14085
|
+
set minAngle(value: number);
|
|
14086
|
+
/**
|
|
14087
|
+
* Get the maximum angle in degrees.
|
|
14088
|
+
*/
|
|
14089
|
+
get maxAngle(): number;
|
|
14090
|
+
/**
|
|
14091
|
+
* Set the maximum angle in degrees.
|
|
14092
|
+
*/
|
|
14093
|
+
set maxAngle(value: number);
|
|
14094
|
+
/**
|
|
14095
|
+
* Apply the angle constraint to limit joint bending.
|
|
14096
|
+
*/
|
|
14097
|
+
apply(joints: IKJoint[]): void;
|
|
14098
|
+
/**
|
|
14099
|
+
* Apply constraint to end effector joint.
|
|
14100
|
+
*/
|
|
14101
|
+
private _applyEndEffectorConstraint;
|
|
14102
|
+
/**
|
|
14103
|
+
* Apply constraint to regular joint.
|
|
14104
|
+
*/
|
|
14105
|
+
private _applyRegularConstraint;
|
|
14106
|
+
/**
|
|
14107
|
+
* Adjust joint angle by rotating the outgoing bone.
|
|
14108
|
+
*/
|
|
14109
|
+
private _adjustJointAngle;
|
|
14110
|
+
}
|
|
14111
|
+
|
|
14112
|
+
/**
|
|
14113
|
+
* Constraint between particles in different chains
|
|
14114
|
+
*
|
|
14115
|
+
* @public
|
|
14116
|
+
*/
|
|
14117
|
+
interface InterChainConstraint {
|
|
14118
|
+
/** Index of the first chain */
|
|
14119
|
+
chainAIndex: number;
|
|
14120
|
+
/** Index of the second chain */
|
|
14121
|
+
chainBIndex: number;
|
|
14122
|
+
/** Index of particle in chain A */
|
|
14123
|
+
particleAIndex: number;
|
|
14124
|
+
/** Index of particle in chain B */
|
|
14125
|
+
particleBIndex: number;
|
|
14126
|
+
/** Desired distance between particles */
|
|
14127
|
+
restLength: number;
|
|
14128
|
+
/** Constraint strength [0-1], used by Verlet solver */
|
|
14129
|
+
stiffness: number;
|
|
14130
|
+
/**
|
|
14131
|
+
* XPBD compliance (inverse stiffness) in m/N.
|
|
14132
|
+
* Only used when solver is 'xpbd'.
|
|
14133
|
+
*/
|
|
14134
|
+
compliance: number;
|
|
14135
|
+
/** XPBD Lagrange multiplier accumulator, reset each time step. */
|
|
14136
|
+
lambda: number;
|
|
14137
|
+
}
|
|
14138
|
+
/**
|
|
14139
|
+
* Options for creating a MultiChainSpringSystem
|
|
14140
|
+
*
|
|
14141
|
+
* @public
|
|
14142
|
+
*/
|
|
14143
|
+
interface MultiChainSpringSystemOptions {
|
|
14144
|
+
/** Number of constraint solver iterations (default: 5) */
|
|
14145
|
+
iterations?: number;
|
|
14146
|
+
/** Gravity force vector (default: (0, -9.8, 0)) */
|
|
14147
|
+
gravity?: Vector3;
|
|
14148
|
+
/** Wind force vector (default: (0, 0, 0)) */
|
|
14149
|
+
wind?: Vector3;
|
|
14150
|
+
/** Enable inertial forces (centrifugal/Coriolis) when root rotates (default: true) */
|
|
14151
|
+
enableInertialForces?: boolean;
|
|
14152
|
+
/** Centrifugal force multiplier (default: 1.0) */
|
|
14153
|
+
centrifugalScale?: number;
|
|
14154
|
+
/** Coriolis force multiplier (default: 1.0) */
|
|
14155
|
+
coriolisScale?: number;
|
|
14156
|
+
/**
|
|
14157
|
+
* Constraint solver type (default: 'verlet').
|
|
14158
|
+
* - 'verlet': stiffness [0-1] controls per-iteration correction strength.
|
|
14159
|
+
* - 'xpbd': compliance (m/N) gives physically correct, iteration-independent results.
|
|
14160
|
+
*/
|
|
14161
|
+
solver?: 'verlet' | 'xpbd';
|
|
14162
|
+
}
|
|
14163
|
+
/**
|
|
14164
|
+
* Physics engine for multiple spring chains with inter-chain constraints
|
|
14165
|
+
* Suitable for cloth, skirts, capes, and other multi-chain simulations
|
|
14166
|
+
*
|
|
14167
|
+
* @public
|
|
14168
|
+
*/
|
|
14169
|
+
declare class MultiChainSpringSystem {
|
|
14170
|
+
private _chains;
|
|
14171
|
+
private _interChainConstraints;
|
|
14172
|
+
private _iterations;
|
|
14173
|
+
private _gravity;
|
|
14174
|
+
private _wind;
|
|
14175
|
+
private _enableInertialForces;
|
|
14176
|
+
private _centrifugalScale;
|
|
14177
|
+
private _coriolisScale;
|
|
14178
|
+
private _solver;
|
|
14179
|
+
constructor(options?: MultiChainSpringSystemOptions);
|
|
14180
|
+
/**
|
|
14181
|
+
* Adds a spring chain to the system
|
|
14182
|
+
* @param chain - The chain to add
|
|
14183
|
+
* @returns The index of the added chain
|
|
14184
|
+
*/
|
|
14185
|
+
addChain(chain: SpringChain): number;
|
|
14186
|
+
/**
|
|
14187
|
+
* Adds an inter-chain constraint
|
|
14188
|
+
* @param constraint - The constraint to add
|
|
14189
|
+
*/
|
|
14190
|
+
addInterChainConstraint(constraint: InterChainConstraint): void;
|
|
14191
|
+
/**
|
|
14192
|
+
* Creates radial constraints between adjacent chains
|
|
14193
|
+
* Useful for skirts, capes, and other radial multi-chain structures
|
|
14194
|
+
* @param options - Configuration options
|
|
14195
|
+
*/
|
|
14196
|
+
createRadialConstraints(options: {
|
|
14197
|
+
/** Constraint stiffness [0-1], used by Verlet solver */
|
|
14198
|
+
stiffness: number;
|
|
14199
|
+
/** Maximum distance to create constraints (particles further apart are not connected) */
|
|
14200
|
+
maxDistance: number;
|
|
14201
|
+
/** Skip first N rows of particles (e.g., anchor points at waist) */
|
|
14202
|
+
skipRows?: number;
|
|
14203
|
+
/** Connect to next N chains (default: 1, only adjacent chains) */
|
|
14204
|
+
connectDistance?: number;
|
|
14205
|
+
/** XPBD compliance in m/N (default: 0 = rigid). Only used when solver is 'xpbd'. */
|
|
14206
|
+
compliance?: number;
|
|
14207
|
+
}): void;
|
|
14208
|
+
/**
|
|
14209
|
+
* Updates the physics simulation for all chains
|
|
14210
|
+
* @param deltaTime - Time step in seconds
|
|
14211
|
+
*/
|
|
14212
|
+
update(deltaTime: number): void;
|
|
14213
|
+
private updateFixedParticles;
|
|
14214
|
+
private calculateGlobalRotation;
|
|
14215
|
+
private estimateRotationCenterFromHistory;
|
|
14216
|
+
private calculateCircleCenter;
|
|
14217
|
+
private calculateInertialAcceleration;
|
|
14218
|
+
private solveConstraint;
|
|
14219
|
+
private solveInterChainConstraint;
|
|
14220
|
+
private solveConstraintXPBD;
|
|
14221
|
+
private solveInterChainConstraintXPBD;
|
|
14222
|
+
/**
|
|
14223
|
+
* Applies simulation results to scene nodes
|
|
14224
|
+
* @param weight - Blend weight [0-1] (default: 1.0)
|
|
14225
|
+
*/
|
|
14226
|
+
applyToNodes(weight?: number): void;
|
|
14227
|
+
private applyChainToNodes;
|
|
14228
|
+
/**
|
|
14229
|
+
* Resets the simulation to initial state
|
|
14230
|
+
*/
|
|
14231
|
+
reset(): void;
|
|
14232
|
+
/**
|
|
14233
|
+
* Gets the spring chains
|
|
14234
|
+
*/
|
|
14235
|
+
get chains(): SpringChain[];
|
|
14236
|
+
/**
|
|
14237
|
+
* Gets the inter-chain constraints
|
|
14238
|
+
*/
|
|
14239
|
+
get interChainConstraints(): InterChainConstraint[];
|
|
14240
|
+
/**
|
|
14241
|
+
* Gets the current gravity
|
|
14242
|
+
*/
|
|
14243
|
+
get gravity(): Vector3;
|
|
14244
|
+
set gravity(gravity: Vector3);
|
|
14245
|
+
/**
|
|
14246
|
+
* Gets the current wind
|
|
14247
|
+
*/
|
|
14248
|
+
get wind(): Vector3;
|
|
14249
|
+
set wind(wind: Vector3);
|
|
14250
|
+
/**
|
|
14251
|
+
* Gets the number of iterations
|
|
14252
|
+
*/
|
|
14253
|
+
get iterations(): number;
|
|
14254
|
+
set iterations(count: number);
|
|
14255
|
+
/**
|
|
14256
|
+
* Gets whether inertial forces are enabled
|
|
14257
|
+
*/
|
|
14258
|
+
get enableInertialForces(): boolean;
|
|
14259
|
+
set enableInertialForces(enabled: boolean);
|
|
14260
|
+
/**
|
|
14261
|
+
* Gets the centrifugal force scale
|
|
14262
|
+
*/
|
|
14263
|
+
get centrifugalScale(): number;
|
|
14264
|
+
set centrifugalScale(scale: number);
|
|
14265
|
+
/**
|
|
14266
|
+
* Gets the Coriolis force scale
|
|
14267
|
+
*/
|
|
14268
|
+
get coriolisScale(): number;
|
|
14269
|
+
set coriolisScale(scale: number);
|
|
14270
|
+
get solver(): 'verlet' | 'xpbd';
|
|
14271
|
+
set solver(type: 'verlet' | 'xpbd');
|
|
14272
|
+
}
|
|
14273
|
+
|
|
12878
14274
|
/**
|
|
12879
14275
|
* Manages serialization and deserialization of engine objects to/from JSON,
|
|
12880
14276
|
* including asset resolution via a virtual file system (VFS) and asset manager.
|
|
@@ -18961,4 +20357,4 @@ declare const ATMOSPHERIC_FOG_BIT: number;
|
|
|
18961
20357
|
*/
|
|
18962
20358
|
declare const HEIGHT_FOG_BIT: number;
|
|
18963
20359
|
|
|
18964
|
-
export { AABBTree, ABufferOIT, ATMOSPHERIC_FOG_BIT, AbsNode, AbstractPostEffect, AllConditionNode, AnimationClip, AnimationSet, AnimationTrack, AnyConditionNode, type AppCreationOptions, type AppOptions, Application, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, type AssetAnimationData, type AssetAnimationTrack, AssetHierarchyNode, AssetManager, type AssetMaterial, type AssetMaterialClearcoat, type AssetMaterialCommon, type AssetMaterialIridescence, type AssetMaterialSheen, type AssetMaterialTransmission, type AssetMeshData, type AssetPBRMaterialCommon, type AssetPBRMaterialMR, type AssetPBRMaterialSG, 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, BoundingBox, type BoundingVolume, type BoxCreationOptions, BoxFilterBlitter, BoxFrameShape, BoxShape, type CachedBindGroup, Camera, type CameraHistoryData, CameraNearFarNode, CameraPositionNode, CeilNode, ClampNode, ClipmapTerrain, ClipmapTerrainMaterial, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, type ComparisonMode, Compositor, type CompositorContext, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node, ConstantBooleanNode, ConstantScalarNode, ConstantTexture2DArrayNode, ConstantTexture2DNode, ConstantTextureCubeNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, CopyBlitter, CosHNode, CosNode, CrossProductNode, CubemapSHProjector, CullVisitor, type CylinderCreationOptions, CylinderShape, DDXNode, DDYNode, Degrees2RadiansNode, DepthPass, DirectionalLight, DistanceNode, DotProductNode, DracoMeshDecoder, type DrawContext, type Drawable, type DrawableInstanceInfo, type EditorMode, ElapsedTimeNode, type EmitterBehavior, type EmitterShape, Engine, EnvConstantAmbient, EnvHemisphericAmbient, type EnvLightType, EnvLightWrapper, EnvShIBL, Environment, EnvironmentLighting, EqualNode, Exp2Node, ExpNode, type ExtractMixinReturnType, type ExtractMixinType, FBMWaveGenerator, FFTWaveGenerator, FPSCameraController, type FPSCameraControllerOptions, FWidthNode, FXAA, FaceForwardNode, FloorNode, FmaNode, type FogType, FractNode, FunctionCallNode, FunctionInputNode, FunctionOutputNode, GaussianBlurBlitter, GenericMathNode, GerstnerWaveGenerator, GraphNode, type GraphNodeInput, type GraphNodeOutput, type GraphStructure, type GrassInstanceInfo, GrassLayer, GrassMaterial, GrassRenderer, Grayscale, HEIGHT_FOG_BIT, Hash1Node, Hash2Node, Hash3Node, type Host, 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, 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, type InstanceUniformType, InvProjMatrixNode, InvSqrtNode, InvViewProjMatrixNode, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT, LambertMaterial, LengthNode, Log2Node, type LogMode, LogNode, LogicallyAndNode, LogicallyOrNode, MAX_CLUSTERED_LIGHTS, 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, MakeVectorNode, Material, MaterialBlueprintIR, type MaterialBlueprintIRBehaviors, type MaterialTextureInfo, MaterialVaryingFlags, MaxNode, Mesh, MeshMaterial, type Metadata, MinNode, MixNode, ModNode, type ModelFetchOptions, type ModelInfo, type MorphData, type MorphInfo, type MorphState, MorphTargetTrack, NamedObject, type NodeConnection, NodeEulerRotationTrack, type NodeIterateFunc, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack, NormalizeNode, NotEqualNode, type OIT, Octree, OctreeNode, OctreeNodeChunk, OctreePlacement, OrbitCameraController, type OrbitCameraControllerOptions, OrthoCamera, PBRBlockNode, PBRBluePrintMaterial, PBRMetallicRoughnessMaterial, PBRSpecularGlossinessMaterial, ParticleMaterial, ParticleSystem, PerlinNoise2DNode, PerspectiveCamera, type PickResult, type PickTarget, type PlaneCreationOptions, PlaneShape, type PlayAnimationOptions, PointLight, type PointTransform, PostEffectLayer, PowNode, Primitive, ProjectionMatrixNode, type PropEdit, type PropertyAccessor, type PropertyAccessorOptions, 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, Radians2DegreesNode, ReflectNode, RefractNode, RenderContext, type RenderItemList, type RenderItemListBundle, type RenderItemListInfo, RenderPass, RenderQueue, type RenderQueueItem, type RenderQueueRef, RenderTarget, type ResolutionTransform, ResolveVertexNormalNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResourceManager, RuntimeScript, SAO, type SamplerType, SaturateNode, Scene, SceneNode, type SceneNodeVisible, ScreenAdapter, type ScreenConfig, ScreenRenderTarget, type ScreenScaleMode, ScriptRegistry, ScriptingSystem, type ScriptingSystemOptions, SelectionNode, type SerializableClass, ShaderHelper, ShadowMapPass, ShadowMapper, type ShadowMode, Shape, type ShapeCreationOptions, type ShapeOptionType, type ShapeType, SharedModel, SignNode, SimplexNoise2DNode, SinHNode, SinNode, Skeleton, type SkinnedBoundingBox, SkyEnvTextureNode, SkyRenderer, type SkyType, SmoothStepNode, type SphereCreationOptions, SphereShape, SpotLight, Sprite, SpriteBlockNode, SpriteBlueprintMaterial, SpriteMaterial, SqrtNode, StandardSpriteMaterial, StepNode, type StopAnimationOptions, SwizzleNode, TanHNode, TanNode, type TerrainDebugMode, type TetrahedronCreationOptions, TetrahedronFrameShape, TetrahedronShape, type TextureFetchOptions, type TextureMixinInstanceTypes, type TextureMixinTypes, type TextureProp, type TexturePropUniforms, TextureSampleGrad, TextureSampleNode, type ToMixedTextureType, Tonemap, type TorusCreationOptions, TorusShape, TransformNode, UnlitMaterial, VertexBinormalNode, VertexBlockNode, VertexColorNode, VertexNormalNode, VertexPositionNode, VertexTangentNode, VertexUVNode, ViewMatrixNode, ViewProjMatrixNode, type Visitor, Water, type WaveGenerator, WeightedBlendedOIT, applyMaterialMixins, decode2HalfFromRGBA, decodeFloatFromRGBA, decodeNormalizedFloatFromRGBA, decodeRGBM, defineProps, encode2HalfToRGBA, encodeFloatToRGBA, encodeNormalizedFloatToRGBA, encodeRGBM, fetchSampler, gammaToLinear, getApp, getDevice, getEngine, getInput, gradient, hash11, hash12, hash13, hash21, hash22, hash23, hash31, hash32, hash33, interleavedGradientNoise, linearToGamma, mixinAlbedoColor, mixinBlinnPhong, mixinFoliage, mixinLambert, mixinLight, mixinPBRBluePrint, mixinPBRCommon, mixinPBRMetallicRoughness, mixinPBRSpecularGlossness, mixinTextureProps, mixinVertexColor, noise3D, panoramaToCubemap, perlinNoise2D, perlinNoise3D, prefilterCubemap, smoothNoise3D, temporalResolve, tryGetApp, valueNoise, whiteNoise, worleyFBM, worleyNoise };
|
|
20360
|
+
export { AABBTree, ABufferOIT, ATMOSPHERIC_FOG_BIT, AbsNode, AbstractPostEffect, AllConditionNode, AnimationClip, AnimationSet, AnimationTrack, AnyConditionNode, type AppCreationOptions, type AppOptions, Application, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, type AssetAnimationData, type AssetAnimationTrack, AssetHierarchyNode, AssetManager, type AssetMaterial, type AssetMaterialClearcoat, type AssetMaterialCommon, type AssetMaterialIridescence, type AssetMaterialSheen, type AssetMaterialTransmission, type AssetMeshData, type AssetPBRMaterialCommon, type AssetPBRMaterialMR, type AssetPBRMaterialSG, 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, BoundingBox, type BoundingVolume, type BoxCreationOptions, BoxFilterBlitter, BoxFrameShape, BoxShape, CCDSolver, type CachedBindGroup, Camera, type CameraHistoryData, CameraNearFarNode, CameraPositionNode, type CapsuleCollider, CeilNode, ClampNode, ClipmapTerrain, ClipmapTerrainMaterial, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, type ComparisonMode, Compositor, type CompositorContext, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node, ConstantBooleanNode, ConstantScalarNode, ConstantTexture2DArrayNode, ConstantTexture2DNode, ConstantTextureCubeNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, CopyBlitter, CosHNode, CosNode, CrossProductNode, CubemapSHProjector, CullVisitor, type CylinderCreationOptions, CylinderShape, DDXNode, DDYNode, Degrees2RadiansNode, DepthPass, DirectionalLight, DistanceNode, DotProductNode, DracoMeshDecoder, type DrawContext, type Drawable, type DrawableInstanceInfo, 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, FloorNode, FmaNode, type FogType, FractNode, FunctionCallNode, FunctionInputNode, FunctionOutputNode, GaussianBlurBlitter, GenericMathNode, GerstnerWaveGenerator, GraphNode, type GraphNodeInput, type GraphNodeOutput, type GraphStructure, type GrassInstanceInfo, GrassLayer, GrassMaterial, GrassRenderer, Grayscale, HEIGHT_FOG_BIT, Hash1Node, Hash2Node, Hash3Node, type Host, 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, type InstanceUniformType, type InterChainConstraint, InvProjMatrixNode, InvSqrtNode, InvViewProjMatrixNode, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT, LambertMaterial, LengthNode, Log2Node, type LogMode, LogNode, LogicallyAndNode, LogicallyOrNode, MAX_CLUSTERED_LIGHTS, 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, MakeVectorNode, Material, MaterialBlueprintIR, type MaterialBlueprintIRBehaviors, type MaterialTextureInfo, MaterialVaryingFlags, MaxNode, Mesh, MeshMaterial, type Metadata, MinNode, MixNode, ModNode, type ModelFetchOptions, type ModelInfo, type MorphData, type MorphInfo, type MorphState, MorphTargetTrack, MultiChainSpringSystem, type MultiChainSpringSystemOptions, NamedObject, type NodeConnection, NodeEulerRotationTrack, type NodeIterateFunc, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack, NormalizeNode, NotEqualNode, type OIT, Octree, OctreeNode, OctreeNodeChunk, OctreePlacement, OrbitCameraController, type OrbitCameraControllerOptions, OrthoCamera, PBRBlockNode, PBRBluePrintMaterial, PBRMetallicRoughnessMaterial, PBRSpecularGlossinessMaterial, ParticleMaterial, ParticleSystem, PerlinNoise2DNode, PerspectiveCamera, type PickResult, type PickTarget, type PlaneCollider, type PlaneCreationOptions, PlaneShape, type PlayAnimationOptions, PointLight, type PointTransform, PostEffectLayer, PowNode, Primitive, ProjectionMatrixNode, type PropEdit, type PropertyAccessor, type PropertyAccessorOptions, 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, Radians2DegreesNode, ReflectNode, RefractNode, RenderContext, type RenderItemList, type RenderItemListBundle, type RenderItemListInfo, RenderPass, RenderQueue, type RenderQueueItem, type RenderQueueRef, RenderTarget, type ResolutionTransform, ResolveVertexNormalNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResourceManager, RuntimeScript, SAO, type SamplerType, SaturateNode, Scene, SceneNode, type SceneNodeVisible, ScreenAdapter, type ScreenConfig, ScreenRenderTarget, type ScreenScaleMode, ScriptRegistry, ScriptingSystem, type ScriptingSystemOptions, SelectionNode, type SerializableClass, ShaderHelper, ShadowMapPass, ShadowMapper, type ShadowMode, Shape, type ShapeCreationOptions, type ShapeOptionType, type ShapeType, SharedModel, SignNode, SimplexNoise2DNode, 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, SwizzleNode, TanHNode, TanNode, type TerrainDebugMode, type TetrahedronCreationOptions, TetrahedronFrameShape, TetrahedronShape, type TextureFetchOptions, type TextureMixinInstanceTypes, type TextureMixinTypes, type TextureProp, type TexturePropUniforms, TextureSampleGrad, TextureSampleNode, type ToMixedTextureType, Tonemap, type TorusCreationOptions, TorusShape, TransformNode, type TwistConstraint, TwoBoneIKSolver, UnlitMaterial, VertexBinormalNode, VertexBlockNode, VertexColorNode, VertexNormalNode, VertexPositionNode, VertexTangentNode, VertexUVNode, ViewMatrixNode, ViewProjMatrixNode, type Visitor, Water, type WaveGenerator, WeightedBlendedOIT, applyMaterialMixins, createCapsuleCollider, createPlaneCollider, createSphereCollider, createSpringConstraint, createSpringParticle, decode2HalfFromRGBA, decodeFloatFromRGBA, decodeNormalizedFloatFromRGBA, decodeRGBM, defineProps, encode2HalfToRGBA, encodeFloatToRGBA, encodeNormalizedFloatToRGBA, encodeRGBM, fetchSampler, gammaToLinear, getApp, getDevice, getEngine, getInput, gradient, hash11, hash12, hash13, hash21, hash22, hash23, hash31, hash32, hash33, interleavedGradientNoise, linearToGamma, mixinAlbedoColor, mixinBlinnPhong, mixinFoliage, mixinLambert, mixinLight, mixinPBRBluePrint, mixinPBRCommon, mixinPBRMetallicRoughness, mixinPBRSpecularGlossness, mixinTextureProps, mixinVertexColor, noise3D, panoramaToCubemap, perlinNoise2D, perlinNoise3D, prefilterCubemap, resolveCapsuleCollision, resolvePlaneCollision, resolveSphereCollision, smoothNoise3D, temporalResolve, tryGetApp, updateColliderFromNode, valueNoise, whiteNoise, worleyFBM, worleyNoise };
|