@zephyr3d/scene 0.9.4 → 0.9.6
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/animationmask.js +224 -0
- package/dist/animation/animationmask.js.map +1 -0
- package/dist/animation/animationset.js +268 -67
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +3 -0
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/fixed_geometry_cache_track.js +7 -0
- package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
- package/dist/animation/ik_modifier.js.map +1 -1
- package/dist/animation/joint_dynamics/collision.js +6 -4
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +390 -43
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +4 -3
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +2 -0
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/morphtarget.js +3 -72
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -0
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/pca_geometry_cache_track.js +3 -0
- package/dist/animation/pca_geometry_cache_track.js.map +1 -1
- package/dist/animation/proptrack.js +3 -0
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +3 -0
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +3 -0
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +254 -79
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js.map +1 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/animation/translationtrack.js +3 -0
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/engine.js +171 -107
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +251 -80
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +344 -365
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/loader.js +1 -6
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
- package/dist/asset/model.js +1000 -131
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +474 -0
- package/dist/avatar/wardrobe.js.map +1 -0
- package/dist/index.d.ts +1126 -199
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +72 -15
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/msdf_text.js +3 -3
- package/dist/material/msdf_text.js.map +1 -1
- package/dist/material/msdf_text_sprite.js +4 -4
- package/dist/material/msdf_text_sprite.js.map +1 -1
- package/dist/material/pbrblueprint.js +102 -102
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/render/envlight.js +54 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/sky.js +9 -0
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/batchgroup.js +11 -13
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +15 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/mesh.js +79 -16
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/scene.js +1 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +203 -2
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/text/font/cff_font.js +890 -0
- package/dist/text/font/cff_font.js.map +1 -0
- package/dist/text/font/font_asset.js +17 -3
- package/dist/text/font/font_asset.js.map +1 -1
- package/dist/text/msdf/generator.js.map +1 -1
- package/dist/text/msdf/shape.js +4 -1
- package/dist/text/msdf/shape.js.map +1 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js +1157 -1154
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/pmrem.js +34 -8
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/serialization/manager.js +22 -9
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +700 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +64 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +187 -8
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/textures/sheenlut.js +138 -0
- package/dist/utility/textures/sheenlut.js.map +1 -0
- package/package.json +2 -2
- package/dist/animation/ik/ik_chain_builder.js +0 -68
- package/dist/animation/ik/ik_chain_builder.js.map +0 -1
- package/dist/animation/ik/ik_pole_constraint.js +0 -123
- package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
- package/dist/animation/ik/ik_track.js +0 -96
- package/dist/animation/ik/ik_track.js.map +0 -1
- package/dist/animation/ik_postprocessor.js +0 -71
- package/dist/animation/ik_postprocessor.js.map +0 -1
- package/dist/animation/joint_dynamics/math.js +0 -16
- package/dist/animation/joint_dynamics/math.js.map +0 -1
- package/dist/animation/manual_transform_processor.js +0 -156
- package/dist/animation/manual_transform_processor.js.map +0 -1
- package/dist/animation/skeleton_postprocessor.js +0 -50
- package/dist/animation/skeleton_postprocessor.js.map +0 -1
- package/dist/animation/spring2/collision.js +0 -469
- package/dist/animation/spring2/collision.js.map +0 -1
- package/dist/animation/spring2/constraints.js +0 -329
- package/dist/animation/spring2/constraints.js.map +0 -1
- package/dist/animation/spring2/controller.js +0 -434
- package/dist/animation/spring2/controller.js.map +0 -1
- package/dist/animation/spring2/math.js +0 -16
- package/dist/animation/spring2/math.js.map +0 -1
- package/dist/animation/spring2/solver.js +0 -624
- package/dist/animation/spring2/solver.js.map +0 -1
- package/dist/animation/spring2/spring_system.js +0 -118
- package/dist/animation/spring2/spring_system.js.map +0 -1
- package/dist/animation/spring2/types.js +0 -19
- package/dist/animation/spring2/types.js.map +0 -1
- package/dist/animation/spring_postprocessor.js +0 -54
- package/dist/animation/spring_postprocessor.js.map +0 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +0 -1273
- package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/asset/loaders/gltf/helpers.js +0 -331
- package/dist/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/material/sprite3d.js +0 -301
- package/dist/material/sprite3d.js.map +0 -1
- package/dist/material/sprite3d_std.js +0 -116
- package/dist/material/sprite3d_std.js.map +0 -1
- package/dist/material/sprite3dblueprint.js +0 -235
- package/dist/material/sprite3dblueprint.js.map +0 -1
- package/dist/material/sprite_sdf.js +0 -106
- package/dist/material/sprite_sdf.js.map +0 -1
- package/dist/material/terrainmaterial.js +0 -368
- package/dist/material/terrainmaterial.js.map +0 -1
- 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/render/deferredlightpass.js +0 -510
- package/dist/render/deferredlightpass.js.map +0 -1
- package/dist/render/deferredshadowlightpass.js +0 -428
- package/dist/render/deferredshadowlightpass.js.map +0 -1
- package/dist/render/gbufferpass.js +0 -50
- package/dist/render/gbufferpass.js.map +0 -1
- package/dist/scene/sdftextsprite.js +0 -322
- package/dist/scene/sdftextsprite.js.map +0 -1
- package/dist/scene/sprite3d.js +0 -18
- package/dist/scene/sprite3d.js.map +0 -1
- package/dist/scene/terrain/grass.js +0 -280
- package/dist/scene/terrain/grass.js.map +0 -1
- package/dist/scene/terrain/heightfield.js +0 -475
- package/dist/scene/terrain/heightfield.js.map +0 -1
- package/dist/scene/terrain/patch.js +0 -532
- package/dist/scene/terrain/patch.js.map +0 -1
- package/dist/scene/terrain/quadtree.js +0 -461
- package/dist/scene/terrain/quadtree.js.map +0 -1
- package/dist/scene/terrain/terrain.js +0 -231
- package/dist/scene/terrain/terrain.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/utility/serialization/scene/cloth_script.js +0 -834
- package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
- package/dist/utility/serialization/scene/spring_script.js +0 -596
- package/dist/utility/serialization/scene/spring_script.js.map +0 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { NodeEulerRotationTrack } from './eulerrotationtrack.js';
|
|
2
|
+
import { NodeRotationTrack } from './rotationtrack.js';
|
|
3
|
+
import { NodeScaleTrack } from './scaletrack.js';
|
|
4
|
+
import { HumanoidBodyRig } from './skeleton.js';
|
|
5
|
+
import { NodeTranslationTrack } from './translationtrack.js';
|
|
6
|
+
|
|
7
|
+
function isNodeTransformTrack(track) {
|
|
8
|
+
return track instanceof NodeRotationTrack || track instanceof NodeEulerRotationTrack || track instanceof NodeTranslationTrack || track instanceof NodeScaleTrack;
|
|
9
|
+
}
|
|
10
|
+
function cloneTrack(track) {
|
|
11
|
+
const cloned = track.clone();
|
|
12
|
+
cloned.name = track.name;
|
|
13
|
+
cloned.target = track.target;
|
|
14
|
+
cloned.jointIndex = track.jointIndex;
|
|
15
|
+
return cloned;
|
|
16
|
+
}
|
|
17
|
+
function addJoint(set, rig, joint) {
|
|
18
|
+
if (joint && rig.joints.includes(joint)) {
|
|
19
|
+
set.add(joint);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function addJointAndDescendants(set, rig, joint) {
|
|
23
|
+
if (!joint) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
for (const candidate of rig.joints){
|
|
27
|
+
if (joint === candidate || joint.isParentOf(candidate)) {
|
|
28
|
+
set.add(candidate);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function removeJointAndDescendants(set, rig, joint) {
|
|
33
|
+
if (!joint) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const candidate of rig.joints){
|
|
37
|
+
if (joint === candidate || joint.isParentOf(candidate)) {
|
|
38
|
+
set.delete(candidate);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function addSemanticJoint(set, rig, joint, includeDescendants) {
|
|
43
|
+
if (includeDescendants) {
|
|
44
|
+
addJointAndDescendants(set, rig, joint);
|
|
45
|
+
} else {
|
|
46
|
+
addJoint(set, rig, joint);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function removeSemanticJoint(set, rig, joint, includeDescendants) {
|
|
50
|
+
if (includeDescendants) {
|
|
51
|
+
removeJointAndDescendants(set, rig, joint);
|
|
52
|
+
} else if (joint) {
|
|
53
|
+
set.delete(joint);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function addHumanoidPreset(set, rig, mapping, preset, boundary) {
|
|
57
|
+
const body = mapping.body;
|
|
58
|
+
switch(preset){
|
|
59
|
+
case 'fullBody':
|
|
60
|
+
for (const joint of rig.joints){
|
|
61
|
+
set.add(joint);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
case 'upperBody':
|
|
65
|
+
addJointAndDescendants(set, rig, body[boundary ?? HumanoidBodyRig.Spine]);
|
|
66
|
+
removeJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);
|
|
67
|
+
removeJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);
|
|
68
|
+
break;
|
|
69
|
+
case 'lowerBody':
|
|
70
|
+
addJoint(set, rig, body[HumanoidBodyRig.Hips]);
|
|
71
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);
|
|
72
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);
|
|
73
|
+
break;
|
|
74
|
+
case 'head':
|
|
75
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.Neck]);
|
|
76
|
+
break;
|
|
77
|
+
case 'arms':
|
|
78
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftShoulder]);
|
|
79
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightShoulder]);
|
|
80
|
+
break;
|
|
81
|
+
case 'leftArm':
|
|
82
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftShoulder]);
|
|
83
|
+
break;
|
|
84
|
+
case 'rightArm':
|
|
85
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightShoulder]);
|
|
86
|
+
break;
|
|
87
|
+
case 'legs':
|
|
88
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);
|
|
89
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);
|
|
90
|
+
break;
|
|
91
|
+
case 'leftLeg':
|
|
92
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);
|
|
93
|
+
break;
|
|
94
|
+
case 'rightLeg':
|
|
95
|
+
addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function selectHumanoidJoints(rig, options) {
|
|
100
|
+
const mapping = rig.humanoidJointMapping;
|
|
101
|
+
if (!mapping) {
|
|
102
|
+
console.error('createSkeletalMaskedAnimation: skeleton does not have a humanoid joint mapping');
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const selected = new Set();
|
|
106
|
+
if (options.preset) {
|
|
107
|
+
addHumanoidPreset(selected, rig, mapping, options.preset, options.boundary);
|
|
108
|
+
} else if (!options.includeBody?.length && !options.includeLeftHand?.length && !options.includeRightHand?.length) {
|
|
109
|
+
for (const joint of rig.joints){
|
|
110
|
+
selected.add(joint);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const includeDescendants = options.includeDescendants ?? true;
|
|
114
|
+
for (const semantic of options.includeBody ?? []){
|
|
115
|
+
addSemanticJoint(selected, rig, mapping.body[semantic], includeDescendants);
|
|
116
|
+
}
|
|
117
|
+
for (const semantic of options.includeLeftHand ?? []){
|
|
118
|
+
addSemanticJoint(selected, rig, mapping.leftHand?.[semantic], includeDescendants);
|
|
119
|
+
}
|
|
120
|
+
for (const semantic of options.includeRightHand ?? []){
|
|
121
|
+
addSemanticJoint(selected, rig, mapping.rightHand?.[semantic], includeDescendants);
|
|
122
|
+
}
|
|
123
|
+
for (const semantic of options.excludeBody ?? []){
|
|
124
|
+
removeSemanticJoint(selected, rig, mapping.body[semantic], includeDescendants);
|
|
125
|
+
}
|
|
126
|
+
for (const semantic of options.excludeLeftHand ?? []){
|
|
127
|
+
removeSemanticJoint(selected, rig, mapping.leftHand?.[semantic], includeDescendants);
|
|
128
|
+
}
|
|
129
|
+
for (const semantic of options.excludeRightHand ?? []){
|
|
130
|
+
removeSemanticJoint(selected, rig, mapping.rightHand?.[semantic], includeDescendants);
|
|
131
|
+
}
|
|
132
|
+
return selected;
|
|
133
|
+
}
|
|
134
|
+
function matchesJointName(joint, matcher) {
|
|
135
|
+
if (typeof matcher === 'string') {
|
|
136
|
+
return joint.name === matcher;
|
|
137
|
+
}
|
|
138
|
+
if (matcher instanceof RegExp) {
|
|
139
|
+
matcher.lastIndex = 0;
|
|
140
|
+
return matcher.test(joint.name);
|
|
141
|
+
}
|
|
142
|
+
return matcher(joint);
|
|
143
|
+
}
|
|
144
|
+
function selectNamedJoints(rig, options) {
|
|
145
|
+
const selected = new Set();
|
|
146
|
+
const includeDescendants = options.includeDescendants ?? false;
|
|
147
|
+
const included = options.include?.length ? rig.joints.filter((joint)=>options.include.some((matcher)=>matchesJointName(joint, matcher))) : rig.joints;
|
|
148
|
+
for (const joint of included){
|
|
149
|
+
if (includeDescendants) {
|
|
150
|
+
addJointAndDescendants(selected, rig, joint);
|
|
151
|
+
} else {
|
|
152
|
+
selected.add(joint);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
for (const joint of rig.joints){
|
|
156
|
+
if (options.exclude?.some((matcher)=>matchesJointName(joint, matcher))) {
|
|
157
|
+
if (includeDescendants) {
|
|
158
|
+
removeJointAndDescendants(selected, rig, joint);
|
|
159
|
+
} else {
|
|
160
|
+
selected.delete(joint);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return selected;
|
|
165
|
+
}
|
|
166
|
+
function getDefaultRootMotionMode(options) {
|
|
167
|
+
if (options.rootMotion) {
|
|
168
|
+
return options.rootMotion;
|
|
169
|
+
}
|
|
170
|
+
if (options.type === 'humanoid' && (options.preset === 'lowerBody' || options.preset === 'fullBody')) {
|
|
171
|
+
return 'include';
|
|
172
|
+
}
|
|
173
|
+
return 'exclude';
|
|
174
|
+
}
|
|
175
|
+
function isRootMotionTrack(target, track, rig) {
|
|
176
|
+
if (!(track instanceof NodeTranslationTrack)) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
const hips = rig.humanoidJointMapping?.body[HumanoidBodyRig.Hips];
|
|
180
|
+
return !!rig.rootJoint && target === rig.rootJoint || !!hips && target === hips;
|
|
181
|
+
}
|
|
182
|
+
function copySkeletonReferences(sourceClip, targetClip) {
|
|
183
|
+
for (const id of sourceClip.skeletons){
|
|
184
|
+
targetClip.addSkeleton(id);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/** @internal */ function createSkeletalMaskedAnimationClip(animationSet, sourceClip, targetName, rig, options) {
|
|
188
|
+
const selectedJoints = options.type === 'humanoid' ? selectHumanoidJoints(rig, options) : selectNamedJoints(rig, options);
|
|
189
|
+
if (!selectedJoints) {
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
const rootMotion = getDefaultRootMotionMode(options);
|
|
193
|
+
const unsupportedTracks = options.unsupportedTracks ?? 'skip';
|
|
194
|
+
const targetClip = animationSet.createAnimation(targetName);
|
|
195
|
+
if (!targetClip) {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
targetClip.timeDuration = sourceClip.timeDuration;
|
|
199
|
+
targetClip.weight = sourceClip.weight;
|
|
200
|
+
targetClip.autoPlay = sourceClip.autoPlay;
|
|
201
|
+
copySkeletonReferences(sourceClip, targetClip);
|
|
202
|
+
for (const [target, tracks] of sourceClip.tracks){
|
|
203
|
+
for (const track of tracks){
|
|
204
|
+
if (!isNodeTransformTrack(track)) {
|
|
205
|
+
if (unsupportedTracks === 'error') {
|
|
206
|
+
console.error(`createSkeletalMaskedAnimation: unsupported track type '${track.constructor.name}'`);
|
|
207
|
+
animationSet.deleteAnimation(targetName);
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const rootMotionTrack = isRootMotionTrack(target, track, rig);
|
|
213
|
+
const shouldCopy = rootMotion === 'only' ? rootMotionTrack : rootMotionTrack ? rootMotion === 'include' : selectedJoints.has(target);
|
|
214
|
+
if (shouldCopy) {
|
|
215
|
+
targetClip.addTrack(target, cloneTrack(track));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
targetClip.timeDuration = sourceClip.timeDuration;
|
|
220
|
+
return targetClip;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export { createSkeletalMaskedAnimationClip };
|
|
224
|
+
//# sourceMappingURL=animationmask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animationmask.js","sources":["../../src/animation/animationmask.ts"],"sourcesContent":["import type { AnimationSet } from './animationset';\r\nimport type { AnimationClip } from './animation';\r\nimport type { AnimationTrack } from './animationtrack';\r\nimport { NodeEulerRotationTrack } from './eulerrotationtrack';\r\nimport { NodeRotationTrack } from './rotationtrack';\r\nimport { NodeScaleTrack } from './scaletrack';\r\nimport { HumanoidBodyRig } from './skeleton';\r\nimport type { HumanoidJointMapping, SkeletonRig, HumanoidHandRig } from './skeleton';\r\nimport { NodeTranslationTrack } from './translationtrack';\r\nimport type { SceneNode } from '../scene';\r\n\r\n/** @public */\r\nexport type SkeletalAnimationMaskRootMotionMode = 'include' | 'exclude' | 'only';\r\n\r\n/** @public */\r\nexport type SkeletalAnimationMaskUnsupportedTrackMode = 'skip' | 'error';\r\n\r\n/** @public */\r\nexport type HumanoidSkeletalAnimationMaskPreset =\r\n | 'fullBody'\r\n | 'upperBody'\r\n | 'lowerBody'\r\n | 'head'\r\n | 'arms'\r\n | 'leftArm'\r\n | 'rightArm'\r\n | 'legs'\r\n | 'leftLeg'\r\n | 'rightLeg';\r\n\r\n/** @public */\r\nexport type JointNameMatcher = string | RegExp | ((joint: SceneNode) => boolean);\r\n\r\n/** @public */\r\nexport type SkeletalAnimationMaskCommonOptions = {\r\n /**\r\n * How root translation tracks are copied.\r\n *\r\n * Defaults to `include` for lower/full body humanoid masks and to `exclude` otherwise.\r\n */\r\n rootMotion?: SkeletalAnimationMaskRootMotionMode;\r\n /**\r\n * How tracks outside node transform animation should be handled.\r\n *\r\n * Defaults to `skip`.\r\n */\r\n unsupportedTracks?: SkeletalAnimationMaskUnsupportedTrackMode;\r\n};\r\n\r\n/** @public */\r\nexport type HumanoidSkeletalAnimationMaskOptions = SkeletalAnimationMaskCommonOptions & {\r\n type: 'humanoid';\r\n /**\r\n * Optional semantic preset used as the initial joint set.\r\n */\r\n preset?: HumanoidSkeletalAnimationMaskPreset;\r\n /**\r\n * Boundary joint for `upperBody`. Defaults to `HumanoidBodyRig.Spine`.\r\n */\r\n boundary?: HumanoidBodyRig;\r\n /**\r\n * Additional body joints selected by semantic name.\r\n */\r\n includeBody?: HumanoidBodyRig[];\r\n /**\r\n * Body joints removed from the selected set.\r\n */\r\n excludeBody?: HumanoidBodyRig[];\r\n includeLeftHand?: HumanoidHandRig[];\r\n includeRightHand?: HumanoidHandRig[];\r\n excludeLeftHand?: HumanoidHandRig[];\r\n excludeRightHand?: HumanoidHandRig[];\r\n /**\r\n * Whether explicit semantic include/exclude entries affect their descendants.\r\n *\r\n * Defaults to true for humanoid semantic masks.\r\n */\r\n includeDescendants?: boolean;\r\n};\r\n\r\n/** @public */\r\nexport type NamedJointsSkeletalAnimationMaskOptions = SkeletalAnimationMaskCommonOptions & {\r\n type: 'joints';\r\n /**\r\n * Joint name matchers. If omitted, all rig joints are selected before exclusions.\r\n */\r\n include?: JointNameMatcher[];\r\n /**\r\n * Joint name matchers removed from the selected set.\r\n */\r\n exclude?: JointNameMatcher[];\r\n /**\r\n * Whether selected or excluded joints affect their descendants.\r\n *\r\n * Defaults to false for name masks.\r\n */\r\n includeDescendants?: boolean;\r\n};\r\n\r\n/** @public */\r\nexport type SkeletalAnimationMaskOptions =\r\n | HumanoidSkeletalAnimationMaskOptions\r\n | NamedJointsSkeletalAnimationMaskOptions;\r\n\r\nfunction isNodeTransformTrack(track: AnimationTrack): boolean {\r\n return (\r\n track instanceof NodeRotationTrack ||\r\n track instanceof NodeEulerRotationTrack ||\r\n track instanceof NodeTranslationTrack ||\r\n track instanceof NodeScaleTrack\r\n );\r\n}\r\n\r\nfunction cloneTrack(track: AnimationTrack): AnimationTrack {\r\n const cloned = track.clone();\r\n cloned.name = track.name;\r\n cloned.target = track.target;\r\n cloned.jointIndex = track.jointIndex;\r\n return cloned;\r\n}\r\n\r\nfunction addJoint(set: Set<SceneNode>, rig: SkeletonRig, joint: SceneNode | undefined) {\r\n if (joint && rig.joints.includes(joint)) {\r\n set.add(joint);\r\n }\r\n}\r\n\r\nfunction addJointAndDescendants(set: Set<SceneNode>, rig: SkeletonRig, joint: SceneNode | undefined) {\r\n if (!joint) {\r\n return;\r\n }\r\n for (const candidate of rig.joints) {\r\n if (joint === candidate || joint.isParentOf(candidate)) {\r\n set.add(candidate);\r\n }\r\n }\r\n}\r\n\r\nfunction removeJointAndDescendants(set: Set<SceneNode>, rig: SkeletonRig, joint: SceneNode | undefined) {\r\n if (!joint) {\r\n return;\r\n }\r\n for (const candidate of rig.joints) {\r\n if (joint === candidate || joint.isParentOf(candidate)) {\r\n set.delete(candidate);\r\n }\r\n }\r\n}\r\n\r\nfunction addSemanticJoint(\r\n set: Set<SceneNode>,\r\n rig: SkeletonRig,\r\n joint: SceneNode | undefined,\r\n includeDescendants: boolean\r\n) {\r\n if (includeDescendants) {\r\n addJointAndDescendants(set, rig, joint);\r\n } else {\r\n addJoint(set, rig, joint);\r\n }\r\n}\r\n\r\nfunction removeSemanticJoint(\r\n set: Set<SceneNode>,\r\n rig: SkeletonRig,\r\n joint: SceneNode | undefined,\r\n includeDescendants: boolean\r\n) {\r\n if (includeDescendants) {\r\n removeJointAndDescendants(set, rig, joint);\r\n } else if (joint) {\r\n set.delete(joint);\r\n }\r\n}\r\n\r\nfunction addHumanoidPreset(\r\n set: Set<SceneNode>,\r\n rig: SkeletonRig,\r\n mapping: HumanoidJointMapping<SceneNode>,\r\n preset: HumanoidSkeletalAnimationMaskPreset,\r\n boundary: HumanoidBodyRig | undefined\r\n) {\r\n const body = mapping.body;\r\n switch (preset) {\r\n case 'fullBody':\r\n for (const joint of rig.joints) {\r\n set.add(joint);\r\n }\r\n break;\r\n case 'upperBody':\r\n addJointAndDescendants(set, rig, body[boundary ?? HumanoidBodyRig.Spine]);\r\n removeJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);\r\n removeJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);\r\n break;\r\n case 'lowerBody':\r\n addJoint(set, rig, body[HumanoidBodyRig.Hips]);\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);\r\n break;\r\n case 'head':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.Neck]);\r\n break;\r\n case 'arms':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftShoulder]);\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightShoulder]);\r\n break;\r\n case 'leftArm':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftShoulder]);\r\n break;\r\n case 'rightArm':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightShoulder]);\r\n break;\r\n case 'legs':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);\r\n break;\r\n case 'leftLeg':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.LeftUpperLeg]);\r\n break;\r\n case 'rightLeg':\r\n addJointAndDescendants(set, rig, body[HumanoidBodyRig.RightUpperLeg]);\r\n break;\r\n }\r\n}\r\n\r\nfunction selectHumanoidJoints(\r\n rig: SkeletonRig,\r\n options: HumanoidSkeletalAnimationMaskOptions\r\n): Set<SceneNode> | null {\r\n const mapping = rig.humanoidJointMapping;\r\n if (!mapping) {\r\n console.error('createSkeletalMaskedAnimation: skeleton does not have a humanoid joint mapping');\r\n return null;\r\n }\r\n const selected = new Set<SceneNode>();\r\n if (options.preset) {\r\n addHumanoidPreset(selected, rig, mapping, options.preset, options.boundary);\r\n } else if (\r\n !options.includeBody?.length &&\r\n !options.includeLeftHand?.length &&\r\n !options.includeRightHand?.length\r\n ) {\r\n for (const joint of rig.joints) {\r\n selected.add(joint);\r\n }\r\n }\r\n\r\n const includeDescendants = options.includeDescendants ?? true;\r\n for (const semantic of options.includeBody ?? []) {\r\n addSemanticJoint(selected, rig, mapping.body[semantic], includeDescendants);\r\n }\r\n for (const semantic of options.includeLeftHand ?? []) {\r\n addSemanticJoint(selected, rig, mapping.leftHand?.[semantic], includeDescendants);\r\n }\r\n for (const semantic of options.includeRightHand ?? []) {\r\n addSemanticJoint(selected, rig, mapping.rightHand?.[semantic], includeDescendants);\r\n }\r\n for (const semantic of options.excludeBody ?? []) {\r\n removeSemanticJoint(selected, rig, mapping.body[semantic], includeDescendants);\r\n }\r\n for (const semantic of options.excludeLeftHand ?? []) {\r\n removeSemanticJoint(selected, rig, mapping.leftHand?.[semantic], includeDescendants);\r\n }\r\n for (const semantic of options.excludeRightHand ?? []) {\r\n removeSemanticJoint(selected, rig, mapping.rightHand?.[semantic], includeDescendants);\r\n }\r\n return selected;\r\n}\r\n\r\nfunction matchesJointName(joint: SceneNode, matcher: JointNameMatcher): boolean {\r\n if (typeof matcher === 'string') {\r\n return joint.name === matcher;\r\n }\r\n if (matcher instanceof RegExp) {\r\n matcher.lastIndex = 0;\r\n return matcher.test(joint.name);\r\n }\r\n return matcher(joint);\r\n}\r\n\r\nfunction selectNamedJoints(\r\n rig: SkeletonRig,\r\n options: NamedJointsSkeletalAnimationMaskOptions\r\n): Set<SceneNode> {\r\n const selected = new Set<SceneNode>();\r\n const includeDescendants = options.includeDescendants ?? false;\r\n const included = options.include?.length\r\n ? rig.joints.filter((joint) => options.include!.some((matcher) => matchesJointName(joint, matcher)))\r\n : rig.joints;\r\n\r\n for (const joint of included) {\r\n if (includeDescendants) {\r\n addJointAndDescendants(selected, rig, joint);\r\n } else {\r\n selected.add(joint);\r\n }\r\n }\r\n\r\n for (const joint of rig.joints) {\r\n if (options.exclude?.some((matcher) => matchesJointName(joint, matcher))) {\r\n if (includeDescendants) {\r\n removeJointAndDescendants(selected, rig, joint);\r\n } else {\r\n selected.delete(joint);\r\n }\r\n }\r\n }\r\n return selected;\r\n}\r\n\r\nfunction getDefaultRootMotionMode(\r\n options: SkeletalAnimationMaskOptions\r\n): SkeletalAnimationMaskRootMotionMode {\r\n if (options.rootMotion) {\r\n return options.rootMotion;\r\n }\r\n if (options.type === 'humanoid' && (options.preset === 'lowerBody' || options.preset === 'fullBody')) {\r\n return 'include';\r\n }\r\n return 'exclude';\r\n}\r\n\r\nfunction isRootMotionTrack(target: object, track: AnimationTrack, rig: SkeletonRig): boolean {\r\n if (!(track instanceof NodeTranslationTrack)) {\r\n return false;\r\n }\r\n const hips = rig.humanoidJointMapping?.body[HumanoidBodyRig.Hips];\r\n return (!!rig.rootJoint && target === rig.rootJoint) || (!!hips && target === hips);\r\n}\r\n\r\nfunction copySkeletonReferences(sourceClip: AnimationClip, targetClip: AnimationClip) {\r\n for (const id of sourceClip.skeletons) {\r\n targetClip.addSkeleton(id);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createSkeletalMaskedAnimationClip(\r\n animationSet: AnimationSet,\r\n sourceClip: AnimationClip,\r\n targetName: string,\r\n rig: SkeletonRig,\r\n options: SkeletalAnimationMaskOptions\r\n): AnimationClip | null {\r\n const selectedJoints =\r\n options.type === 'humanoid' ? selectHumanoidJoints(rig, options) : selectNamedJoints(rig, options);\r\n if (!selectedJoints) {\r\n return null;\r\n }\r\n\r\n const rootMotion = getDefaultRootMotionMode(options);\r\n const unsupportedTracks = options.unsupportedTracks ?? 'skip';\r\n const targetClip = animationSet.createAnimation(targetName);\r\n if (!targetClip) {\r\n return null;\r\n }\r\n targetClip.timeDuration = sourceClip.timeDuration;\r\n targetClip.weight = sourceClip.weight;\r\n targetClip.autoPlay = sourceClip.autoPlay;\r\n copySkeletonReferences(sourceClip, targetClip);\r\n\r\n for (const [target, tracks] of sourceClip.tracks) {\r\n for (const track of tracks) {\r\n if (!isNodeTransformTrack(track)) {\r\n if (unsupportedTracks === 'error') {\r\n console.error(`createSkeletalMaskedAnimation: unsupported track type '${track.constructor.name}'`);\r\n animationSet.deleteAnimation(targetName);\r\n return null;\r\n }\r\n continue;\r\n }\r\n\r\n const rootMotionTrack = isRootMotionTrack(target, track, rig);\r\n const shouldCopy =\r\n rootMotion === 'only'\r\n ? rootMotionTrack\r\n : rootMotionTrack\r\n ? rootMotion === 'include'\r\n : selectedJoints.has(target as SceneNode);\r\n\r\n if (shouldCopy) {\r\n targetClip.addTrack(target, cloneTrack(track));\r\n }\r\n }\r\n }\r\n targetClip.timeDuration = sourceClip.timeDuration;\r\n return targetClip;\r\n}\r\n"],"names":["isNodeTransformTrack","track","NodeRotationTrack","NodeEulerRotationTrack","NodeTranslationTrack","NodeScaleTrack","cloneTrack","cloned","clone","name","target","jointIndex","addJoint","set","rig","joint","joints","includes","add","addJointAndDescendants","candidate","isParentOf","removeJointAndDescendants","delete","addSemanticJoint","includeDescendants","removeSemanticJoint","addHumanoidPreset","mapping","preset","boundary","body","HumanoidBodyRig","Spine","LeftUpperLeg","RightUpperLeg","Hips","Neck","LeftShoulder","RightShoulder","selectHumanoidJoints","options","humanoidJointMapping","console","error","selected","Set","includeBody","length","includeLeftHand","includeRightHand","semantic","leftHand","rightHand","excludeBody","excludeLeftHand","excludeRightHand","matchesJointName","matcher","RegExp","lastIndex","test","selectNamedJoints","included","include","filter","some","exclude","getDefaultRootMotionMode","rootMotion","type","isRootMotionTrack","hips","rootJoint","copySkeletonReferences","sourceClip","targetClip","id","skeletons","addSkeleton","createSkeletalMaskedAnimationClip","animationSet","targetName","selectedJoints","unsupportedTracks","createAnimation","timeDuration","weight","autoPlay","tracks","deleteAnimation","rootMotionTrack","shouldCopy","has","addTrack"],"mappings":"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"}
|