@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zabc_loader.js","sources":["../../../../src/asset/loaders/zabc/zabc_loader.ts"],"sourcesContent":["import { base64ToUint8Array, Vector3 } from '@zephyr3d/base';\r\nimport { FixedGeometryCacheTrack } from '../../../animation/fixed_geometry_cache_track';\r\nimport {\r\n PCAGeometryCacheTrack,\r\n type PCAGeometryCacheTrackData\r\n} from '../../../animation/pca_geometry_cache_track';\r\nimport type { AssetSubMeshData } from '../../model';\r\nimport type { VertexBufferInfo } from '@zephyr3d/device';\r\nimport { BoundingBox } from '../../../utility/bounding_volume';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport type { Mesh } from '../../../scene/mesh';\r\n\r\ntype ZABCBinaryBufferRef = {\r\n offset: number;\r\n length: number;\r\n count?: number;\r\n};\r\n\r\ntype ZABCCacheTrackJSON = {\r\n codec?: 'fixed' | 'pca';\r\n node?: number;\r\n nodePath?: string;\r\n nodeName?: string;\r\n subMeshIndex?: number;\r\n times?: string | ZABCBinaryBufferRef;\r\n sampleRate?: number;\r\n positionFrames: Array<string | ZABCBinaryBufferRef>;\r\n normalFrames?: Array<string | ZABCBinaryBufferRef>;\r\n bounds: [number, number, number, number, number, number][];\r\n vectorLength?: number;\r\n positionReference?: string | ZABCBinaryBufferRef;\r\n positionComponents?: number;\r\n positionMean?: string | ZABCBinaryBufferRef;\r\n positionBases?: string | ZABCBinaryBufferRef;\r\n positionCoefficients?: string | ZABCBinaryBufferRef;\r\n normalComponents?: number;\r\n normalMean?: string | ZABCBinaryBufferRef;\r\n normalBases?: string | ZABCBinaryBufferRef;\r\n normalCoefficients?: string | ZABCBinaryBufferRef;\r\n};\r\n\r\ntype ZABCAnimationJSON = {\r\n name: string;\r\n tracks: ZABCCacheTrackJSON[];\r\n};\r\n\r\ntype ZABCFileJSON = {\r\n version: number;\r\n baseModel?: string;\r\n animations: ZABCAnimationJSON[];\r\n};\r\n\r\nexport type ParsedZABC = {\r\n content: ZABCFileJSON;\r\n binaryPayload: ArrayBuffer | null;\r\n payloadOffset: number;\r\n};\r\n\r\nexport async function parseZABCBlob(data: Blob): Promise<ParsedZABC> {\r\n const arrayBuffer = await data.arrayBuffer();\r\n if (isBinaryZABC(arrayBuffer)) {\r\n return parseBinaryZABC(arrayBuffer);\r\n }\r\n return parseLegacyZABC(arrayBuffer);\r\n}\r\n\r\nexport async function attachZABCAnimationsToSceneNode(\r\n node: SceneNode,\r\n parsed: ParsedZABC,\r\n options?: {\r\n sourcePath?: string;\r\n autoPlay?: boolean;\r\n replaceAnimationNames?: string[];\r\n }\r\n) {\r\n if (options?.replaceAnimationNames) {\r\n for (const name of options.replaceAnimationNames) {\r\n node.animationSet.deleteAnimation(name);\r\n }\r\n }\r\n const addedAnimationNames: string[] = [];\r\n for (const animation of parsed.content.animations ?? []) {\r\n const animationName = buildAnimationName(options?.sourcePath, animation.name ?? 'GeometryCache');\r\n node.animationSet.deleteAnimation(animationName);\r\n const clip = node.animationSet.createAnimation(animationName, true);\r\n if (!clip) {\r\n continue;\r\n }\r\n clip.autoPlay = !!options?.autoPlay;\r\n for (const track of animation.tracks ?? []) {\r\n const targetNode = findTargetNode(node, track);\r\n if (!targetNode) {\r\n console.error(\r\n `zabc track target not found: node=${track.node}, nodePath=${track.nodePath}, nodeName=${track.nodeName}`\r\n );\r\n continue;\r\n }\r\n const targetMesh = await getTargetMesh(targetNode, track, parsed);\r\n if (!targetMesh) {\r\n const subMeshLabel =\r\n typeof track.subMeshIndex === 'number' && track.subMeshIndex >= 0\r\n ? `${track.subMeshIndex}`\r\n : 'auto';\r\n console.error(`zabc target mesh not found: node=${targetNode.name}, subMeshIndex=${subMeshLabel}`);\r\n continue;\r\n }\r\n const assetSubMesh = getTargetAssetSubMesh(node, track);\r\n if (track.codec === 'pca') {\r\n const remapped = assetSubMesh\r\n ? remapPCAGeometryCacheData(assetSubMesh, toPCATrackData(track, parsed))\r\n : await remapPCAGeometryCacheDataForMesh(targetMesh, toPCATrackData(track, parsed));\r\n clip.addTrack(targetMesh, new PCAGeometryCacheTrack(remapped, true));\r\n } else {\r\n const frames = assetSubMesh\r\n ? remapGeometryCacheFrames(\r\n assetSubMesh,\r\n track.positionFrames.map((positionsRef, index) => ({\r\n positions: decodeFloat32Array(positionsRef, parsed),\r\n normals: track.normalFrames?.[index]\r\n ? decodeFloat32Array(track.normalFrames[index], parsed)\r\n : null,\r\n boundingBox: decodeBoundingBox(track.bounds[index])\r\n }))\r\n )\r\n : await remapGeometryCacheFramesForMesh(\r\n targetMesh,\r\n track.positionFrames.map((positionsRef, index) => ({\r\n positions: decodeFloat32Array(positionsRef, parsed),\r\n normals: track.normalFrames?.[index]\r\n ? decodeFloat32Array(track.normalFrames[index], parsed)\r\n : null,\r\n boundingBox: decodeBoundingBox(track.bounds[index])\r\n }))\r\n );\r\n clip.addTrack(targetMesh, new FixedGeometryCacheTrack(decodeTimes(track, parsed), frames, true));\r\n }\r\n }\r\n if (clip.tracks.size > 0) {\r\n addedAnimationNames.push(animationName);\r\n } else {\r\n node.animationSet.deleteAnimation(animationName);\r\n }\r\n }\r\n if (options?.autoPlay) {\r\n for (const animationName of addedAnimationNames) {\r\n node.animationSet.playAnimation(animationName, { repeat: 0 });\r\n }\r\n }\r\n return {\r\n animationNames: addedAnimationNames\r\n };\r\n}\r\n\r\nfunction buildAnimationName(sourcePath: string | undefined, animationName: string) {\r\n const fileName = sourcePath\r\n ? (sourcePath.replace(/\\\\/g, '/').split('/').filter(Boolean).pop() ?? 'cache')\r\n : 'cache';\r\n return `Cache:${fileName}:${animationName}`;\r\n}\r\n\r\nasync function getTargetMesh(node: SceneNode, track: ZABCCacheTrackJSON, parsed: ParsedZABC) {\r\n const directMeshes = collectMeshChildren(node, false);\r\n const candidateMeshes = directMeshes.length > 0 ? directMeshes : collectMeshChildren(node, true);\r\n if (candidateMeshes.length === 0) {\r\n return null;\r\n }\r\n if (typeof track.subMeshIndex === 'number' && track.subMeshIndex >= 0) {\r\n return candidateMeshes[track.subMeshIndex] ?? null;\r\n }\r\n if (candidateMeshes.length === 1) {\r\n return candidateMeshes[0];\r\n }\r\n const sourceVertexCount = getTrackSourceVertexCount(track, parsed);\r\n if (sourceVertexCount > 0) {\r\n const matched: Mesh[] = [];\r\n for (const mesh of candidateMeshes) {\r\n const rawPositions = await getMeshRawPositions(mesh);\r\n const targetVertexCount = rawPositions ? (rawPositions.length / 3) >> 0 : -1;\r\n if (targetVertexCount === sourceVertexCount) {\r\n matched.push(mesh);\r\n }\r\n }\r\n if (matched.length === 1) {\r\n return matched[0];\r\n }\r\n if (matched.length > 1) {\r\n console.warn(\r\n `zabc subMesh auto-match is ambiguous under node=${node.name}, matched=${matched.length}, fallback=first`\r\n );\r\n }\r\n }\r\n return candidateMeshes[0];\r\n}\r\n\r\nfunction collectMeshChildren(root: SceneNode, recursive: boolean) {\r\n const meshes: Mesh[] = [];\r\n if (recursive) {\r\n root.iterate((child) => {\r\n if (child !== root && child.isMesh()) {\r\n meshes.push(child);\r\n }\r\n return false;\r\n });\r\n return meshes;\r\n }\r\n for (const child of root.children) {\r\n const sceneNode = child;\r\n if (sceneNode?.isMesh()) {\r\n meshes.push(sceneNode);\r\n }\r\n }\r\n return meshes;\r\n}\r\n\r\nfunction getTrackSourceVertexCount(track: ZABCCacheTrackJSON, parsed: ParsedZABC) {\r\n try {\r\n const first = track.positionFrames?.[0];\r\n if (!first) {\r\n return -1;\r\n }\r\n return (decodeFloat32Array(first, parsed).length / 3) >> 0;\r\n } catch {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getTargetAssetSubMesh(node: SceneNode, track: ZABCCacheTrackJSON) {\r\n const sharedModel = node.sharedModel;\r\n if (!sharedModel) {\r\n return null;\r\n }\r\n if (typeof track.subMeshIndex !== 'number' || track.subMeshIndex < 0) {\r\n return null;\r\n }\r\n const assetNode = findTargetAssetNode(node, track);\r\n return assetNode?.mesh?.subMeshes?.[track.subMeshIndex] ?? null;\r\n}\r\n\r\nfunction findTargetAssetNode(root: SceneNode, track: ZABCCacheTrackJSON) {\r\n const sharedModel = root.sharedModel;\r\n if (!sharedModel) {\r\n return null;\r\n }\r\n if (track.nodePath) {\r\n for (const candidatePath of getNodePathCandidates(track.nodePath)) {\r\n for (const scene of sharedModel.scenes) {\r\n for (const rootNode of scene.rootNodes) {\r\n const found = findAssetNodeByPath(rootNode, candidatePath);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (track.nodeName) {\r\n for (const candidateName of getNodeNameCandidates(track.nodeName)) {\r\n const found = sharedModel.nodes.find((item) => item?.name === candidateName);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction findAssetNodeByPath(\r\n node: { name: string; children: any[] },\r\n normalizedTrackPath: string,\r\n currentPath = ''\r\n): any {\r\n if (!node) {\r\n return null;\r\n }\r\n const path = currentPath ? `${currentPath}/${node.name || ''}` : node.name || '';\r\n const normalizedCurrent = normalizeNodePath(path);\r\n if (normalizedCurrent === normalizedTrackPath) {\r\n return node;\r\n }\r\n for (const child of node.children) {\r\n const found = findAssetNodeByPath(child, normalizedTrackPath, path);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction findTargetNode(root: SceneNode, track: ZABCCacheTrackJSON) {\r\n const hasExplicitTarget = !!track.nodePath || !!track.nodeName;\r\n if (track.nodePath) {\r\n for (const candidatePath of getNodePathCandidates(track.nodePath)) {\r\n for (const child of root.children) {\r\n const found = findSceneNodeByPath(child, candidatePath);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n }\r\n if (track.nodeName) {\r\n for (const candidateName of getNodeNameCandidates(track.nodeName)) {\r\n const found = root.findNodeByName(candidateName);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n if (hasExplicitTarget) {\r\n console.warn(\r\n `zabc track target fallback to attached node: nodePath=${track.nodePath ?? ''}, nodeName=${track.nodeName ?? ''}`\r\n );\r\n }\r\n return root;\r\n}\r\n\r\nfunction findSceneNodeByPath(\r\n node: SceneNode,\r\n normalizedTrackPath: string,\r\n currentPath = ''\r\n): SceneNode | null {\r\n if (!node || node.isMesh()) {\r\n return null;\r\n }\r\n const path = currentPath ? `${currentPath}/${node.name || ''}` : node.name || '';\r\n const normalizedCurrent = normalizeNodePath(path);\r\n if (normalizedCurrent === normalizedTrackPath) {\r\n return node;\r\n }\r\n for (const child of node.children) {\r\n const found = findSceneNodeByPath(child, normalizedTrackPath, path);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction getNodePathCandidates(path: string) {\r\n const normalized = normalizeNodePath(path);\r\n const candidates = [normalized];\r\n if (normalized.endsWith('Shape')) {\r\n candidates.push(normalized.slice(0, -'Shape'.length));\r\n }\r\n const parts = normalized.split('/');\r\n const last = parts.length > 0 ? parts[parts.length - 1] : '';\r\n if (last.endsWith('Shape') && parts.length > 1) {\r\n parts[parts.length - 1] = last.slice(0, -'Shape'.length);\r\n candidates.push(parts.join('/'));\r\n parts.pop();\r\n candidates.push(parts.join('/'));\r\n }\r\n return candidates.filter((value, index, array) => !!value && array.indexOf(value) === index);\r\n}\r\n\r\nfunction getNodeNameCandidates(name: string) {\r\n const candidates = [name];\r\n if (name.endsWith('Shape')) {\r\n candidates.push(name.slice(0, -'Shape'.length));\r\n }\r\n return candidates.filter((value, index, array) => !!value && array.indexOf(value) === index);\r\n}\r\n\r\nfunction normalizeNodePath(path: string) {\r\n return path.replace(/\\\\/g, '/').split('/').filter(Boolean).join('/');\r\n}\r\n\r\nfunction decodeFloat32Array(data: string | ZABCBinaryBufferRef, parsed: ParsedZABC) {\r\n if (typeof data === 'string') {\r\n const bytes = base64ToUint8Array(data);\r\n return new Float32Array(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength));\r\n }\r\n if (!parsed.binaryPayload) {\r\n throw new Error('Invalid binary zabc file: missing payload');\r\n }\r\n const start = parsed.payloadOffset + data.offset;\r\n const end = start + data.length;\r\n return new Float32Array(parsed.binaryPayload.slice(start, end));\r\n}\r\n\r\nfunction decodeTimes(track: ZABCCacheTrackJSON, parsed: ParsedZABC) {\r\n if (track.times) {\r\n return decodeFloat32Array(track.times, parsed);\r\n }\r\n const sampleRate = track.sampleRate && track.sampleRate > 0 ? track.sampleRate : 30;\r\n const times = new Float32Array(track.positionFrames.length);\r\n for (let i = 0; i < times.length; i++) {\r\n times[i] = i / sampleRate;\r\n }\r\n return times;\r\n}\r\n\r\nfunction decodeBoundingBox(values: [number, number, number, number, number, number]) {\r\n return new BoundingBox(\r\n new Vector3(values[0], values[1], values[2]),\r\n new Vector3(values[3], values[4], values[5])\r\n );\r\n}\r\n\r\nfunction decodePCAFrames(\r\n data: string | ZABCBinaryBufferRef,\r\n rows: number,\r\n columns: number,\r\n parsed: ParsedZABC\r\n) {\r\n const values = decodeFloat32Array(data, parsed);\r\n const result: Float32Array[] = [];\r\n if (rows <= 0 || columns <= 0) {\r\n return result;\r\n }\r\n for (let i = 0; i < rows; i++) {\r\n result.push(values.slice(i * columns, i * columns + columns));\r\n }\r\n return result;\r\n}\r\n\r\nfunction toPCATrackData(track: ZABCCacheTrackJSON, parsed: ParsedZABC): PCAGeometryCacheTrackData {\r\n return {\r\n times: decodeTimes(track, parsed),\r\n bounds: track.bounds ?? [],\r\n positionReference: track.positionReference ? decodeFloat32Array(track.positionReference, parsed) : null,\r\n positionMean: decodeFloat32Array(track.positionMean!, parsed),\r\n positionBases: decodePCAFrames(\r\n track.positionBases!,\r\n track.positionComponents ?? 0,\r\n track.vectorLength ?? 0,\r\n parsed\r\n ),\r\n positionCoefficients: decodePCAFrames(\r\n track.positionCoefficients!,\r\n track.bounds?.length ?? 0,\r\n track.positionComponents ?? 0,\r\n parsed\r\n ),\r\n normalMean: track.normalMean ? decodeFloat32Array(track.normalMean, parsed) : null,\r\n normalBases:\r\n track.normalBases && track.normalComponents\r\n ? decodePCAFrames(track.normalBases, track.normalComponents, track.vectorLength ?? 0, parsed)\r\n : null,\r\n normalCoefficients:\r\n track.normalCoefficients && track.normalComponents\r\n ? decodePCAFrames(track.normalCoefficients, track.bounds?.length ?? 0, track.normalComponents, parsed)\r\n : null\r\n };\r\n}\r\n\r\nfunction parseLegacyZABC(arrayBuffer: ArrayBuffer): ParsedZABC {\r\n const text = new TextDecoder().decode(arrayBuffer);\r\n return {\r\n content: JSON.parse(text) as ZABCFileJSON,\r\n binaryPayload: null,\r\n payloadOffset: 0\r\n };\r\n}\r\n\r\nfunction parseBinaryZABC(arrayBuffer: ArrayBuffer): ParsedZABC {\r\n const view = new DataView(arrayBuffer);\r\n const version = view.getUint32(4, true);\r\n if (version !== 2 && version !== 3) {\r\n throw new Error(`Unsupported binary zabc version: ${version}`);\r\n }\r\n const manifestLength = view.getUint32(8, true);\r\n const manifestOffset = 12;\r\n const payloadOffset = manifestOffset + manifestLength;\r\n const manifestText = new TextDecoder().decode(arrayBuffer.slice(manifestOffset, payloadOffset));\r\n return {\r\n content: JSON.parse(manifestText) as ZABCFileJSON,\r\n binaryPayload: arrayBuffer,\r\n payloadOffset\r\n };\r\n}\r\n\r\nfunction isBinaryZABC(arrayBuffer: ArrayBuffer) {\r\n if (arrayBuffer.byteLength < 12) {\r\n return false;\r\n }\r\n const magic = new Uint8Array(arrayBuffer, 0, 4);\r\n return magic[0] === 0x5a && magic[1] === 0x41 && magic[2] === 0x42 && magic[3] === 0x43;\r\n}\r\n\r\nfunction remapGeometryCacheFrames(\r\n subMesh: AssetSubMeshData,\r\n frames: { positions: Float32Array; normals: Float32Array | null; boundingBox: BoundingBox }[]\r\n) {\r\n if (!subMesh.rawPositions || frames.length === 0) {\r\n return frames;\r\n }\r\n const sourcePositions = frames[0].positions;\r\n const sourceVertexCount = (sourcePositions.length / 3) >> 0;\r\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return frames;\r\n }\r\n const remap = buildGeometryCacheRemap(subMesh.rawPositions, sourcePositions);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return frames;\r\n }\r\n return frames.map((frame) => ({\r\n positions: expandGeometryCacheData(frame.positions, remap),\r\n normals:\r\n frame.normals && (frame.normals.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(frame.normals, remap)\r\n : null,\r\n boundingBox: frame.boundingBox\r\n }));\r\n}\r\n\r\nasync function remapGeometryCacheFramesForMesh(\r\n mesh: Mesh,\r\n frames: { positions: Float32Array; normals: Float32Array | null; boundingBox: BoundingBox }[]\r\n) {\r\n const rawPositions = await getMeshRawPositions(mesh);\r\n if (!rawPositions || frames.length === 0) {\r\n return frames;\r\n }\r\n const sourcePositions = frames[0].positions;\r\n const sourceVertexCount = (sourcePositions.length / 3) >> 0;\r\n const targetVertexCount = (rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return frames;\r\n }\r\n const remap = buildGeometryCacheRemap(rawPositions, sourcePositions);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return frames;\r\n }\r\n return frames.map((frame) => ({\r\n positions: expandGeometryCacheData(frame.positions, remap),\r\n normals:\r\n frame.normals && (frame.normals.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(frame.normals, remap)\r\n : null,\r\n boundingBox: frame.boundingBox\r\n }));\r\n}\r\n\r\nfunction remapPCAGeometryCacheData(\r\n subMesh: AssetSubMeshData,\r\n track: PCAGeometryCacheTrackData\r\n): PCAGeometryCacheTrackData {\r\n const remapReference = track.positionReference ?? reconstructPCAGeometryCacheReference(track);\r\n if (!subMesh.rawPositions || remapReference.length === 0) {\r\n return track;\r\n }\r\n const sourceVertexCount = (remapReference.length / 3) >> 0;\r\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return track;\r\n }\r\n const remap = buildGeometryCacheRemap(subMesh.rawPositions, remapReference);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return track;\r\n }\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: expandGeometryCacheData(remapReference, remap),\r\n positionMean: expandGeometryCacheData(track.positionMean, remap),\r\n positionBases: track.positionBases.map((basis) => expandGeometryCacheData(basis, remap)),\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean:\r\n track.normalMean && (track.normalMean.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(track.normalMean, remap)\r\n : null,\r\n normalBases:\r\n track.normalBases?.map((basis) =>\r\n (basis.length / 3) >> 0 === sourceVertexCount ? expandGeometryCacheData(basis, remap) : basis\r\n ) ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n}\r\n\r\nasync function remapPCAGeometryCacheDataForMesh(\r\n mesh: Mesh,\r\n track: PCAGeometryCacheTrackData\r\n): Promise<PCAGeometryCacheTrackData> {\r\n const rawPositions = await getMeshRawPositions(mesh);\r\n const remapReference = track.positionReference ?? reconstructPCAGeometryCacheReference(track);\r\n if (!rawPositions || remapReference.length === 0) {\r\n return track;\r\n }\r\n const sourceVertexCount = (remapReference.length / 3) >> 0;\r\n const targetVertexCount = (rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return track;\r\n }\r\n const remap = buildGeometryCacheRemap(rawPositions, remapReference);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return track;\r\n }\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: expandGeometryCacheData(remapReference, remap),\r\n positionMean: expandGeometryCacheData(track.positionMean, remap),\r\n positionBases: track.positionBases.map((basis) => expandGeometryCacheData(basis, remap)),\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean:\r\n track.normalMean && (track.normalMean.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(track.normalMean, remap)\r\n : null,\r\n normalBases:\r\n track.normalBases?.map((basis) =>\r\n (basis.length / 3) >> 0 === sourceVertexCount ? expandGeometryCacheData(basis, remap) : basis\r\n ) ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n}\r\n\r\nasync function getMeshRawPositions(mesh: Mesh) {\r\n const primitive = mesh.primitive;\r\n const info = primitive?.getVertexBufferInfo('position');\r\n if (!primitive || !info) {\r\n return null;\r\n }\r\n const bytes = await info.buffer.getBufferSubData();\r\n return extractPositionArray(bytes, info);\r\n}\r\n\r\nfunction extractPositionArray(bytes: Uint8Array<ArrayBuffer>, info: VertexBufferInfo) {\r\n const componentSize =\r\n ((info.type as unknown as { getSize(): number }).getSize?.() ?? 0) / Math.max(1, info.type.cols);\r\n if (componentSize !== 4) {\r\n return null;\r\n }\r\n const drawOffset = info.drawOffset ?? 0;\r\n const byteOffset = bytes.byteOffset + drawOffset;\r\n const byteLength = bytes.byteLength - drawOffset;\r\n const vertexCount = Math.max(0, Math.floor(byteLength / info.stride));\r\n const positions = new Float32Array(vertexCount * 3);\r\n for (let i = 0; i < vertexCount; i++) {\r\n const base = byteOffset + i * info.stride + info.offset;\r\n const values = new Float32Array(bytes.buffer, base, Math.max(3, info.type.cols));\r\n positions[i * 3] = values[0] ?? 0;\r\n positions[i * 3 + 1] = values[1] ?? 0;\r\n positions[i * 3 + 2] = values[2] ?? 0;\r\n }\r\n return positions;\r\n}\r\n\r\nfunction reconstructPCAGeometryCacheReference(track: PCAGeometryCacheTrackData) {\r\n const reference = new Float32Array(track.positionMean);\r\n const coefficients = track.positionCoefficients[0];\r\n if (!coefficients) {\r\n return reference;\r\n }\r\n const componentCount = Math.min(track.positionBases.length, coefficients.length);\r\n for (let component = 0; component < componentCount; component++) {\r\n const basis = track.positionBases[component];\r\n const coefficient = coefficients[component];\r\n if (!basis || coefficient === 0) {\r\n continue;\r\n }\r\n const count = Math.min(reference.length, basis.length);\r\n for (let i = 0; i < count; i++) {\r\n reference[i] += basis[i] * coefficient;\r\n }\r\n }\r\n return reference;\r\n}\r\n\r\nfunction buildGeometryCacheRemap(targetPositions: Float32Array, sourcePositions: Float32Array) {\r\n const sourceCount = (sourcePositions.length / 3) >> 0;\r\n const targetCount = (targetPositions.length / 3) >> 0;\r\n const buckets = new Map<string, number[]>();\r\n for (let i = 0; i < sourceCount; i++) {\r\n const key = geometryCachePositionKey(\r\n sourcePositions[i * 3],\r\n sourcePositions[i * 3 + 1],\r\n sourcePositions[i * 3 + 2]\r\n );\r\n const bucket = buckets.get(key);\r\n if (bucket) {\r\n bucket.push(i);\r\n } else {\r\n buckets.set(key, [i]);\r\n }\r\n }\r\n const remap = new Uint32Array(targetCount);\r\n for (let i = 0; i < targetCount; i++) {\r\n const x = targetPositions[i * 3];\r\n const y = targetPositions[i * 3 + 1];\r\n const z = targetPositions[i * 3 + 2];\r\n let sourceIndex = findGeometryCacheSourceIndex(sourcePositions, buckets, x, y, z);\r\n if (sourceIndex < 0) {\r\n sourceIndex = findNearestGeometryCacheSourceIndex(sourcePositions, x, y, z);\r\n }\r\n if (sourceIndex < 0) {\r\n return null;\r\n }\r\n remap[i] = sourceIndex;\r\n }\r\n return remap;\r\n}\r\n\r\nfunction expandGeometryCacheData(source: Float32Array, remap: Uint32Array) {\r\n const expanded = new Float32Array(remap.length * 3);\r\n for (let i = 0; i < remap.length; i++) {\r\n const sourceOffset = remap[i] * 3;\r\n const targetOffset = i * 3;\r\n expanded[targetOffset] = source[sourceOffset];\r\n expanded[targetOffset + 1] = source[sourceOffset + 1];\r\n expanded[targetOffset + 2] = source[sourceOffset + 2];\r\n }\r\n return expanded;\r\n}\r\n\r\nfunction findGeometryCacheSourceIndex(\r\n sourcePositions: Float32Array,\r\n buckets: Map<string, number[]>,\r\n x: number,\r\n y: number,\r\n z: number\r\n) {\r\n const bucket = buckets.get(geometryCachePositionKey(x, y, z));\r\n if (!bucket) {\r\n return -1;\r\n }\r\n const epsilon = 1e-5;\r\n for (const index of bucket) {\r\n const offset = index * 3;\r\n if (\r\n Math.abs(sourcePositions[offset] - x) <= epsilon &&\r\n Math.abs(sourcePositions[offset + 1] - y) <= epsilon &&\r\n Math.abs(sourcePositions[offset + 2] - z) <= epsilon\r\n ) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\nfunction findNearestGeometryCacheSourceIndex(sourcePositions: Float32Array, x: number, y: number, z: number) {\r\n const epsilonSquared = 1e-8;\r\n let bestIndex = -1;\r\n let bestDistance = Number.POSITIVE_INFINITY;\r\n for (let i = 0; i < sourcePositions.length; i += 3) {\r\n const dx = sourcePositions[i] - x;\r\n const dy = sourcePositions[i + 1] - y;\r\n const dz = sourcePositions[i + 2] - z;\r\n const distance = dx * dx + dy * dy + dz * dz;\r\n if (distance < bestDistance) {\r\n bestDistance = distance;\r\n bestIndex = i / 3;\r\n }\r\n }\r\n return bestDistance <= epsilonSquared ? bestIndex : -1;\r\n}\r\n\r\nfunction geometryCachePositionKey(x: number, y: number, z: number) {\r\n return `${Math.round(x * 100000)}|${Math.round(y * 100000)}|${Math.round(z * 100000)}`;\r\n}\r\n"],"names":["parseZABCBlob","data","arrayBuffer","isBinaryZABC","parseBinaryZABC","parseLegacyZABC","attachZABCAnimationsToSceneNode","node","parsed","options","replaceAnimationNames","name","animationSet","deleteAnimation","addedAnimationNames","animation","content","animations","animationName","buildAnimationName","sourcePath","clip","createAnimation","autoPlay","track","tracks","targetNode","findTargetNode","console","error","nodePath","nodeName","targetMesh","getTargetMesh","subMeshLabel","subMeshIndex","assetSubMesh","getTargetAssetSubMesh","codec","remapped","remapPCAGeometryCacheData","toPCATrackData","remapPCAGeometryCacheDataForMesh","addTrack","PCAGeometryCacheTrack","frames","remapGeometryCacheFrames","positionFrames","map","positionsRef","index","positions","decodeFloat32Array","normals","normalFrames","boundingBox","decodeBoundingBox","bounds","remapGeometryCacheFramesForMesh","FixedGeometryCacheTrack","decodeTimes","size","push","playAnimation","repeat","animationNames","fileName","replace","split","filter","Boolean","pop","directMeshes","collectMeshChildren","candidateMeshes","length","sourceVertexCount","getTrackSourceVertexCount","matched","mesh","rawPositions","getMeshRawPositions","targetVertexCount","warn","root","recursive","meshes","iterate","child","isMesh","children","sceneNode","first","sharedModel","assetNode","findTargetAssetNode","subMeshes","candidatePath","getNodePathCandidates","scene","scenes","rootNode","rootNodes","found","findAssetNodeByPath","candidateName","getNodeNameCandidates","nodes","find","item","normalizedTrackPath","currentPath","path","normalizedCurrent","normalizeNodePath","hasExplicitTarget","findSceneNodeByPath","findNodeByName","normalized","candidates","endsWith","slice","parts","last","join","value","array","indexOf","bytes","base64ToUint8Array","Float32Array","buffer","byteOffset","byteLength","binaryPayload","Error","start","payloadOffset","offset","end","times","sampleRate","i","values","BoundingBox","Vector3","decodePCAFrames","rows","columns","result","positionReference","positionMean","positionBases","positionComponents","vectorLength","positionCoefficients","normalMean","normalBases","normalComponents","normalCoefficients","text","TextDecoder","decode","JSON","parse","view","DataView","version","getUint32","manifestLength","manifestOffset","manifestText","magic","Uint8Array","subMesh","sourcePositions","remap","buildGeometryCacheRemap","frame","expandGeometryCacheData","remapReference","reconstructPCAGeometryCacheReference","basis","primitive","info","getVertexBufferInfo","getBufferSubData","extractPositionArray","componentSize","type","getSize","Math","max","cols","drawOffset","vertexCount","floor","stride","base","reference","coefficients","componentCount","min","component","coefficient","count","targetPositions","sourceCount","targetCount","buckets","Map","key","geometryCachePositionKey","bucket","get","set","Uint32Array","x","y","z","sourceIndex","findGeometryCacheSourceIndex","findNearestGeometryCacheSourceIndex","source","expanded","sourceOffset","targetOffset","epsilon","abs","epsilonSquared","bestIndex","bestDistance","Number","POSITIVE_INFINITY","dx","dy","dz","distance","round"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zabc_loader.js","sources":["../../../../src/asset/loaders/zabc/zabc_loader.ts"],"sourcesContent":["import { base64ToUint8Array, Vector3 } from '@zephyr3d/base';\r\nimport { FixedGeometryCacheTrack } from '../../../animation/fixed_geometry_cache_track';\r\nimport {\r\n PCAGeometryCacheTrack,\r\n type PCAGeometryCacheTrackData\r\n} from '../../../animation/pca_geometry_cache_track';\r\nimport type { VertexBufferInfo } from '@zephyr3d/device';\r\nimport { BoundingBox } from '../../../utility/bounding_volume';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport type { Mesh } from '../../../scene/mesh';\r\nimport type { AssetSubMeshData } from '../../model';\r\n\r\ntype ZABCBinaryBufferRef = {\r\n offset: number;\r\n length: number;\r\n count?: number;\r\n};\r\n\r\ntype ZABCCacheTrackJSON = {\r\n codec?: 'fixed' | 'pca';\r\n node?: number;\r\n nodePath?: string;\r\n nodeName?: string;\r\n subMeshIndex?: number;\r\n times?: string | ZABCBinaryBufferRef;\r\n sampleRate?: number;\r\n positionFrames: Array<string | ZABCBinaryBufferRef>;\r\n normalFrames?: Array<string | ZABCBinaryBufferRef>;\r\n bounds: [number, number, number, number, number, number][];\r\n vectorLength?: number;\r\n positionReference?: string | ZABCBinaryBufferRef;\r\n positionComponents?: number;\r\n positionMean?: string | ZABCBinaryBufferRef;\r\n positionBases?: string | ZABCBinaryBufferRef;\r\n positionCoefficients?: string | ZABCBinaryBufferRef;\r\n normalComponents?: number;\r\n normalMean?: string | ZABCBinaryBufferRef;\r\n normalBases?: string | ZABCBinaryBufferRef;\r\n normalCoefficients?: string | ZABCBinaryBufferRef;\r\n};\r\n\r\ntype ZABCAnimationJSON = {\r\n name: string;\r\n tracks: ZABCCacheTrackJSON[];\r\n};\r\n\r\ntype ZABCFileJSON = {\r\n version: number;\r\n baseModel?: string;\r\n animations: ZABCAnimationJSON[];\r\n};\r\n\r\nexport type ParsedZABC = {\r\n content: ZABCFileJSON;\r\n binaryPayload: ArrayBuffer | null;\r\n payloadOffset: number;\r\n};\r\n\r\nexport async function parseZABCBlob(data: Blob): Promise<ParsedZABC> {\r\n const arrayBuffer = await data.arrayBuffer();\r\n if (isBinaryZABC(arrayBuffer)) {\r\n return parseBinaryZABC(arrayBuffer);\r\n }\r\n return parseLegacyZABC(arrayBuffer);\r\n}\r\n\r\nexport async function attachZABCAnimationsToSceneNode(\r\n node: SceneNode,\r\n parsed: ParsedZABC,\r\n options?: {\r\n sourcePath?: string;\r\n autoPlay?: boolean;\r\n replaceAnimationNames?: string[];\r\n }\r\n) {\r\n if (options?.replaceAnimationNames) {\r\n for (const name of options.replaceAnimationNames) {\r\n node.animationSet.deleteAnimation(name);\r\n }\r\n }\r\n const addedAnimationNames: string[] = [];\r\n for (const animation of parsed.content.animations ?? []) {\r\n const animationName = buildAnimationName(options?.sourcePath, animation.name ?? 'GeometryCache');\r\n node.animationSet.deleteAnimation(animationName);\r\n const clip = node.animationSet.createAnimation(animationName, true);\r\n if (!clip) {\r\n continue;\r\n }\r\n clip.autoPlay = !!options?.autoPlay;\r\n for (const track of animation.tracks ?? []) {\r\n const targetNode = findTargetNode(node, track);\r\n if (!targetNode) {\r\n console.error(\r\n `zabc track target not found: node=${track.node}, nodePath=${track.nodePath}, nodeName=${track.nodeName}`\r\n );\r\n continue;\r\n }\r\n const targetMesh = await getTargetMesh(targetNode, track, parsed);\r\n if (!targetMesh) {\r\n const subMeshLabel =\r\n typeof track.subMeshIndex === 'number' && track.subMeshIndex >= 0\r\n ? `${track.subMeshIndex}`\r\n : 'auto';\r\n console.error(`zabc target mesh not found: node=${targetNode.name}, subMeshIndex=${subMeshLabel}`);\r\n continue;\r\n }\r\n const assetSubMesh = getTargetAssetSubMesh(node, track);\r\n if (track.codec === 'pca') {\r\n const remapped = assetSubMesh\r\n ? remapPCAGeometryCacheData(assetSubMesh, toPCATrackData(track, parsed))\r\n : await remapPCAGeometryCacheDataForMesh(targetMesh, toPCATrackData(track, parsed));\r\n clip.addTrack(targetMesh, new PCAGeometryCacheTrack(remapped, true));\r\n } else {\r\n const frames = assetSubMesh\r\n ? remapGeometryCacheFrames(\r\n assetSubMesh,\r\n track.positionFrames.map((positionsRef, index) => ({\r\n positions: decodeFloat32Array(positionsRef, parsed),\r\n normals: track.normalFrames?.[index]\r\n ? decodeFloat32Array(track.normalFrames[index], parsed)\r\n : null,\r\n boundingBox: decodeBoundingBox(track.bounds[index])\r\n }))\r\n )\r\n : await remapGeometryCacheFramesForMesh(\r\n targetMesh,\r\n track.positionFrames.map((positionsRef, index) => ({\r\n positions: decodeFloat32Array(positionsRef, parsed),\r\n normals: track.normalFrames?.[index]\r\n ? decodeFloat32Array(track.normalFrames[index], parsed)\r\n : null,\r\n boundingBox: decodeBoundingBox(track.bounds[index])\r\n }))\r\n );\r\n clip.addTrack(targetMesh, new FixedGeometryCacheTrack(decodeTimes(track, parsed), frames, true));\r\n }\r\n }\r\n if (clip.tracks.size > 0) {\r\n addedAnimationNames.push(animationName);\r\n } else {\r\n node.animationSet.deleteAnimation(animationName);\r\n }\r\n }\r\n if (options?.autoPlay) {\r\n for (const animationName of addedAnimationNames) {\r\n node.animationSet.playAnimation(animationName, { repeat: 0 });\r\n }\r\n }\r\n return {\r\n animationNames: addedAnimationNames\r\n };\r\n}\r\n\r\nfunction buildAnimationName(sourcePath: string | undefined, animationName: string) {\r\n const fileName = sourcePath\r\n ? (sourcePath.replace(/\\\\/g, '/').split('/').filter(Boolean).pop() ?? 'cache')\r\n : 'cache';\r\n return `Cache:${fileName}:${animationName}`;\r\n}\r\n\r\nasync function getTargetMesh(node: SceneNode, track: ZABCCacheTrackJSON, parsed: ParsedZABC) {\r\n const directMeshes = collectMeshChildren(node, false);\r\n const candidateMeshes = directMeshes.length > 0 ? directMeshes : collectMeshChildren(node, true);\r\n if (candidateMeshes.length === 0) {\r\n return null;\r\n }\r\n if (typeof track.subMeshIndex === 'number' && track.subMeshIndex >= 0) {\r\n return candidateMeshes[track.subMeshIndex] ?? null;\r\n }\r\n if (candidateMeshes.length === 1) {\r\n return candidateMeshes[0];\r\n }\r\n const sourceVertexCount = getTrackSourceVertexCount(track, parsed);\r\n if (sourceVertexCount > 0) {\r\n const matched: Mesh[] = [];\r\n for (const mesh of candidateMeshes) {\r\n const rawPositions = await getMeshRawPositions(mesh);\r\n const targetVertexCount = rawPositions ? (rawPositions.length / 3) >> 0 : -1;\r\n if (targetVertexCount === sourceVertexCount) {\r\n matched.push(mesh);\r\n }\r\n }\r\n if (matched.length === 1) {\r\n return matched[0];\r\n }\r\n if (matched.length > 1) {\r\n console.warn(\r\n `zabc subMesh auto-match is ambiguous under node=${node.name}, matched=${matched.length}, fallback=first`\r\n );\r\n }\r\n }\r\n return candidateMeshes[0];\r\n}\r\n\r\nfunction collectMeshChildren(root: SceneNode, recursive: boolean) {\r\n const meshes: Mesh[] = [];\r\n if (recursive) {\r\n root.iterate((child) => {\r\n if (child !== root && child.isMesh()) {\r\n meshes.push(child);\r\n }\r\n return false;\r\n });\r\n return meshes;\r\n }\r\n for (const child of root.children) {\r\n const sceneNode = child;\r\n if (sceneNode?.isMesh()) {\r\n meshes.push(sceneNode);\r\n }\r\n }\r\n return meshes;\r\n}\r\n\r\nfunction getTrackSourceVertexCount(track: ZABCCacheTrackJSON, parsed: ParsedZABC) {\r\n try {\r\n const first = track.positionFrames?.[0];\r\n if (!first) {\r\n return -1;\r\n }\r\n return (decodeFloat32Array(first, parsed).length / 3) >> 0;\r\n } catch {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getTargetAssetSubMesh(node: SceneNode, track: ZABCCacheTrackJSON) {\r\n const sharedModel = node.sharedModel;\r\n if (!sharedModel) {\r\n return null;\r\n }\r\n if (typeof track.subMeshIndex !== 'number' || track.subMeshIndex < 0) {\r\n return null;\r\n }\r\n const assetNode = findTargetAssetNode(node, track);\r\n return assetNode?.mesh?.subMeshes?.[track.subMeshIndex] ?? null;\r\n}\r\n\r\nfunction findTargetAssetNode(root: SceneNode, track: ZABCCacheTrackJSON) {\r\n const sharedModel = root.sharedModel;\r\n if (!sharedModel) {\r\n return null;\r\n }\r\n if (track.nodePath) {\r\n for (const candidatePath of getNodePathCandidates(track.nodePath)) {\r\n for (const scene of sharedModel.scenes) {\r\n for (const rootNode of scene.rootNodes) {\r\n const found = findAssetNodeByPath(rootNode, candidatePath);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (track.nodeName) {\r\n for (const candidateName of getNodeNameCandidates(track.nodeName)) {\r\n const found = sharedModel.nodes.find((item) => item?.name === candidateName);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction findAssetNodeByPath(\r\n node: { name: string; children: any[] },\r\n normalizedTrackPath: string,\r\n currentPath = ''\r\n): any {\r\n if (!node) {\r\n return null;\r\n }\r\n const path = currentPath ? `${currentPath}/${node.name || ''}` : node.name || '';\r\n const normalizedCurrent = normalizeNodePath(path);\r\n if (normalizedCurrent === normalizedTrackPath) {\r\n return node;\r\n }\r\n for (const child of node.children) {\r\n const found = findAssetNodeByPath(child, normalizedTrackPath, path);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction findTargetNode(root: SceneNode, track: ZABCCacheTrackJSON) {\r\n const hasExplicitTarget = !!track.nodePath || !!track.nodeName;\r\n if (track.nodePath) {\r\n for (const candidatePath of getNodePathCandidates(track.nodePath)) {\r\n for (const child of root.children) {\r\n const found = findSceneNodeByPath(child, candidatePath);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n }\r\n if (track.nodeName) {\r\n for (const candidateName of getNodeNameCandidates(track.nodeName)) {\r\n const found = root.findNodeByName(candidateName);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n if (hasExplicitTarget) {\r\n console.warn(\r\n `zabc track target fallback to attached node: nodePath=${track.nodePath ?? ''}, nodeName=${track.nodeName ?? ''}`\r\n );\r\n }\r\n return root;\r\n}\r\n\r\nfunction findSceneNodeByPath(\r\n node: SceneNode,\r\n normalizedTrackPath: string,\r\n currentPath = ''\r\n): SceneNode | null {\r\n if (!node || node.isMesh()) {\r\n return null;\r\n }\r\n const path = currentPath ? `${currentPath}/${node.name || ''}` : node.name || '';\r\n const normalizedCurrent = normalizeNodePath(path);\r\n if (normalizedCurrent === normalizedTrackPath) {\r\n return node;\r\n }\r\n for (const child of node.children) {\r\n const found = findSceneNodeByPath(child, normalizedTrackPath, path);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction getNodePathCandidates(path: string) {\r\n const normalized = normalizeNodePath(path);\r\n const candidates = [normalized];\r\n if (normalized.endsWith('Shape')) {\r\n candidates.push(normalized.slice(0, -'Shape'.length));\r\n }\r\n const parts = normalized.split('/');\r\n const last = parts.length > 0 ? parts[parts.length - 1] : '';\r\n if (last.endsWith('Shape') && parts.length > 1) {\r\n parts[parts.length - 1] = last.slice(0, -'Shape'.length);\r\n candidates.push(parts.join('/'));\r\n parts.pop();\r\n candidates.push(parts.join('/'));\r\n }\r\n return candidates.filter((value, index, array) => !!value && array.indexOf(value) === index);\r\n}\r\n\r\nfunction getNodeNameCandidates(name: string) {\r\n const candidates = [name];\r\n if (name.endsWith('Shape')) {\r\n candidates.push(name.slice(0, -'Shape'.length));\r\n }\r\n return candidates.filter((value, index, array) => !!value && array.indexOf(value) === index);\r\n}\r\n\r\nfunction normalizeNodePath(path: string) {\r\n return path.replace(/\\\\/g, '/').split('/').filter(Boolean).join('/');\r\n}\r\n\r\nfunction decodeFloat32Array(data: string | ZABCBinaryBufferRef, parsed: ParsedZABC) {\r\n if (typeof data === 'string') {\r\n const bytes = base64ToUint8Array(data);\r\n return new Float32Array(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength));\r\n }\r\n if (!parsed.binaryPayload) {\r\n throw new Error('Invalid binary zabc file: missing payload');\r\n }\r\n const start = parsed.payloadOffset + data.offset;\r\n const end = start + data.length;\r\n return new Float32Array(parsed.binaryPayload.slice(start, end));\r\n}\r\n\r\nfunction decodeTimes(track: ZABCCacheTrackJSON, parsed: ParsedZABC) {\r\n if (track.times) {\r\n return decodeFloat32Array(track.times, parsed);\r\n }\r\n const sampleRate = track.sampleRate && track.sampleRate > 0 ? track.sampleRate : 30;\r\n const times = new Float32Array(track.positionFrames.length);\r\n for (let i = 0; i < times.length; i++) {\r\n times[i] = i / sampleRate;\r\n }\r\n return times;\r\n}\r\n\r\nfunction decodeBoundingBox(values: [number, number, number, number, number, number]) {\r\n return new BoundingBox(\r\n new Vector3(values[0], values[1], values[2]),\r\n new Vector3(values[3], values[4], values[5])\r\n );\r\n}\r\n\r\nfunction decodePCAFrames(\r\n data: string | ZABCBinaryBufferRef,\r\n rows: number,\r\n columns: number,\r\n parsed: ParsedZABC\r\n) {\r\n const values = decodeFloat32Array(data, parsed);\r\n const result: Float32Array[] = [];\r\n if (rows <= 0 || columns <= 0) {\r\n return result;\r\n }\r\n for (let i = 0; i < rows; i++) {\r\n result.push(values.slice(i * columns, i * columns + columns));\r\n }\r\n return result;\r\n}\r\n\r\nfunction toPCATrackData(track: ZABCCacheTrackJSON, parsed: ParsedZABC): PCAGeometryCacheTrackData {\r\n return {\r\n times: decodeTimes(track, parsed),\r\n bounds: track.bounds ?? [],\r\n positionReference: track.positionReference ? decodeFloat32Array(track.positionReference, parsed) : null,\r\n positionMean: decodeFloat32Array(track.positionMean!, parsed),\r\n positionBases: decodePCAFrames(\r\n track.positionBases!,\r\n track.positionComponents ?? 0,\r\n track.vectorLength ?? 0,\r\n parsed\r\n ),\r\n positionCoefficients: decodePCAFrames(\r\n track.positionCoefficients!,\r\n track.bounds?.length ?? 0,\r\n track.positionComponents ?? 0,\r\n parsed\r\n ),\r\n normalMean: track.normalMean ? decodeFloat32Array(track.normalMean, parsed) : null,\r\n normalBases:\r\n track.normalBases && track.normalComponents\r\n ? decodePCAFrames(track.normalBases, track.normalComponents, track.vectorLength ?? 0, parsed)\r\n : null,\r\n normalCoefficients:\r\n track.normalCoefficients && track.normalComponents\r\n ? decodePCAFrames(track.normalCoefficients, track.bounds?.length ?? 0, track.normalComponents, parsed)\r\n : null\r\n };\r\n}\r\n\r\nfunction parseLegacyZABC(arrayBuffer: ArrayBuffer): ParsedZABC {\r\n const text = new TextDecoder().decode(arrayBuffer);\r\n return {\r\n content: JSON.parse(text) as ZABCFileJSON,\r\n binaryPayload: null,\r\n payloadOffset: 0\r\n };\r\n}\r\n\r\nfunction parseBinaryZABC(arrayBuffer: ArrayBuffer): ParsedZABC {\r\n const view = new DataView(arrayBuffer);\r\n const version = view.getUint32(4, true);\r\n if (version !== 2 && version !== 3) {\r\n throw new Error(`Unsupported binary zabc version: ${version}`);\r\n }\r\n const manifestLength = view.getUint32(8, true);\r\n const manifestOffset = 12;\r\n const payloadOffset = manifestOffset + manifestLength;\r\n const manifestText = new TextDecoder().decode(arrayBuffer.slice(manifestOffset, payloadOffset));\r\n return {\r\n content: JSON.parse(manifestText) as ZABCFileJSON,\r\n binaryPayload: arrayBuffer,\r\n payloadOffset\r\n };\r\n}\r\n\r\nfunction isBinaryZABC(arrayBuffer: ArrayBuffer) {\r\n if (arrayBuffer.byteLength < 12) {\r\n return false;\r\n }\r\n const magic = new Uint8Array(arrayBuffer, 0, 4);\r\n return magic[0] === 0x5a && magic[1] === 0x41 && magic[2] === 0x42 && magic[3] === 0x43;\r\n}\r\n\r\nfunction remapGeometryCacheFrames(\r\n subMesh: AssetSubMeshData,\r\n frames: { positions: Float32Array; normals: Float32Array | null; boundingBox: BoundingBox }[]\r\n) {\r\n if (!subMesh.rawPositions || frames.length === 0) {\r\n return frames;\r\n }\r\n const sourcePositions = frames[0].positions;\r\n const sourceVertexCount = (sourcePositions.length / 3) >> 0;\r\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return frames;\r\n }\r\n const remap = buildGeometryCacheRemap(subMesh.rawPositions, sourcePositions);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return frames;\r\n }\r\n return frames.map((frame) => ({\r\n positions: expandGeometryCacheData(frame.positions, remap),\r\n normals:\r\n frame.normals && (frame.normals.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(frame.normals, remap)\r\n : null,\r\n boundingBox: frame.boundingBox\r\n }));\r\n}\r\n\r\nasync function remapGeometryCacheFramesForMesh(\r\n mesh: Mesh,\r\n frames: { positions: Float32Array; normals: Float32Array | null; boundingBox: BoundingBox }[]\r\n) {\r\n const rawPositions = await getMeshRawPositions(mesh);\r\n if (!rawPositions || frames.length === 0) {\r\n return frames;\r\n }\r\n const sourcePositions = frames[0].positions;\r\n const sourceVertexCount = (sourcePositions.length / 3) >> 0;\r\n const targetVertexCount = (rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return frames;\r\n }\r\n const remap = buildGeometryCacheRemap(rawPositions, sourcePositions);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return frames;\r\n }\r\n return frames.map((frame) => ({\r\n positions: expandGeometryCacheData(frame.positions, remap),\r\n normals:\r\n frame.normals && (frame.normals.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(frame.normals, remap)\r\n : null,\r\n boundingBox: frame.boundingBox\r\n }));\r\n}\r\n\r\nfunction remapPCAGeometryCacheData(\r\n subMesh: AssetSubMeshData,\r\n track: PCAGeometryCacheTrackData\r\n): PCAGeometryCacheTrackData {\r\n const remapReference = track.positionReference ?? reconstructPCAGeometryCacheReference(track);\r\n if (!subMesh.rawPositions || remapReference.length === 0) {\r\n return track;\r\n }\r\n const sourceVertexCount = (remapReference.length / 3) >> 0;\r\n const targetVertexCount = (subMesh.rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return track;\r\n }\r\n const remap = buildGeometryCacheRemap(subMesh.rawPositions, remapReference);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return track;\r\n }\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: expandGeometryCacheData(remapReference, remap),\r\n positionMean: expandGeometryCacheData(track.positionMean, remap),\r\n positionBases: track.positionBases.map((basis) => expandGeometryCacheData(basis, remap)),\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean:\r\n track.normalMean && (track.normalMean.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(track.normalMean, remap)\r\n : null,\r\n normalBases:\r\n track.normalBases?.map((basis) =>\r\n (basis.length / 3) >> 0 === sourceVertexCount ? expandGeometryCacheData(basis, remap) : basis\r\n ) ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n}\r\n\r\nasync function remapPCAGeometryCacheDataForMesh(\r\n mesh: Mesh,\r\n track: PCAGeometryCacheTrackData\r\n): Promise<PCAGeometryCacheTrackData> {\r\n const rawPositions = await getMeshRawPositions(mesh);\r\n const remapReference = track.positionReference ?? reconstructPCAGeometryCacheReference(track);\r\n if (!rawPositions || remapReference.length === 0) {\r\n return track;\r\n }\r\n const sourceVertexCount = (remapReference.length / 3) >> 0;\r\n const targetVertexCount = (rawPositions.length / 3) >> 0;\r\n if (sourceVertexCount === targetVertexCount) {\r\n return track;\r\n }\r\n const remap = buildGeometryCacheRemap(rawPositions, remapReference);\r\n if (!remap) {\r\n console.error(\r\n `Geometry cache vertex layout mismatch: source=${sourceVertexCount}, target=${targetVertexCount}. ` +\r\n `Export the base glb and zabc from the same final mesh layout.`\r\n );\r\n return track;\r\n }\r\n return {\r\n times: track.times,\r\n bounds: track.bounds,\r\n positionReference: expandGeometryCacheData(remapReference, remap),\r\n positionMean: expandGeometryCacheData(track.positionMean, remap),\r\n positionBases: track.positionBases.map((basis) => expandGeometryCacheData(basis, remap)),\r\n positionCoefficients: track.positionCoefficients,\r\n normalMean:\r\n track.normalMean && (track.normalMean.length / 3) >> 0 === sourceVertexCount\r\n ? expandGeometryCacheData(track.normalMean, remap)\r\n : null,\r\n normalBases:\r\n track.normalBases?.map((basis) =>\r\n (basis.length / 3) >> 0 === sourceVertexCount ? expandGeometryCacheData(basis, remap) : basis\r\n ) ?? null,\r\n normalCoefficients: track.normalCoefficients ?? null\r\n };\r\n}\r\n\r\nasync function getMeshRawPositions(mesh: Mesh) {\r\n const primitive = mesh.primitive;\r\n const info = primitive?.getVertexBufferInfo('position');\r\n if (!primitive || !info) {\r\n return null;\r\n }\r\n const bytes = await info.buffer.getBufferSubData();\r\n return extractPositionArray(bytes, info);\r\n}\r\n\r\nfunction extractPositionArray(bytes: Uint8Array<ArrayBuffer>, info: VertexBufferInfo) {\r\n const componentSize =\r\n ((info.type as unknown as { getSize(): number }).getSize?.() ?? 0) / Math.max(1, info.type.cols);\r\n if (componentSize !== 4) {\r\n return null;\r\n }\r\n const drawOffset = info.drawOffset ?? 0;\r\n const byteOffset = bytes.byteOffset + drawOffset;\r\n const byteLength = bytes.byteLength - drawOffset;\r\n const vertexCount = Math.max(0, Math.floor(byteLength / info.stride));\r\n const positions = new Float32Array(vertexCount * 3);\r\n for (let i = 0; i < vertexCount; i++) {\r\n const base = byteOffset + i * info.stride + info.offset;\r\n const values = new Float32Array(bytes.buffer, base, Math.max(3, info.type.cols));\r\n positions[i * 3] = values[0] ?? 0;\r\n positions[i * 3 + 1] = values[1] ?? 0;\r\n positions[i * 3 + 2] = values[2] ?? 0;\r\n }\r\n return positions;\r\n}\r\n\r\nfunction reconstructPCAGeometryCacheReference(track: PCAGeometryCacheTrackData) {\r\n const reference = new Float32Array(track.positionMean);\r\n const coefficients = track.positionCoefficients[0];\r\n if (!coefficients) {\r\n return reference;\r\n }\r\n const componentCount = Math.min(track.positionBases.length, coefficients.length);\r\n for (let component = 0; component < componentCount; component++) {\r\n const basis = track.positionBases[component];\r\n const coefficient = coefficients[component];\r\n if (!basis || coefficient === 0) {\r\n continue;\r\n }\r\n const count = Math.min(reference.length, basis.length);\r\n for (let i = 0; i < count; i++) {\r\n reference[i] += basis[i] * coefficient;\r\n }\r\n }\r\n return reference;\r\n}\r\n\r\nfunction buildGeometryCacheRemap(targetPositions: Float32Array, sourcePositions: Float32Array) {\r\n const sourceCount = (sourcePositions.length / 3) >> 0;\r\n const targetCount = (targetPositions.length / 3) >> 0;\r\n const buckets = new Map<string, number[]>();\r\n for (let i = 0; i < sourceCount; i++) {\r\n const key = geometryCachePositionKey(\r\n sourcePositions[i * 3],\r\n sourcePositions[i * 3 + 1],\r\n sourcePositions[i * 3 + 2]\r\n );\r\n const bucket = buckets.get(key);\r\n if (bucket) {\r\n bucket.push(i);\r\n } else {\r\n buckets.set(key, [i]);\r\n }\r\n }\r\n const remap = new Uint32Array(targetCount);\r\n for (let i = 0; i < targetCount; i++) {\r\n const x = targetPositions[i * 3];\r\n const y = targetPositions[i * 3 + 1];\r\n const z = targetPositions[i * 3 + 2];\r\n let sourceIndex = findGeometryCacheSourceIndex(sourcePositions, buckets, x, y, z);\r\n if (sourceIndex < 0) {\r\n sourceIndex = findNearestGeometryCacheSourceIndex(sourcePositions, x, y, z);\r\n }\r\n if (sourceIndex < 0) {\r\n return null;\r\n }\r\n remap[i] = sourceIndex;\r\n }\r\n return remap;\r\n}\r\n\r\nfunction expandGeometryCacheData(source: Float32Array, remap: Uint32Array) {\r\n const expanded = new Float32Array(remap.length * 3);\r\n for (let i = 0; i < remap.length; i++) {\r\n const sourceOffset = remap[i] * 3;\r\n const targetOffset = i * 3;\r\n expanded[targetOffset] = source[sourceOffset];\r\n expanded[targetOffset + 1] = source[sourceOffset + 1];\r\n expanded[targetOffset + 2] = source[sourceOffset + 2];\r\n }\r\n return expanded;\r\n}\r\n\r\nfunction findGeometryCacheSourceIndex(\r\n sourcePositions: Float32Array,\r\n buckets: Map<string, number[]>,\r\n x: number,\r\n y: number,\r\n z: number\r\n) {\r\n const bucket = buckets.get(geometryCachePositionKey(x, y, z));\r\n if (!bucket) {\r\n return -1;\r\n }\r\n const epsilon = 1e-5;\r\n for (const index of bucket) {\r\n const offset = index * 3;\r\n if (\r\n Math.abs(sourcePositions[offset] - x) <= epsilon &&\r\n Math.abs(sourcePositions[offset + 1] - y) <= epsilon &&\r\n Math.abs(sourcePositions[offset + 2] - z) <= epsilon\r\n ) {\r\n return index;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\nfunction findNearestGeometryCacheSourceIndex(sourcePositions: Float32Array, x: number, y: number, z: number) {\r\n const epsilonSquared = 1e-8;\r\n let bestIndex = -1;\r\n let bestDistance = Number.POSITIVE_INFINITY;\r\n for (let i = 0; i < sourcePositions.length; i += 3) {\r\n const dx = sourcePositions[i] - x;\r\n const dy = sourcePositions[i + 1] - y;\r\n const dz = sourcePositions[i + 2] - z;\r\n const distance = dx * dx + dy * dy + dz * dz;\r\n if (distance < bestDistance) {\r\n bestDistance = distance;\r\n bestIndex = i / 3;\r\n }\r\n }\r\n return bestDistance <= epsilonSquared ? bestIndex : -1;\r\n}\r\n\r\nfunction geometryCachePositionKey(x: number, y: number, z: number) {\r\n return `${Math.round(x * 100000)}|${Math.round(y * 100000)}|${Math.round(z * 100000)}`;\r\n}\r\n"],"names":["parseZABCBlob","data","arrayBuffer","isBinaryZABC","parseBinaryZABC","parseLegacyZABC","attachZABCAnimationsToSceneNode","node","parsed","options","replaceAnimationNames","name","animationSet","deleteAnimation","addedAnimationNames","animation","content","animations","animationName","buildAnimationName","sourcePath","clip","createAnimation","autoPlay","track","tracks","targetNode","findTargetNode","console","error","nodePath","nodeName","targetMesh","getTargetMesh","subMeshLabel","subMeshIndex","assetSubMesh","getTargetAssetSubMesh","codec","remapped","remapPCAGeometryCacheData","toPCATrackData","remapPCAGeometryCacheDataForMesh","addTrack","PCAGeometryCacheTrack","frames","remapGeometryCacheFrames","positionFrames","map","positionsRef","index","positions","decodeFloat32Array","normals","normalFrames","boundingBox","decodeBoundingBox","bounds","remapGeometryCacheFramesForMesh","FixedGeometryCacheTrack","decodeTimes","size","push","playAnimation","repeat","animationNames","fileName","replace","split","filter","Boolean","pop","directMeshes","collectMeshChildren","candidateMeshes","length","sourceVertexCount","getTrackSourceVertexCount","matched","mesh","rawPositions","getMeshRawPositions","targetVertexCount","warn","root","recursive","meshes","iterate","child","isMesh","children","sceneNode","first","sharedModel","assetNode","findTargetAssetNode","subMeshes","candidatePath","getNodePathCandidates","scene","scenes","rootNode","rootNodes","found","findAssetNodeByPath","candidateName","getNodeNameCandidates","nodes","find","item","normalizedTrackPath","currentPath","path","normalizedCurrent","normalizeNodePath","hasExplicitTarget","findSceneNodeByPath","findNodeByName","normalized","candidates","endsWith","slice","parts","last","join","value","array","indexOf","bytes","base64ToUint8Array","Float32Array","buffer","byteOffset","byteLength","binaryPayload","Error","start","payloadOffset","offset","end","times","sampleRate","i","values","BoundingBox","Vector3","decodePCAFrames","rows","columns","result","positionReference","positionMean","positionBases","positionComponents","vectorLength","positionCoefficients","normalMean","normalBases","normalComponents","normalCoefficients","text","TextDecoder","decode","JSON","parse","view","DataView","version","getUint32","manifestLength","manifestOffset","manifestText","magic","Uint8Array","subMesh","sourcePositions","remap","buildGeometryCacheRemap","frame","expandGeometryCacheData","remapReference","reconstructPCAGeometryCacheReference","basis","primitive","info","getVertexBufferInfo","getBufferSubData","extractPositionArray","componentSize","type","getSize","Math","max","cols","drawOffset","vertexCount","floor","stride","base","reference","coefficients","componentCount","min","component","coefficient","count","targetPositions","sourceCount","targetCount","buckets","Map","key","geometryCachePositionKey","bucket","get","set","Uint32Array","x","y","z","sourceIndex","findGeometryCacheSourceIndex","findNearestGeometryCacheSourceIndex","source","expanded","sourceOffset","targetOffset","epsilon","abs","epsilonSquared","bestIndex","bestDistance","Number","POSITIVE_INFINITY","dx","dy","dz","distance","round"],"mappings":"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"}
|