@babylonjs/viewer 7.30.0 → 7.30.1-alpha
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/assets/photoStudio.env +0 -0
- package/dist/babylon-viewer.esm.js +2 -0
- package/dist/babylon-viewer.esm.js.map +1 -0
- package/dist/babylon-viewer.esm.min.js +2 -0
- package/dist/babylon-viewer.esm.min.js.map +1 -0
- package/dist/chunks/EXT_lights_image_based-B8QkHePo.esm.js +172 -0
- package/dist/chunks/EXT_lights_image_based-B8QkHePo.esm.js.map +1 -0
- package/dist/chunks/EXT_lights_image_based-BSiU8YlV.esm.min.js +2 -0
- package/dist/chunks/EXT_lights_image_based-BSiU8YlV.esm.min.js.map +1 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-hZ-8qY7C.esm.min.js +2 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-hZ-8qY7C.esm.min.js.map +1 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-wJVTdqxC.esm.js +86 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-wJVTdqxC.esm.js.map +1 -0
- package/dist/chunks/EXT_meshopt_compression-B2B6s_wQ.esm.min.js +2 -0
- package/dist/chunks/EXT_meshopt_compression-B2B6s_wQ.esm.min.js.map +1 -0
- package/dist/chunks/EXT_meshopt_compression-NtmqtMgU.esm.js +134 -0
- package/dist/chunks/EXT_meshopt_compression-NtmqtMgU.esm.js.map +1 -0
- package/dist/chunks/EXT_texture_avif-CHILVmx8.esm.js +44 -0
- package/dist/chunks/EXT_texture_avif-CHILVmx8.esm.js.map +1 -0
- package/dist/chunks/EXT_texture_avif-CS00cTRS.esm.min.js +2 -0
- package/dist/chunks/EXT_texture_avif-CS00cTRS.esm.min.js.map +1 -0
- package/dist/chunks/EXT_texture_webp-Bkq-q6FG.esm.min.js +2 -0
- package/dist/chunks/EXT_texture_webp-Bkq-q6FG.esm.min.js.map +1 -0
- package/dist/chunks/EXT_texture_webp-DN0lE3ZI.esm.js +43 -0
- package/dist/chunks/EXT_texture_webp-DN0lE3ZI.esm.js.map +1 -0
- package/dist/chunks/ExtrasAsMetadata-BBYH2MWy.esm.js +64 -0
- package/dist/chunks/ExtrasAsMetadata-BBYH2MWy.esm.js.map +1 -0
- package/dist/chunks/ExtrasAsMetadata-DIPrXR0e.esm.min.js +2 -0
- package/dist/chunks/ExtrasAsMetadata-DIPrXR0e.esm.min.js.map +1 -0
- package/dist/chunks/KHR_animation_pointer-Bi9FNmzm.esm.js +343 -0
- package/dist/chunks/KHR_animation_pointer-Bi9FNmzm.esm.js.map +1 -0
- package/dist/chunks/KHR_animation_pointer-cRE1VpCW.esm.min.js +2 -0
- package/dist/chunks/KHR_animation_pointer-cRE1VpCW.esm.min.js.map +1 -0
- package/dist/chunks/KHR_draco_mesh_compression-B7X-Y-9y.esm.js +610 -0
- package/dist/chunks/KHR_draco_mesh_compression-B7X-Y-9y.esm.js.map +1 -0
- package/dist/chunks/KHR_draco_mesh_compression-C3N7uxkp.esm.min.js +2 -0
- package/dist/chunks/KHR_draco_mesh_compression-C3N7uxkp.esm.min.js.map +1 -0
- package/dist/chunks/KHR_interactivity-C0idLGI_.esm.min.js +2 -0
- package/dist/chunks/KHR_interactivity-C0idLGI_.esm.min.js.map +1 -0
- package/dist/chunks/KHR_interactivity-DP9ukTBy.esm.js +4033 -0
- package/dist/chunks/KHR_interactivity-DP9ukTBy.esm.js.map +1 -0
- package/dist/chunks/KHR_lights_punctual-Brv0Wuoh.esm.js +1253 -0
- package/dist/chunks/KHR_lights_punctual-Brv0Wuoh.esm.js.map +1 -0
- package/dist/chunks/KHR_lights_punctual-D5rY7e9I.esm.min.js +2 -0
- package/dist/chunks/KHR_lights_punctual-D5rY7e9I.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_anisotropy-CNTB-Obv.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_anisotropy-CNTB-Obv.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_anisotropy-uViUcrBX.esm.js +64 -0
- package/dist/chunks/KHR_materials_anisotropy-uViUcrBX.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_clearcoat-C3xAVuBX.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_clearcoat-C3xAVuBX.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_clearcoat-CGnx-Def.esm.js +96 -0
- package/dist/chunks/KHR_materials_clearcoat-CGnx-Def.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-C6jtnXQp.esm.js +97 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-C6jtnXQp.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-Chq7fNC6.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-Chq7fNC6.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_dispersion-CdwDEjkD.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_dispersion-CdwDEjkD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_dispersion-i3C5_tOQ.esm.js +62 -0
- package/dist/chunks/KHR_materials_dispersion-i3C5_tOQ.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_emissive_strength-Ci0aHrSf.esm.js +55 -0
- package/dist/chunks/KHR_materials_emissive_strength-Ci0aHrSf.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_emissive_strength-oOS672hJ.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_emissive_strength-oOS672hJ.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_ior-BczbilaN.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_ior-BczbilaN.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_ior-DAgTpEPO.esm.js +64 -0
- package/dist/chunks/KHR_materials_ior-DAgTpEPO.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_iridescence-BvH-DyMM.esm.js +72 -0
- package/dist/chunks/KHR_materials_iridescence-BvH-DyMM.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_iridescence-Cs329Tec.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_iridescence-Cs329Tec.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BAoCWbDD.esm.js +81 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BAoCWbDD.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-RptdeCpW.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-RptdeCpW.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_sheen-C48YqGyP.esm.js +85 -0
- package/dist/chunks/KHR_materials_sheen-C48YqGyP.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_sheen-CENbfA8s.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_sheen-CENbfA8s.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_specular-BVunKKIv.esm.js +75 -0
- package/dist/chunks/KHR_materials_specular-BVunKKIv.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_specular-DzkwSxAP.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_specular-DzkwSxAP.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_transmission-BTHUpaVT.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_transmission-BTHUpaVT.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_transmission-BgZKGZqg.esm.js +307 -0
- package/dist/chunks/KHR_materials_transmission-BgZKGZqg.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_unlit-CU2DPO94.esm.js +74 -0
- package/dist/chunks/KHR_materials_unlit-CU2DPO94.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_unlit-qeFFDJsN.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_unlit-qeFFDJsN.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_variants-BYcHAfKt.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_variants-BYcHAfKt.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_variants-DfibokCz.esm.js +238 -0
- package/dist/chunks/KHR_materials_variants-DfibokCz.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_volume-BLgQKdLc.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_volume-BLgQKdLc.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_volume-CeusrX5Q.esm.js +87 -0
- package/dist/chunks/KHR_materials_volume-CeusrX5Q.esm.js.map +1 -0
- package/dist/chunks/KHR_mesh_quantization-B1lFBE4i.esm.min.js +2 -0
- package/dist/chunks/KHR_mesh_quantization-B1lFBE4i.esm.min.js.map +1 -0
- package/dist/chunks/KHR_mesh_quantization-CTlthm9b.esm.js +26 -0
- package/dist/chunks/KHR_mesh_quantization-CTlthm9b.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_basisu-DxfhU-WD.esm.min.js +2 -0
- package/dist/chunks/KHR_texture_basisu-DxfhU-WD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_texture_basisu-kee0jVUy.esm.js +43 -0
- package/dist/chunks/KHR_texture_basisu-kee0jVUy.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_transform-9DUjN2OI.esm.js +63 -0
- package/dist/chunks/KHR_texture_transform-9DUjN2OI.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_transform-DbQFyzy6.esm.min.js +2 -0
- package/dist/chunks/KHR_texture_transform-DbQFyzy6.esm.min.js.map +1 -0
- package/dist/chunks/KHR_xmp_json_ld-CXJGx-sA.esm.js +51 -0
- package/dist/chunks/KHR_xmp_json_ld-CXJGx-sA.esm.js.map +1 -0
- package/dist/chunks/KHR_xmp_json_ld-tRIKOwLG.esm.min.js +2 -0
- package/dist/chunks/KHR_xmp_json_ld-tRIKOwLG.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_audio_emitter-CI0Nml3O.esm.js +2207 -0
- package/dist/chunks/MSFT_audio_emitter-CI0Nml3O.esm.js.map +1 -0
- package/dist/chunks/MSFT_audio_emitter-DpCifHwR.esm.min.js +2 -0
- package/dist/chunks/MSFT_audio_emitter-DpCifHwR.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_lod-B9ex3lVq.esm.js +337 -0
- package/dist/chunks/MSFT_lod-B9ex3lVq.esm.js.map +1 -0
- package/dist/chunks/MSFT_lod-z8dJ8Drm.esm.min.js +2 -0
- package/dist/chunks/MSFT_lod-z8dJ8Drm.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_minecraftMesh-CtBZz4pl.esm.min.js +2 -0
- package/dist/chunks/MSFT_minecraftMesh-CtBZz4pl.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_minecraftMesh-nf1sPsge.esm.js +46 -0
- package/dist/chunks/MSFT_minecraftMesh-nf1sPsge.esm.js.map +1 -0
- package/dist/chunks/MSFT_sRGBFactors-CRYLn1p6.esm.min.js +2 -0
- package/dist/chunks/MSFT_sRGBFactors-CRYLn1p6.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_sRGBFactors-CeWD8LAk.esm.js +47 -0
- package/dist/chunks/MSFT_sRGBFactors-CeWD8LAk.esm.js.map +1 -0
- package/dist/chunks/animationGroup-B_9qZnYC.esm.min.js +2 -0
- package/dist/chunks/animationGroup-B_9qZnYC.esm.min.js.map +1 -0
- package/dist/chunks/animationGroup-Caf5e8cG.esm.js +2479 -0
- package/dist/chunks/animationGroup-Caf5e8cG.esm.js.map +1 -0
- package/dist/chunks/assetContainer-B2UWLifX.esm.min.js +2 -0
- package/dist/chunks/assetContainer-B2UWLifX.esm.min.js.map +1 -0
- package/dist/chunks/assetContainer-C3VbcE_z.esm.js +1720 -0
- package/dist/chunks/assetContainer-C3VbcE_z.esm.js.map +1 -0
- package/dist/chunks/audioEngine-BsSa5q28.esm.js +305 -0
- package/dist/chunks/audioEngine-BsSa5q28.esm.js.map +1 -0
- package/dist/chunks/audioEngine-Q9RaM40V.esm.min.js +2 -0
- package/dist/chunks/audioEngine-Q9RaM40V.esm.min.js.map +1 -0
- package/dist/chunks/bakedVertexAnimation-Dl6TUwlE.esm.min.js +2 -0
- package/dist/chunks/bakedVertexAnimation-Dl6TUwlE.esm.min.js.map +1 -0
- package/dist/chunks/bakedVertexAnimation-FeXNV03T.esm.js +119 -0
- package/dist/chunks/bakedVertexAnimation-FeXNV03T.esm.js.map +1 -0
- package/dist/chunks/basisTextureLoader-BDG3XE5Y.esm.min.js +2 -0
- package/dist/chunks/basisTextureLoader-BDG3XE5Y.esm.min.js.map +1 -0
- package/dist/chunks/basisTextureLoader-DfZMofRb.esm.js +600 -0
- package/dist/chunks/basisTextureLoader-DfZMofRb.esm.js.map +1 -0
- package/dist/chunks/dds-Igr2kHF_.esm.min.js +2 -0
- package/dist/chunks/dds-Igr2kHF_.esm.min.js.map +1 -0
- package/dist/chunks/dds-o4OMNRtH.esm.js +540 -0
- package/dist/chunks/dds-o4OMNRtH.esm.js.map +1 -0
- package/dist/chunks/ddsTextureLoader-CnyOXLtf.esm.min.js +2 -0
- package/dist/chunks/ddsTextureLoader-CnyOXLtf.esm.min.js.map +1 -0
- package/dist/chunks/ddsTextureLoader-VMzKzLn-.esm.js +88 -0
- package/dist/chunks/ddsTextureLoader-VMzKzLn-.esm.js.map +1 -0
- package/dist/chunks/decalFragment-Dd54mbG2.esm.min.js +2 -0
- package/dist/chunks/decalFragment-Dd54mbG2.esm.min.js.map +1 -0
- package/dist/chunks/decalFragment-DfryH-xh.esm.js +18 -0
- package/dist/chunks/decalFragment-DfryH-xh.esm.js.map +1 -0
- package/dist/chunks/default.fragment-CnYfGMJp.esm.js +449 -0
- package/dist/chunks/default.fragment-CnYfGMJp.esm.js.map +1 -0
- package/dist/chunks/default.fragment-CsdUsRw_.esm.min.js +2 -0
- package/dist/chunks/default.fragment-CsdUsRw_.esm.min.js.map +1 -0
- package/dist/chunks/default.fragment-D0ITB58w.esm.js +515 -0
- package/dist/chunks/default.fragment-D0ITB58w.esm.js.map +1 -0
- package/dist/chunks/default.fragment-D6IvjaEp.esm.min.js +2 -0
- package/dist/chunks/default.fragment-D6IvjaEp.esm.min.js.map +1 -0
- package/dist/chunks/default.vertex-Ch_6OmJk.esm.min.js +2 -0
- package/dist/chunks/default.vertex-Ch_6OmJk.esm.min.js.map +1 -0
- package/dist/chunks/default.vertex-DqT17MVn.esm.js +199 -0
- package/dist/chunks/default.vertex-DqT17MVn.esm.js.map +1 -0
- package/dist/chunks/default.vertex-ld9hqDyj.esm.js +180 -0
- package/dist/chunks/default.vertex-ld9hqDyj.esm.js.map +1 -0
- package/dist/chunks/default.vertex-wi8elnOd.esm.min.js +2 -0
- package/dist/chunks/default.vertex-wi8elnOd.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration--F3dwx1S.esm.js +15 -0
- package/dist/chunks/defaultUboDeclaration--F3dwx1S.esm.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-B1N9B5Gl.esm.min.js +2 -0
- package/dist/chunks/defaultUboDeclaration-B1N9B5Gl.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-CVb37fjo.esm.min.js +2 -0
- package/dist/chunks/defaultUboDeclaration-CVb37fjo.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-OtAuvsYL.esm.js +13 -0
- package/dist/chunks/defaultUboDeclaration-OtAuvsYL.esm.js.map +1 -0
- package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +11 -0
- package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +1 -0
- package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +2 -0
- package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +1 -0
- package/dist/chunks/dumpTools-Cd98CM01.esm.js +402 -0
- package/dist/chunks/dumpTools-Cd98CM01.esm.js.map +1 -0
- package/dist/chunks/dumpTools-kyQtrfmm.esm.min.js +2 -0
- package/dist/chunks/dumpTools-kyQtrfmm.esm.min.js.map +1 -0
- package/dist/chunks/engine-B3yxhwnS.esm.js +2174 -0
- package/dist/chunks/engine-B3yxhwnS.esm.js.map +1 -0
- package/dist/chunks/engine-CPXcFlBT.esm.min.js +2 -0
- package/dist/chunks/engine-CPXcFlBT.esm.min.js.map +1 -0
- package/dist/chunks/engine.common-B6M8bu3t.esm.js +1088 -0
- package/dist/chunks/engine.common-B6M8bu3t.esm.js.map +1 -0
- package/dist/chunks/engine.common-cpembRo8.esm.min.js +2 -0
- package/dist/chunks/engine.common-cpembRo8.esm.min.js.map +1 -0
- package/dist/chunks/envTextureLoader-BtwI9GPN.esm.js +65 -0
- package/dist/chunks/envTextureLoader-BtwI9GPN.esm.js.map +1 -0
- package/dist/chunks/envTextureLoader-D9erruFA.esm.min.js +2 -0
- package/dist/chunks/envTextureLoader-D9erruFA.esm.min.js.map +1 -0
- package/dist/chunks/environmentTextureTools-BCJKgGWI.esm.min.js +2 -0
- package/dist/chunks/environmentTextureTools-BCJKgGWI.esm.min.js.map +1 -0
- package/dist/chunks/environmentTextureTools-DIr7XYmL.esm.js +382 -0
- package/dist/chunks/environmentTextureTools-DIr7XYmL.esm.js.map +1 -0
- package/dist/chunks/exrTextureLoader-BIpKPFKS.esm.js +1682 -0
- package/dist/chunks/exrTextureLoader-BIpKPFKS.esm.js.map +1 -0
- package/dist/chunks/exrTextureLoader-D4DP8CEI.esm.min.js +2 -0
- package/dist/chunks/exrTextureLoader-D4DP8CEI.esm.min.js.map +1 -0
- package/dist/chunks/fogFragment-CT1rtmII.esm.js +102 -0
- package/dist/chunks/fogFragment-CT1rtmII.esm.js.map +1 -0
- package/dist/chunks/fogFragment-Caucp7gO.esm.min.js +2 -0
- package/dist/chunks/fogFragment-Caucp7gO.esm.min.js.map +1 -0
- package/dist/chunks/fresnelFunction-C-YnVKZy.esm.js +12 -0
- package/dist/chunks/fresnelFunction-C-YnVKZy.esm.js.map +1 -0
- package/dist/chunks/fresnelFunction-DXV-Gn3X.esm.min.js +2 -0
- package/dist/chunks/fresnelFunction-DXV-Gn3X.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoader-BUEhZ_Yx.esm.js +7577 -0
- package/dist/chunks/glTFLoader-BUEhZ_Yx.esm.js.map +1 -0
- package/dist/chunks/glTFLoader-Bikb9kQP.esm.min.js +2 -0
- package/dist/chunks/glTFLoader-Bikb9kQP.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoaderAnimation-DoayKrau.esm.min.js +2 -0
- package/dist/chunks/glTFLoaderAnimation-DoayKrau.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoaderAnimation-DrC2hKeR.esm.js +77 -0
- package/dist/chunks/glTFLoaderAnimation-DrC2hKeR.esm.js.map +1 -0
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-CvPMLLnj.esm.js +34 -0
- package/dist/chunks/harmonicsFunctions-CvPMLLnj.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-D36-AdS5.esm.js +35 -0
- package/dist/chunks/harmonicsFunctions-D36-AdS5.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-DZ2FogZq.esm.min.js +2 -0
- package/dist/chunks/harmonicsFunctions-DZ2FogZq.esm.min.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-Dqm6bWBy.esm.min.js +2 -0
- package/dist/chunks/harmonicsFunctions-Dqm6bWBy.esm.min.js.map +1 -0
- package/dist/chunks/hdrTextureLoader-CiuIhL8I.esm.js +252 -0
- package/dist/chunks/hdrTextureLoader-CiuIhL8I.esm.js.map +1 -0
- package/dist/chunks/hdrTextureLoader-QQ6TEFPn.esm.min.js +2 -0
- package/dist/chunks/hdrTextureLoader-QQ6TEFPn.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-BmpTMP9U.esm.min.js +2 -0
- package/dist/chunks/helperFunctions-BmpTMP9U.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-Cb7U87AV.esm.js +108 -0
- package/dist/chunks/helperFunctions-Cb7U87AV.esm.js.map +1 -0
- package/dist/chunks/helperFunctions-DbJ3JhM0.esm.js +80 -0
- package/dist/chunks/helperFunctions-DbJ3JhM0.esm.js.map +1 -0
- package/dist/chunks/helperFunctions-M382PZ6f.esm.min.js +2 -0
- package/dist/chunks/helperFunctions-M382PZ6f.esm.min.js.map +1 -0
- package/dist/chunks/index-CIyiNmMD.esm.min.js +57 -0
- package/dist/chunks/index-CIyiNmMD.esm.min.js.map +1 -0
- package/dist/chunks/index-DV_mRp0V.esm.js +72045 -0
- package/dist/chunks/index-DV_mRp0V.esm.js.map +1 -0
- package/dist/chunks/ktxTextureLoader-B1e7g2Se.esm.js +814 -0
- package/dist/chunks/ktxTextureLoader-B1e7g2Se.esm.js.map +1 -0
- package/dist/chunks/ktxTextureLoader-CfLNNmBj.esm.min.js +2 -0
- package/dist/chunks/ktxTextureLoader-CfLNNmBj.esm.min.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-AKRPAXbv.esm.js +20 -0
- package/dist/chunks/logDepthDeclaration-AKRPAXbv.esm.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-BFlc1Sz5.esm.js +35 -0
- package/dist/chunks/logDepthDeclaration-BFlc1Sz5.esm.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-BkU1fH0B.esm.min.js +2 -0
- package/dist/chunks/logDepthDeclaration-BkU1fH0B.esm.min.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-C6GKSjog.esm.min.js +2 -0
- package/dist/chunks/logDepthDeclaration-C6GKSjog.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-BOQAtuDj.esm.js +77 -0
- package/dist/chunks/logDepthVertex-BOQAtuDj.esm.js.map +1 -0
- package/dist/chunks/logDepthVertex-Co2KvxUo.esm.min.js +2 -0
- package/dist/chunks/logDepthVertex-Co2KvxUo.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-H_MJJ_GQ.esm.min.js +2 -0
- package/dist/chunks/logDepthVertex-H_MJJ_GQ.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-u512xo4x.esm.js +488 -0
- package/dist/chunks/logDepthVertex-u512xo4x.esm.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-BeDhg2oD.esm.js +11 -0
- package/dist/chunks/mainUVVaryingDeclaration-BeDhg2oD.esm.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-C3OpRYwk.esm.min.js +2 -0
- package/dist/chunks/mainUVVaryingDeclaration-C3OpRYwk.esm.min.js.map +1 -0
- package/dist/chunks/meshUboDeclaration-DS9O2grO.esm.min.js +2 -0
- package/dist/chunks/meshUboDeclaration-DS9O2grO.esm.min.js.map +1 -0
- package/dist/chunks/meshUboDeclaration-Dj2hscRy.esm.js +24 -0
- package/dist/chunks/meshUboDeclaration-Dj2hscRy.esm.js.map +1 -0
- package/dist/chunks/objFileLoader-BbMgApzR.esm.min.js +2 -0
- package/dist/chunks/objFileLoader-BbMgApzR.esm.min.js.map +1 -0
- package/dist/chunks/objFileLoader-BpsC8pGC.esm.js +1338 -0
- package/dist/chunks/objFileLoader-BpsC8pGC.esm.js.map +1 -0
- package/dist/chunks/oitFragment-BlZOVBNE.esm.js +1210 -0
- package/dist/chunks/oitFragment-BlZOVBNE.esm.js.map +1 -0
- package/dist/chunks/oitFragment-D5kQEOJH.esm.min.js +2 -0
- package/dist/chunks/oitFragment-D5kQEOJH.esm.min.js.map +1 -0
- package/dist/chunks/oitFragment-HW7VZaca.esm.min.js +2 -0
- package/dist/chunks/oitFragment-HW7VZaca.esm.min.js.map +1 -0
- package/dist/chunks/oitFragment-JXDEu0bi.esm.js +1150 -0
- package/dist/chunks/oitFragment-JXDEu0bi.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-BJQq2qAp.esm.js +15 -0
- package/dist/chunks/pass.fragment-BJQq2qAp.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-BxD_kCkX.esm.min.js +2 -0
- package/dist/chunks/pass.fragment-BxD_kCkX.esm.min.js.map +1 -0
- package/dist/chunks/pass.fragment-By7gsCOP.esm.js +15 -0
- package/dist/chunks/pass.fragment-By7gsCOP.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-CBeObuzk.esm.min.js +2 -0
- package/dist/chunks/pass.fragment-CBeObuzk.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-BYJy3TyL.esm.js +3165 -0
- package/dist/chunks/pbr.fragment-BYJy3TyL.esm.js.map +1 -0
- package/dist/chunks/pbr.fragment-Cjqfjhki.esm.min.js +2 -0
- package/dist/chunks/pbr.fragment-Cjqfjhki.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-fj1P_BfA.esm.min.js +2 -0
- package/dist/chunks/pbr.fragment-fj1P_BfA.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-wP-c85IY.esm.js +3219 -0
- package/dist/chunks/pbr.fragment-wP-c85IY.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-BviiatXf.esm.js +335 -0
- package/dist/chunks/pbr.vertex-BviiatXf.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-DEEQfrHH.esm.js +210 -0
- package/dist/chunks/pbr.vertex-DEEQfrHH.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-DK-wI3nj.esm.min.js +2 -0
- package/dist/chunks/pbr.vertex-DK-wI3nj.esm.min.js.map +1 -0
- package/dist/chunks/pbr.vertex-SS6Eh96F.esm.min.js +2 -0
- package/dist/chunks/pbr.vertex-SS6Eh96F.esm.min.js.map +1 -0
- package/dist/chunks/postprocess.vertex-BbTJmjCf.esm.min.js +2 -0
- package/dist/chunks/postprocess.vertex-BbTJmjCf.esm.min.js.map +1 -0
- package/dist/chunks/postprocess.vertex-CNs3MRKb.esm.js +20 -0
- package/dist/chunks/postprocess.vertex-CNs3MRKb.esm.js.map +1 -0
- package/dist/chunks/postprocess.vertex-CTo285Z2.esm.min.js +2 -0
- package/dist/chunks/postprocess.vertex-CTo285Z2.esm.min.js.map +1 -0
- package/dist/chunks/postprocess.vertex-y147vu4l.esm.js +18 -0
- package/dist/chunks/postprocess.vertex-y147vu4l.esm.js.map +1 -0
- package/dist/chunks/rawTexture-6isRmFti.esm.js +191 -0
- package/dist/chunks/rawTexture-6isRmFti.esm.js.map +1 -0
- package/dist/chunks/rawTexture-D4XnSF1r.esm.min.js +2 -0
- package/dist/chunks/rawTexture-D4XnSF1r.esm.min.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-3lEy-Ka7.esm.js +17 -0
- package/dist/chunks/rgbdDecode.fragment-3lEy-Ka7.esm.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-COQem3tF.esm.js +17 -0
- package/dist/chunks/rgbdDecode.fragment-COQem3tF.esm.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-DXGiOnN0.esm.min.js +2 -0
- package/dist/chunks/rgbdDecode.fragment-DXGiOnN0.esm.min.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-H721Xf9-.esm.min.js +2 -0
- package/dist/chunks/rgbdDecode.fragment-H721Xf9-.esm.min.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-B4OD9ZtF.esm.min.js +2 -0
- package/dist/chunks/rgbdEncode.fragment-B4OD9ZtF.esm.min.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-CQiCuTLF.esm.js +17 -0
- package/dist/chunks/rgbdEncode.fragment-CQiCuTLF.esm.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-CX3nTLp5.esm.js +17 -0
- package/dist/chunks/rgbdEncode.fragment-CX3nTLp5.esm.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-CdBxB5jv.esm.min.js +2 -0
- package/dist/chunks/rgbdEncode.fragment-CdBxB5jv.esm.min.js.map +1 -0
- package/dist/chunks/splatFileLoader-3iaRLBaz.esm.min.js +2 -0
- package/dist/chunks/splatFileLoader-3iaRLBaz.esm.min.js.map +1 -0
- package/dist/chunks/splatFileLoader-B9nfzA38.esm.js +3598 -0
- package/dist/chunks/splatFileLoader-B9nfzA38.esm.js.map +1 -0
- package/dist/chunks/standardMaterial-PSnYwoCV.esm.min.js +2 -0
- package/dist/chunks/standardMaterial-PSnYwoCV.esm.min.js.map +1 -0
- package/dist/chunks/standardMaterial-sHuTQ1tu.esm.js +1800 -0
- package/dist/chunks/standardMaterial-sHuTQ1tu.esm.js.map +1 -0
- package/dist/chunks/stlFileLoader-CGeDwcKD.esm.js +238 -0
- package/dist/chunks/stlFileLoader-CGeDwcKD.esm.js.map +1 -0
- package/dist/chunks/stlFileLoader-CMvJa97I.esm.min.js +2 -0
- package/dist/chunks/stlFileLoader-CMvJa97I.esm.min.js.map +1 -0
- package/dist/chunks/tgaTextureLoader-DA9PD4-W.esm.min.js +2 -0
- package/dist/chunks/tgaTextureLoader-DA9PD4-W.esm.min.js.map +1 -0
- package/dist/chunks/tgaTextureLoader-tLbUn9Fj.esm.js +349 -0
- package/dist/chunks/tgaTextureLoader-tLbUn9Fj.esm.js.map +1 -0
- package/dist/chunks/thinEngine-BHJfErVb.esm.js +3721 -0
- package/dist/chunks/thinEngine-BHJfErVb.esm.js.map +1 -0
- package/dist/chunks/thinEngine-Dm9mz21A.esm.min.js +2 -0
- package/dist/chunks/thinEngine-Dm9mz21A.esm.min.js.map +1 -0
- package/dist/chunks/thinInstanceMesh-BmyPW1W0.esm.js +314 -0
- package/dist/chunks/thinInstanceMesh-BmyPW1W0.esm.js.map +1 -0
- package/dist/chunks/thinInstanceMesh-FE1_0Dpq.esm.min.js +2 -0
- package/dist/chunks/thinInstanceMesh-FE1_0Dpq.esm.min.js.map +1 -0
- package/dist/chunks/vertexColorMixing-q2DcZ4Dn.esm.js +528 -0
- package/dist/chunks/vertexColorMixing-q2DcZ4Dn.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-rp5ckHF-.esm.min.js +2 -0
- package/dist/chunks/vertexColorMixing-rp5ckHF-.esm.min.js.map +1 -0
- package/dist/chunks/webgpuEngine-B_ikij35.esm.js +11191 -0
- package/dist/chunks/webgpuEngine-B_ikij35.esm.js.map +1 -0
- package/dist/chunks/webgpuEngine-CsJfrYZY.esm.min.js +2 -0
- package/dist/chunks/webgpuEngine-CsJfrYZY.esm.min.js.map +1 -0
- package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
- package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
- package/docs/ViewerDefault.jpg +0 -0
- package/docs/ViewerParts.jpg +0 -0
- package/docs/ViewerSlots.jpg +0 -0
- package/docs/ViewerStyled.jpg +0 -0
- package/lib/index.d.ts +325 -0
- package/lib/index.js +1116 -0
- package/lib/index.js.map +1 -0
- package/package.json +18 -27
- package/readme.md +145 -21
- package/configuration/configuration.d.ts +0 -107
- package/configuration/configuration.js +0 -16
- package/configuration/configuration.js.map +0 -1
- package/configuration/configurationCompatibility.d.ts +0 -8
- package/configuration/configurationCompatibility.js +0 -66
- package/configuration/configurationCompatibility.js.map +0 -1
- package/configuration/configurationContainer.d.ts +0 -10
- package/configuration/configurationContainer.js +0 -10
- package/configuration/configurationContainer.js.map +0 -1
- package/configuration/globals.d.ts +0 -6
- package/configuration/globals.js +0 -18
- package/configuration/globals.js.map +0 -1
- package/configuration/index.d.ts +0 -2
- package/configuration/index.js +0 -4
- package/configuration/index.js.map +0 -1
- package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
- package/configuration/interfaces/cameraConfiguration.js +0 -2
- package/configuration/interfaces/cameraConfiguration.js.map +0 -1
- package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
- package/configuration/interfaces/colorGradingConfiguration.js +0 -2
- package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
- package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
- package/configuration/interfaces/environmentMapConfiguration.js +0 -2
- package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
- package/configuration/interfaces/groundConfiguration.d.ts +0 -24
- package/configuration/interfaces/groundConfiguration.js +0 -2
- package/configuration/interfaces/groundConfiguration.js.map +0 -1
- package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
- package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
- package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
- package/configuration/interfaces/index.d.ts +0 -15
- package/configuration/interfaces/index.js +0 -16
- package/configuration/interfaces/index.js.map +0 -1
- package/configuration/interfaces/lightConfiguration.d.ts +0 -60
- package/configuration/interfaces/lightConfiguration.js +0 -2
- package/configuration/interfaces/lightConfiguration.js.map +0 -1
- package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
- package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
- package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
- package/configuration/interfaces/modelConfiguration.d.ts +0 -65
- package/configuration/interfaces/modelConfiguration.js +0 -2
- package/configuration/interfaces/modelConfiguration.js.map +0 -1
- package/configuration/interfaces/observersConfiguration.d.ts +0 -5
- package/configuration/interfaces/observersConfiguration.js +0 -2
- package/configuration/interfaces/observersConfiguration.js.map +0 -1
- package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
- package/configuration/interfaces/sceneConfiguration.js +0 -2
- package/configuration/interfaces/sceneConfiguration.js.map +0 -1
- package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
- package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
- package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
- package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
- package/configuration/interfaces/skyboxConfiguration.js +0 -2
- package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
- package/configuration/interfaces/templateConfiguration.d.ts +0 -67
- package/configuration/interfaces/templateConfiguration.js +0 -2
- package/configuration/interfaces/templateConfiguration.js.map +0 -1
- package/configuration/interfaces/vrConfiguration.d.ts +0 -16
- package/configuration/interfaces/vrConfiguration.js +0 -2
- package/configuration/interfaces/vrConfiguration.js.map +0 -1
- package/configuration/loader.d.ts +0 -4
- package/configuration/loader.js +0 -17
- package/configuration/loader.js.map +0 -1
- package/configuration/mappers.d.ts +0 -43
- package/configuration/mappers.js +0 -192
- package/configuration/mappers.js.map +0 -1
- package/configuration/renderOnlyLoader.d.ts +0 -33
- package/configuration/renderOnlyLoader.js +0 -162
- package/configuration/renderOnlyLoader.js.map +0 -1
- package/configuration/types/default.d.ts +0 -6
- package/configuration/types/default.js +0 -121
- package/configuration/types/default.js.map +0 -1
- package/configuration/types/environmentMap.d.ts +0 -5
- package/configuration/types/environmentMap.js +0 -14
- package/configuration/types/environmentMap.js.map +0 -1
- package/configuration/types/extended.d.ts +0 -6
- package/configuration/types/extended.js +0 -317
- package/configuration/types/extended.js.map +0 -1
- package/configuration/types/index.d.ts +0 -14
- package/configuration/types/index.js +0 -51
- package/configuration/types/index.js.map +0 -1
- package/configuration/types/minimal.d.ts +0 -6
- package/configuration/types/minimal.js +0 -43
- package/configuration/types/minimal.js.map +0 -1
- package/configuration/types/renderOnlyDefault.d.ts +0 -30
- package/configuration/types/renderOnlyDefault.js +0 -31
- package/configuration/types/renderOnlyDefault.js.map +0 -1
- package/configuration/types/shadowLight.d.ts +0 -9
- package/configuration/types/shadowLight.js +0 -64
- package/configuration/types/shadowLight.js.map +0 -1
- package/helper/index.d.ts +0 -29
- package/helper/index.js +0 -66
- package/helper/index.js.map +0 -1
- package/index.d.ts +0 -30
- package/index.js +0 -46
- package/index.js.map +0 -1
- package/initializer.d.ts +0 -11
- package/initializer.js +0 -35
- package/initializer.js.map +0 -1
- package/interfaces.d.ts +0 -5
- package/interfaces.js +0 -7
- package/interfaces.js.map +0 -1
- package/labs/environmentSerializer.d.ts +0 -126
- package/labs/environmentSerializer.js +0 -191
- package/labs/environmentSerializer.js.map +0 -1
- package/labs/texture.d.ts +0 -183
- package/labs/texture.js +0 -350
- package/labs/texture.js.map +0 -1
- package/labs/viewerLabs.d.ts +0 -51
- package/labs/viewerLabs.js +0 -134
- package/labs/viewerLabs.js.map +0 -1
- package/loader/modelLoader.d.ts +0 -56
- package/loader/modelLoader.js +0 -199
- package/loader/modelLoader.js.map +0 -1
- package/loader/plugins/applyMaterialConfig.d.ts +0 -12
- package/loader/plugins/applyMaterialConfig.js +0 -16
- package/loader/plugins/applyMaterialConfig.js.map +0 -1
- package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
- package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
- package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
- package/loader/plugins/index.d.ts +0 -19
- package/loader/plugins/index.js +0 -44
- package/loader/plugins/index.js.map +0 -1
- package/loader/plugins/loaderPlugin.d.ts +0 -24
- package/loader/plugins/loaderPlugin.js +0 -2
- package/loader/plugins/loaderPlugin.js.map +0 -1
- package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
- package/loader/plugins/msftLodLoaderPlugin.js +0 -21
- package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
- package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
- package/loader/plugins/telemetryLoaderPlugin.js +0 -36
- package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
- package/managers/observablesManager.d.ts +0 -66
- package/managers/observablesManager.js +0 -35
- package/managers/observablesManager.js.map +0 -1
- package/managers/sceneManager.d.ts +0 -245
- package/managers/sceneManager.js +0 -1375
- package/managers/sceneManager.js.map +0 -1
- package/managers/telemetryManager.d.ts +0 -78
- package/managers/telemetryManager.js +0 -117
- package/managers/telemetryManager.js.map +0 -1
- package/model/modelAnimation.d.ts +0 -215
- package/model/modelAnimation.js +0 -237
- package/model/modelAnimation.js.map +0 -1
- package/model/viewerModel.d.ts +0 -233
- package/model/viewerModel.js +0 -673
- package/model/viewerModel.js.map +0 -1
- package/optimizer/custom/extended.d.ts +0 -13
- package/optimizer/custom/extended.js +0 -101
- package/optimizer/custom/extended.js.map +0 -1
- package/optimizer/custom/index.d.ts +0 -9
- package/optimizer/custom/index.js +0 -26
- package/optimizer/custom/index.js.map +0 -1
- package/renderOnlyIndex.d.ts +0 -11
- package/renderOnlyIndex.js +0 -18
- package/renderOnlyIndex.js.map +0 -1
- package/templating/eventManager.d.ts +0 -35
- package/templating/eventManager.js +0 -66
- package/templating/eventManager.js.map +0 -1
- package/templating/plugins/hdButtonPlugin.d.ts +0 -9
- package/templating/plugins/hdButtonPlugin.js +0 -21
- package/templating/plugins/hdButtonPlugin.js.map +0 -1
- package/templating/plugins/printButton.d.ts +0 -9
- package/templating/plugins/printButton.js +0 -40
- package/templating/plugins/printButton.js.map +0 -1
- package/templating/templateManager.d.ts +0 -197
- package/templating/templateManager.js +0 -561
- package/templating/templateManager.js.map +0 -1
- package/templating/viewerTemplatePlugin.d.ts +0 -21
- package/templating/viewerTemplatePlugin.js +0 -69
- package/templating/viewerTemplatePlugin.js.map +0 -1
- package/viewer/defaultViewer.d.ts +0 -130
- package/viewer/defaultViewer.js +0 -672
- package/viewer/defaultViewer.js.map +0 -1
- package/viewer/renderOnlyViewer.d.ts +0 -9
- package/viewer/renderOnlyViewer.js +0 -46
- package/viewer/renderOnlyViewer.js.map +0 -1
- package/viewer/viewer.d.ts +0 -258
- package/viewer/viewer.js +0 -783
- package/viewer/viewer.js.map +0 -1
- package/viewer/viewerManager.d.ts +0 -58
- package/viewer/viewerManager.js +0 -91
- package/viewer/viewerManager.js.map +0 -1
- package/viewer/viewerWithTemplate.d.ts +0 -9
- package/viewer/viewerWithTemplate.js +0 -20
- package/viewer/viewerWithTemplate.js.map +0 -1
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../../tools/viewer-alpha/src/viewer.ts","../../../../../../../../tools/viewer-alpha/src/viewerFactory.ts","../../../../../../../../tools/viewer-alpha/src/viewerElement.ts"],"sourcesContent":["import type {\r\n AbstractEngine,\r\n AnimationGroup,\r\n AssetContainer,\r\n AutoRotationBehavior,\r\n Camera,\r\n FramingBehavior,\r\n HotSpotQuery,\r\n IDisposable,\r\n LoadAssetContainerOptions,\r\n Mesh,\r\n Nullable,\r\n Observer,\r\n // eslint-disable-next-line import/no-internal-modules\r\n} from \"core/index\";\r\n\r\nimport { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport { loadAssetContainerAsync } from \"core/Loading/sceneLoader\";\r\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\nimport { CubeTexture } from \"core/Materials/Textures/cubeTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Clamp } from \"core/Maths/math.scalar.functions\";\r\nimport { TmpVectors, Vector3 } from \"core/Maths/math.vector\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { computeMaxExtents } from \"core/Meshes/meshUtils\";\r\nimport { AsyncLock } from \"core/Misc/asyncLock\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { Scene, ScenePerformancePriority } from \"core/scene\";\r\nimport { registerBuiltInLoaders } from \"loaders/dynamic\";\r\nimport { Viewport } from \"core/Maths/math.viewport\";\r\nimport { GetHotSpotToRef } from \"core/Meshes/abstractMesh.hotSpot\";\r\nimport { SnapshotRenderingHelper } from \"core/Misc/snapshotRenderingHelper\";\r\n\r\nfunction throwIfAborted(...abortSignals: (Nullable<AbortSignal> | undefined)[]): void {\r\n for (const signal of abortSignals) {\r\n signal?.throwIfAborted();\r\n }\r\n}\r\n\r\nfunction createSkybox(scene: Scene, camera: Camera, environmentTexture: CubeTexture, blur: number): Mesh {\r\n const hdrSkybox = CreateBox(\"hdrSkyBox\", undefined, scene);\r\n const hdrSkyboxMaterial = new PBRMaterial(\"skyBox\", scene);\r\n hdrSkyboxMaterial.backFaceCulling = false;\r\n hdrSkyboxMaterial.reflectionTexture = environmentTexture.clone();\r\n if (hdrSkyboxMaterial.reflectionTexture) {\r\n hdrSkyboxMaterial.reflectionTexture.coordinatesMode = Texture.SKYBOX_MODE;\r\n }\r\n hdrSkyboxMaterial.microSurface = 1.0 - blur;\r\n hdrSkyboxMaterial.disableLighting = true;\r\n hdrSkyboxMaterial.twoSidedLighting = true;\r\n hdrSkybox.material = hdrSkyboxMaterial;\r\n hdrSkybox.isPickable = false;\r\n hdrSkybox.infiniteDistance = true;\r\n\r\n updateSkybox(hdrSkybox, camera);\r\n\r\n return hdrSkybox;\r\n}\r\n\r\nfunction updateSkybox(skybox: Nullable<Mesh>, camera: Camera): void {\r\n skybox?.scaling.setAll((camera.maxZ - camera.minZ) / 2);\r\n}\r\n\r\nconst defaultViewerOptions = {\r\n backgroundColor: new Color4(0.1, 0.1, 0.2, 1.0),\r\n} as const;\r\n\r\nexport type ViewerDetails = {\r\n /**\r\n * Gets the Viewer instance.\r\n */\r\n viewer: Viewer;\r\n\r\n /**\r\n * Provides access to the Scene managed by the Viewer.\r\n */\r\n scene: Scene;\r\n\r\n /**\r\n * Provides access to the currently loaded model.\r\n */\r\n model: Nullable<AssetContainer>;\r\n};\r\n\r\nexport type ViewerOptions = Partial<\r\n typeof defaultViewerOptions &\r\n Readonly<{\r\n /**\r\n * Called once when the viewer is initialized and provides viewer details that can be used for advanced customization.\r\n */\r\n onInitialized: (details: Readonly<ViewerDetails>) => void;\r\n }>\r\n>;\r\n\r\nexport type ViewerHotSpotQuery = {\r\n /**\r\n * The index of the mesh within the loaded model.\r\n */\r\n meshIndex: number;\r\n} & HotSpotQuery;\r\n\r\n/**\r\n * Information computed from the hot spot surface data, canvas and mesh datas\r\n */\r\nexport type ViewerHotSpot = {\r\n /**\r\n * 2D canvas position in pixels\r\n */\r\n screenPosition: [number, number];\r\n /**\r\n * 3D world coordinates\r\n */\r\n worldPosition: [number, number, number];\r\n};\r\n\r\n/**\r\n * Provides an experience for viewing a single 3D model.\r\n * @remarks\r\n * The Viewer is not tied to a specific UI framework and can be used with Babylon.js in a browser or with Babylon Native.\r\n * Includes (or will include) support for common model viewing requirements such as:\r\n * - Loading different model formats.\r\n * - Setting up a camera and providing default behaviors like auto orbit and pose interpolation.\r\n * - Framing the loaded model in the camera's view.\r\n * - Setting up the environment, lighting, and tone mapping.\r\n * - Enumerating and playing (or auto playing) animations.\r\n * - Enumerating and switching between material variants.\r\n * - Full screen and XR modes.\r\n */\r\nexport class Viewer implements IDisposable {\r\n static {\r\n registerBuiltInLoaders();\r\n }\r\n\r\n /**\r\n * Fired when the environment has changed.\r\n */\r\n public readonly onEnvironmentChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when an error occurs while loading the environment.\r\n */\r\n public readonly onEnvironmentError = new Observable<unknown>();\r\n\r\n /**\r\n * Fired when a model is loaded into the viewer (or unloaded from the viewer).\r\n */\r\n public readonly onModelChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when an error occurs while loading a model.\r\n */\r\n public readonly onModelError = new Observable<unknown>();\r\n\r\n /**\r\n * Fired when the selected animation changes.\r\n */\r\n public readonly onSelectedAnimationChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the animation speed changes.\r\n */\r\n public readonly onAnimationSpeedChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the selected animation is playing or paused.\r\n */\r\n public readonly onIsAnimationPlayingChanged = new Observable<void>();\r\n\r\n /**\r\n * Fired when the current point on the selected animation timeline changes.\r\n */\r\n public readonly onAnimationProgressChanged = new Observable<void>();\r\n\r\n private readonly _details: ViewerDetails;\r\n private readonly _snapshotHelper: SnapshotRenderingHelper;\r\n private readonly _camera: ArcRotateCamera;\r\n private readonly _autoRotationBehavior: AutoRotationBehavior;\r\n private readonly _renderLoopController: IDisposable;\r\n private _skybox: Nullable<Mesh> = null;\r\n private _light: Nullable<HemisphericLight> = null;\r\n\r\n private _isDisposed = false;\r\n\r\n private readonly _loadModelLock = new AsyncLock();\r\n private _loadModelAbortController: Nullable<AbortController> = null;\r\n\r\n private readonly _loadEnvironmentLock = new AsyncLock();\r\n private _environment: Nullable<IDisposable> = null;\r\n private _loadEnvironmentAbortController: Nullable<AbortController> = null;\r\n\r\n private _selectedAnimation = -1;\r\n private _activeAnimationObservers: Observer<AnimationGroup>[] = [];\r\n private _animationSpeed = 1;\r\n\r\n public constructor(\r\n private readonly _engine: AbstractEngine,\r\n options?: ViewerOptions\r\n ) {\r\n const finalOptions = { ...defaultViewerOptions, ...options };\r\n this._details = {\r\n viewer: this,\r\n scene: new Scene(this._engine),\r\n model: null,\r\n };\r\n this._details.scene.performancePriority = ScenePerformancePriority.Aggressive;\r\n this._details.scene.clearColor = finalOptions.backgroundColor;\r\n this._snapshotHelper = new SnapshotRenderingHelper(this._details.scene, { morphTargetsNumMaxInfluences: 30 });\r\n this._camera = new ArcRotateCamera(\"camera1\", 0, 0, 1, Vector3.Zero(), this._details.scene);\r\n this._camera.attachControl();\r\n this._updateCamera(); // set default camera values\r\n this._autoRotationBehavior = this._camera.getBehaviorByName(\"AutoRotation\") as AutoRotationBehavior;\r\n\r\n // Load a default light, but ignore errors as the user might be immediately loading their own environment.\r\n this.resetEnvironment().catch(() => {});\r\n\r\n // TODO: render at least back ground. Maybe we can only run renderloop when a mesh is loaded. What to render until then?\r\n const render = () => {\r\n this._details.scene.render();\r\n if (this.isAnimationPlaying) {\r\n this.onAnimationProgressChanged.notifyObservers();\r\n this._autoRotationBehavior.resetLastInteractionTime();\r\n }\r\n };\r\n\r\n this._engine.runRenderLoop(render);\r\n this._renderLoopController = {\r\n dispose: () => this._engine.stopRenderLoop(render),\r\n };\r\n\r\n options?.onInitialized?.(this._details);\r\n }\r\n\r\n /**\r\n * The list of animation names for the currently loaded model.\r\n */\r\n public get animations(): readonly string[] {\r\n return this._details.model?.animationGroups.map((group) => group.name) ?? [];\r\n }\r\n\r\n /**\r\n * The currently selected animation index.\r\n */\r\n public get selectedAnimation(): number {\r\n return this._selectedAnimation;\r\n }\r\n\r\n public set selectedAnimation(value: number) {\r\n value = Math.round(Clamp(value, -1, this.animations.length - 1));\r\n if (value !== this._selectedAnimation) {\r\n const startAnimation = this.isAnimationPlaying;\r\n if (this._activeAnimation) {\r\n this._activeAnimationObservers.forEach((observer) => observer.remove());\r\n this._activeAnimationObservers = [];\r\n this._activeAnimation.pause();\r\n this._activeAnimation.goToFrame(0);\r\n }\r\n\r\n this._selectedAnimation = value;\r\n\r\n if (this._activeAnimation) {\r\n this._activeAnimation.goToFrame(0);\r\n this._activeAnimation.play(true);\r\n\r\n if (!startAnimation) {\r\n this.pauseAnimation();\r\n }\r\n\r\n this._activeAnimationObservers = [\r\n this._activeAnimation.onAnimationGroupPlayObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n }),\r\n this._activeAnimation.onAnimationGroupPauseObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n }),\r\n this._activeAnimation.onAnimationGroupEndObservable.add(() => {\r\n this.onIsAnimationPlayingChanged.notifyObservers();\r\n this.onAnimationProgressChanged.notifyObservers();\r\n }),\r\n ];\r\n }\r\n\r\n this._updateCamera();\r\n this.onSelectedAnimationChanged.notifyObservers();\r\n }\r\n }\r\n\r\n /**\r\n * True if an animation is currently playing.\r\n */\r\n public get isAnimationPlaying(): boolean {\r\n return this._activeAnimation?.isPlaying ?? false;\r\n }\r\n\r\n /**\r\n * The speed scale at which animations are played.\r\n */\r\n public get animationSpeed(): number {\r\n return this._animationSpeed;\r\n }\r\n\r\n public set animationSpeed(value: number) {\r\n this._animationSpeed = value;\r\n this._applyAnimationSpeed();\r\n this.onAnimationSpeedChanged.notifyObservers();\r\n }\r\n\r\n /**\r\n * The current point on the selected animation timeline, normalized between 0 and 1.\r\n */\r\n public get animationProgress(): number {\r\n if (this._activeAnimation) {\r\n return this._activeAnimation.getCurrentFrame() / (this._activeAnimation.to - this._activeAnimation.from);\r\n }\r\n return 0;\r\n }\r\n\r\n public set animationProgress(value: number) {\r\n if (this._activeAnimation) {\r\n this._activeAnimation.goToFrame(value * (this._activeAnimation.to - this._activeAnimation.from));\r\n this.onAnimationProgressChanged.notifyObservers();\r\n this._autoRotationBehavior.resetLastInteractionTime();\r\n }\r\n }\r\n\r\n private get _activeAnimation(): Nullable<AnimationGroup> {\r\n return this._details.model?.animationGroups[this._selectedAnimation] ?? null;\r\n }\r\n\r\n /**\r\n * Loads a 3D model from the specified URL.\r\n * @remarks\r\n * If a model is already loaded, it will be unloaded before loading the new model.\r\n * @param source A url or File or ArrayBufferView that points to the model to load.\r\n * @param options The options to use when loading the model.\r\n * @param abortSignal An optional signal that can be used to abort the loading process.\r\n */\r\n public async loadModel(source: string | File | ArrayBufferView, options?: LoadAssetContainerOptions, abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateModel(source, options, abortSignal);\r\n }\r\n\r\n /**\r\n * Unloads the current 3D model if one is loaded.\r\n * @param abortSignal An optional signal that can be used to abort the reset.\r\n */\r\n public async resetModel(abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateModel(undefined, undefined, abortSignal);\r\n }\r\n\r\n private async _updateModel(source: string | File | ArrayBufferView | undefined, options?: LoadAssetContainerOptions, abortSignal?: AbortSignal): Promise<void> {\r\n this._throwIfDisposedOrAborted(abortSignal);\r\n\r\n this._loadModelAbortController?.abort(\"New model is being loaded before previous model finished loading.\");\r\n const abortController = (this._loadModelAbortController = new AbortController());\r\n\r\n await this._loadModelLock.lockAsync(async () => {\r\n throwIfAborted(abortSignal, abortController.signal);\r\n this._snapshotHelper.disableSnapshotRendering();\r\n this._details.model?.dispose();\r\n this._details.model = null;\r\n this.selectedAnimation = -1;\r\n\r\n try {\r\n if (source) {\r\n this._details.model = await loadAssetContainerAsync(source, this._details.scene, options);\r\n this._details.model.animationGroups.forEach((group) => {\r\n group.start(true, this.animationSpeed);\r\n group.pause();\r\n });\r\n this.selectedAnimation = 0;\r\n this._snapshotHelper.fixMeshes(this._details.model.meshes);\r\n this._details.model.addAllToScene();\r\n }\r\n\r\n this._updateCamera();\r\n this._updateLight();\r\n this._applyAnimationSpeed();\r\n this.onModelChanged.notifyObservers();\r\n } catch (e) {\r\n this.onModelError.notifyObservers(e);\r\n throw e;\r\n } finally {\r\n this._snapshotHelper.enableSnapshotRendering();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Loads an environment texture from the specified url and sets up a corresponding skybox.\r\n * @remarks\r\n * If an environment is already loaded, it will be unloaded before loading the new environment.\r\n * @param url The url of the environment texture to load.\r\n * @param options The options to use when loading the environment.\r\n * @param abortSignal An optional signal that can be used to abort the loading process.\r\n */\r\n public async loadEnvironment(url: string, options?: {}, abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateEnvironment(url, options, abortSignal);\r\n }\r\n\r\n /**\r\n * Unloads the current environment if one is loaded.\r\n * @param abortSignal An optional signal that can be used to abort the reset.\r\n */\r\n public async resetEnvironment(abortSignal?: AbortSignal): Promise<void> {\r\n await this._updateEnvironment(undefined, undefined, abortSignal);\r\n }\r\n\r\n private async _updateEnvironment(url: Nullable<string | undefined>, options?: {}, abortSignal?: AbortSignal): Promise<void> {\r\n this._throwIfDisposedOrAborted(abortSignal);\r\n\r\n this._loadEnvironmentAbortController?.abort(\"New environment is being loaded before previous environment finished loading.\");\r\n const abortController = (this._loadEnvironmentAbortController = new AbortController());\r\n\r\n await this._loadEnvironmentLock.lockAsync(async () => {\r\n throwIfAborted(abortSignal, abortController.signal);\r\n this._snapshotHelper.disableSnapshotRendering();\r\n this._environment?.dispose();\r\n this._environment = null;\r\n this._details.scene.autoClear = true;\r\n\r\n try {\r\n if (url) {\r\n this._environment = await new Promise<IDisposable>((resolve, reject) => {\r\n const cubeTexture = CubeTexture.CreateFromPrefilteredData(url, this._details.scene);\r\n this._details.scene.environmentTexture = cubeTexture;\r\n\r\n const skybox = createSkybox(this._details.scene, this._camera, cubeTexture, 0.3);\r\n this._snapshotHelper.fixMeshes([skybox]);\r\n this._skybox = skybox;\r\n\r\n this._details.scene.autoClear = false;\r\n\r\n const dispose = () => {\r\n cubeTexture.dispose();\r\n skybox.dispose();\r\n this._skybox = null;\r\n };\r\n\r\n const successObserver = cubeTexture.onLoadObservable.addOnce(() => {\r\n successObserver.remove();\r\n errorObserver.remove();\r\n resolve({\r\n dispose,\r\n });\r\n });\r\n\r\n const errorObserver = Texture.OnTextureLoadErrorObservable.add((texture) => {\r\n if (texture === cubeTexture) {\r\n successObserver.remove();\r\n errorObserver.remove();\r\n dispose();\r\n reject(new Error(\"Failed to load environment texture.\"));\r\n }\r\n });\r\n });\r\n }\r\n\r\n this._updateLight();\r\n this.onEnvironmentChanged.notifyObservers();\r\n } catch (e) {\r\n this.onEnvironmentError.notifyObservers(e);\r\n throw e;\r\n } finally {\r\n this._snapshotHelper.enableSnapshotRendering();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the play/pause animation state if there is a selected animation.\r\n */\r\n public toggleAnimation() {\r\n if (this.isAnimationPlaying) {\r\n this.pauseAnimation();\r\n } else {\r\n this.playAnimation();\r\n }\r\n }\r\n\r\n /**\r\n * Plays the selected animation if there is one.\r\n */\r\n public playAnimation() {\r\n this._activeAnimation?.play(true);\r\n }\r\n\r\n /**\r\n * Pauses the selected animation if there is one.\r\n */\r\n public async pauseAnimation() {\r\n this._activeAnimation?.pause();\r\n }\r\n\r\n /**\r\n * Disposes of the resources held by the Viewer.\r\n */\r\n public dispose(): void {\r\n this.selectedAnimation = -1;\r\n this.animationProgress = 0;\r\n\r\n this._loadEnvironmentAbortController?.abort(\"Thew viewer is being disposed.\");\r\n this._loadModelAbortController?.abort(\"Thew viewer is being disposed.\");\r\n\r\n this._renderLoopController.dispose();\r\n this._details.scene.dispose();\r\n\r\n this.onEnvironmentChanged.clear();\r\n this.onEnvironmentError.clear();\r\n this.onModelChanged.clear();\r\n this.onModelError.clear();\r\n this.onSelectedAnimationChanged.clear();\r\n this.onAnimationSpeedChanged.clear();\r\n this.onIsAnimationPlayingChanged.clear();\r\n this.onAnimationProgressChanged.clear();\r\n\r\n this._isDisposed = true;\r\n }\r\n\r\n /**\r\n * retrun world and canvas coordinates of an hot spot\r\n * @param hotSpotQuery mesh index and surface information to query the hot spot positions\r\n * @param res Query a Hot Spot and does the conversion for Babylon Hot spot to a more generic HotSpotPositions, without Vector types\r\n * @returns true if hotspot found\r\n */\r\n public getHotSpotToRef(hotSpotQuery: Readonly<ViewerHotSpotQuery>, res: ViewerHotSpot): boolean {\r\n if (!this._details.model) {\r\n return false;\r\n }\r\n const worldPos = TmpVectors.Vector3[1];\r\n const screenPos = TmpVectors.Vector3[0];\r\n const mesh = this._details.model.meshes[hotSpotQuery.meshIndex];\r\n if (!mesh) {\r\n return false;\r\n }\r\n GetHotSpotToRef(mesh, hotSpotQuery, worldPos);\r\n\r\n const renderWidth = this._engine.getRenderWidth(); // Get the canvas width\r\n const renderHeight = this._engine.getRenderHeight(); // Get the canvas height\r\n\r\n const viewportWidth = this._camera.viewport.width * renderWidth;\r\n const viewportHeight = this._camera.viewport.height * renderHeight;\r\n const scene = this._details.scene;\r\n\r\n Vector3.ProjectToRef(worldPos, mesh.getWorldMatrix(), scene.getTransformMatrix(), new Viewport(0, 0, viewportWidth, viewportHeight), screenPos);\r\n res.screenPosition = [screenPos.x, screenPos.y];\r\n res.worldPosition = [worldPos.x, worldPos.y, worldPos.z];\r\n return true;\r\n }\r\n\r\n private _updateCamera(): void {\r\n // Enable camera's behaviors\r\n this._camera.useFramingBehavior = true;\r\n const framingBehavior = this._camera.getBehaviorByName(\"Framing\") as FramingBehavior;\r\n framingBehavior.framingTime = 0;\r\n framingBehavior.elevationReturnTime = -1;\r\n\r\n let radius = 1;\r\n if (this._details.model?.meshes.length) {\r\n // get bounds and prepare framing/camera radius from its values\r\n this._camera.lowerRadiusLimit = null;\r\n\r\n const maxExtents = computeMaxExtents(this._details.model.meshes, this._activeAnimation);\r\n const worldExtents = {\r\n min: new Vector3(Math.min(...maxExtents.map((e) => e.minimum.x)), Math.min(...maxExtents.map((e) => e.minimum.y)), Math.min(...maxExtents.map((e) => e.minimum.z))),\r\n max: new Vector3(Math.max(...maxExtents.map((e) => e.maximum.x)), Math.max(...maxExtents.map((e) => e.maximum.y)), Math.max(...maxExtents.map((e) => e.maximum.z))),\r\n };\r\n framingBehavior.zoomOnBoundingInfo(worldExtents.min, worldExtents.max);\r\n\r\n const worldSize = worldExtents.max.subtract(worldExtents.min);\r\n const worldCenter = worldExtents.min.add(worldSize.scale(0.5));\r\n\r\n radius = worldSize.length() * 1.1;\r\n\r\n if (!isFinite(radius)) {\r\n radius = 1;\r\n worldCenter.copyFromFloats(0, 0, 0);\r\n }\r\n\r\n this._camera.setTarget(worldCenter);\r\n }\r\n this._camera.lowerRadiusLimit = radius * 0.01;\r\n this._camera.wheelPrecision = 100 / radius;\r\n this._camera.alpha = Math.PI / 2;\r\n this._camera.beta = Math.PI / 2.4;\r\n this._camera.radius = radius;\r\n this._camera.minZ = radius * 0.01;\r\n this._camera.maxZ = radius * 1000;\r\n this._camera.speed = radius * 0.2;\r\n this._camera.useAutoRotationBehavior = true;\r\n this._camera.pinchPrecision = 200 / this._camera.radius;\r\n this._camera.upperRadiusLimit = 5 * this._camera.radius;\r\n this._camera.wheelDeltaPercentage = 0.01;\r\n this._camera.pinchDeltaPercentage = 0.01;\r\n this._camera.restoreStateInterpolationFactor = 0.1;\r\n this._camera.storeState();\r\n\r\n updateSkybox(this._skybox, this._camera);\r\n }\r\n\r\n private _updateLight() {\r\n let shouldHaveDefaultLight: boolean;\r\n if (!this._details.model) {\r\n shouldHaveDefaultLight = false;\r\n } else {\r\n const hasModelProvidedLights = this._details.model.lights.length > 0;\r\n const hasImageBasedLighting = !!this._environment;\r\n const hasMaterials = this._details.model.materials.length > 0;\r\n const hasNonPBRMaterials = this._details.model.materials.some((material) => !(material instanceof PBRMaterial));\r\n\r\n if (hasModelProvidedLights) {\r\n shouldHaveDefaultLight = false;\r\n } else {\r\n shouldHaveDefaultLight = !hasImageBasedLighting || !hasMaterials || hasNonPBRMaterials;\r\n }\r\n }\r\n\r\n if (shouldHaveDefaultLight) {\r\n if (!this._light) {\r\n this._light = new HemisphericLight(\"defaultLight\", Vector3.Up(), this._details.scene);\r\n }\r\n } else {\r\n this._light?.dispose();\r\n this._light = null;\r\n }\r\n }\r\n\r\n private _applyAnimationSpeed() {\r\n this._details.model?.animationGroups.forEach((group) => (group.speedRatio = this._animationSpeed));\r\n }\r\n\r\n /**\r\n * Check for disposed or aborted state (basically everything that can interrupt an async operation).\r\n * @param abortSignals A set of optional AbortSignals to also check.\r\n */\r\n private _throwIfDisposedOrAborted(...abortSignals: (Nullable<AbortSignal> | undefined)[]): void {\r\n if (this._isDisposed) {\r\n throw new Error(\"Viewer is disposed.\");\r\n }\r\n\r\n throwIfAborted(...abortSignals);\r\n }\r\n}\r\n","// eslint-disable-next-line import/no-internal-modules\r\nimport type { AbstractEngine, AbstractEngineOptions, EngineOptions, WebGPUEngineOptions } from \"core/index\";\r\n\r\nimport type { ViewerOptions } from \"./viewer\";\r\nimport { Viewer } from \"./viewer\";\r\n\r\n/**\r\n * Options for creating a Viewer instance that is bound to an HTML canvas.\r\n */\r\nexport type CanvasViewerOptions = ViewerOptions &\r\n (({ engine?: undefined } & AbstractEngineOptions) | ({ engine: \"WebGL\" } & EngineOptions) | ({ engine: \"WebGPU\" } & WebGPUEngineOptions));\r\nconst defaultCanvasViewerOptions: CanvasViewerOptions = {};\r\n\r\n/**\r\n * Chooses a default engine for the current browser environment.\r\n * @returns The default engine to use.\r\n */\r\nexport function getDefaultEngine(): NonNullable<CanvasViewerOptions[\"engine\"]> {\r\n // TODO: When WebGPU is fully production ready, we may want to prefer it if it is supported by the browser.\r\n return \"WebGL\";\r\n}\r\n\r\n/**\r\n * Creates a Viewer instance that is bound to an HTML canvas.\r\n * @remarks\r\n * This function can be shared across multiple UI integrations (e.g. Web Components, React, etc.).\r\n * @param canvas The canvas element to bind the Viewer to.\r\n * @param options The options to use when creating the Viewer and binding it to the specified canvas.\r\n * @returns A Viewer instance that is bound to the specified canvas.\r\n */\r\nexport async function createViewerForCanvas(canvas: HTMLCanvasElement, options?: CanvasViewerOptions): Promise<Viewer> {\r\n const finalOptions = { ...defaultCanvasViewerOptions, ...options };\r\n const disposeActions: (() => void)[] = [];\r\n\r\n // If the canvas is resized, note that the engine needs a resize, but don't resize it here as it will result in flickering.\r\n let needsResize = false;\r\n const resizeObserver = new ResizeObserver(() => (needsResize = true));\r\n resizeObserver.observe(canvas);\r\n disposeActions.push(() => resizeObserver.disconnect());\r\n\r\n // Create an engine instance.\r\n let engine: AbstractEngine;\r\n switch (finalOptions.engine ?? getDefaultEngine()) {\r\n case \"WebGL\": {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-case-declarations\r\n const { Engine } = await import(\"core/Engines/engine\");\r\n engine = new Engine(canvas, undefined, options);\r\n break;\r\n }\r\n case \"WebGPU\": {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-case-declarations\r\n const { WebGPUEngine } = await import(\"core/Engines/webgpuEngine\");\r\n const webGPUEngine = new WebGPUEngine(canvas, options);\r\n await webGPUEngine.initAsync();\r\n engine = webGPUEngine;\r\n break;\r\n }\r\n }\r\n\r\n // Override the onInitialized callback to add in some specific behavior.\r\n const onInitialized = finalOptions.onInitialized;\r\n finalOptions.onInitialized = (details) => {\r\n // Resize if needed right before rendering the Viewer scene to avoid any flickering.\r\n const beforeRenderObserver = details.scene.onBeforeRenderObservable.add(() => {\r\n if (needsResize) {\r\n engine.resize();\r\n needsResize = false;\r\n }\r\n });\r\n disposeActions.push(() => beforeRenderObserver.remove());\r\n\r\n // Call the original onInitialized callback, if one was provided.\r\n onInitialized?.(details);\r\n };\r\n\r\n // Instantiate the Viewer with the engine and options.\r\n const viewer = new Viewer(engine, finalOptions);\r\n disposeActions.push(viewer.dispose.bind(viewer));\r\n\r\n disposeActions.push(() => engine.dispose());\r\n\r\n // Override the Viewer's dispose method to add in additional cleanup.\r\n viewer.dispose = () => disposeActions.forEach((dispose) => dispose());\r\n\r\n return viewer;\r\n}\r\n","// eslint-disable-next-line import/no-internal-modules\r\nimport type { Nullable } from \"core/index\";\r\n\r\nimport type { PropertyValues } from \"lit\";\r\nimport type { ViewerDetails, ViewerHotSpot, ViewerHotSpotQuery } from \"./viewer\";\r\nimport type { CanvasViewerOptions } from \"./viewerFactory\";\r\n\r\nimport { LitElement, css, html } from \"lit\";\r\nimport { customElement, property, query, state } from \"lit/decorators.js\";\r\n\r\nimport { AsyncLock } from \"core/Misc/asyncLock\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { createViewerForCanvas, getDefaultEngine } from \"./viewerFactory\";\r\n\r\n// Icon SVG is pulled from https://fluentuipr.z22.web.core.windows.net/heads/master/public-docsite-v9/storybook/iframe.html?id=icons-catalog--page&viewMode=story\r\nconst playFilledIcon = \"M17.22 8.68a1.5 1.5 0 0 1 0 2.63l-10 5.5A1.5 1.5 0 0 1 5 15.5v-11A1.5 1.5 0 0 1 7.22 3.2l10 5.5Z\";\r\nconst pauseFilledIcon = \"M5 2a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H5Zm8 0a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-2Z\";\r\n\r\nconst allowedAnimationSpeeds = [0.5, 1, 1.5, 2] as const;\r\n\r\ninterface HTML3DElementEventMap extends HTMLElementEventMap {\r\n viewerready: Event;\r\n environmentchange: Event;\r\n environmenterror: ErrorEvent;\r\n modelchange: Event;\r\n modelerror: ErrorEvent;\r\n selectedanimationchange: Event;\r\n animationspeedchange: Event;\r\n animationplayingchange: Event;\r\n animationprogresschange: Event;\r\n}\r\n\r\n/**\r\n * Represents a custom element that displays a 3D model using the Babylon.js Viewer.\r\n */\r\n@customElement(\"babylon-viewer\")\r\nexport class HTML3DElement extends LitElement {\r\n private readonly _viewerLock = new AsyncLock();\r\n private _viewerDetails?: Readonly<ViewerDetails>;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, jsdoc/require-jsdoc\r\n static override styles = css`\r\n :host {\r\n --ui-foreground-color: white;\r\n --ui-background-hue: 233;\r\n --ui-background-saturation: 8%;\r\n --ui-background-lightness: 39%;\r\n --ui-background-opacity: 0.75;\r\n --ui-background-color: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), var(--ui-background-opacity));\r\n --ui-background-color-hover: hsla(\r\n var(--ui-background-hue),\r\n var(--ui-background-saturation),\r\n calc(var(--ui-background-lightness) - 10%),\r\n calc(var(--ui-background-opacity) - 0.1)\r\n );\r\n }\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n .full-size {\r\n display: block;\r\n position: relative;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .children-slot {\r\n position: absolute;\r\n top: 0;\r\n background: transparent;\r\n pointer-events: none;\r\n }\r\n\r\n .tool-bar {\r\n position: absolute;\r\n display: flex;\r\n flex-direction: row;\r\n border-radius: 12px;\r\n border-color: var(--ui-foreground-color);\r\n height: 48px;\r\n width: calc(100% - 24px);\r\n min-width: 150px;\r\n max-width: 1280px;\r\n bottom: 12px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n background-color: var(--ui-background-color);\r\n color: var(--ui-foreground-color);\r\n -webkit-tap-highlight-color: transparent;\r\n }\r\n\r\n .tool-bar * {\r\n height: 100%;\r\n min-width: 48px;\r\n }\r\n\r\n .tool-bar select {\r\n background: none;\r\n min-width: 52px;\r\n max-width: 128px;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n color: inherit;\r\n font-size: 14px;\r\n padding: 12px;\r\n cursor: pointer;\r\n outline: none;\r\n appearance: none; /* Remove default styling */\r\n -webkit-appearance: none; /* Remove default styling for Safari */\r\n }\r\n\r\n .tool-bar select:hover,\r\n .tool-bar select:focus {\r\n background-color: var(--ui-background-color-hover);\r\n }\r\n\r\n .tool-bar select option {\r\n background-color: var(--ui-background-color);\r\n color: var(--ui-foreground-color);\r\n }\r\n\r\n .tool-bar select:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n .tool-bar button {\r\n background: none;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n color: inherit;\r\n padding: 0;\r\n cursor: pointer;\r\n outline: none;\r\n }\r\n\r\n .tool-bar button:hover {\r\n background-color: var(--ui-background-color-hover);\r\n }\r\n\r\n .tool-bar button:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n .tool-bar button svg {\r\n width: 32px;\r\n height: 32px;\r\n }\r\n\r\n .progress-control {\r\n display: flex;\r\n flex: 1;\r\n position: relative;\r\n overflow: hidden;\r\n cursor: pointer;\r\n align-items: center;\r\n border-radius: inherit;\r\n border-color: inherit;\r\n }\r\n\r\n .progress-wrapper {\r\n -webkit-appearance: none;\r\n cursor: pointer;\r\n width: 100%;\r\n height: 100%;\r\n outline: none;\r\n border: 1px solid transparent;\r\n border-radius: inherit;\r\n padding: 0 12px;\r\n background-color: transparent;\r\n }\r\n\r\n .progress-wrapper:focus-visible {\r\n border-color: inherit;\r\n }\r\n\r\n /*Chrome -webkit */\r\n\r\n .progress-wrapper::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid;\r\n color: var(--ui-foreground-color);\r\n border-radius: 50%;\r\n background: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), 1);\r\n margin-top: -10px;\r\n }\r\n\r\n .progress-wrapper::-webkit-slider-runnable-track {\r\n height: 2px;\r\n -webkit-appearance: none;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n /** FireFox -moz */\r\n\r\n .progress-wrapper::-moz-range-progress {\r\n height: 2px;\r\n background-color: var(--ui-foreground-color);\r\n }\r\n\r\n .progress-wrapper::-moz-range-thumb {\r\n width: 16px;\r\n height: 16px;\r\n border: 2px solid var(--ui-foreground-color);\r\n border-radius: 50%;\r\n background: hsla(var(--ui-background-hue), var(--ui-background-saturation), var(--ui-background-lightness), 1);\r\n }\r\n\r\n .progress-wrapper::-moz-range-track {\r\n height: 2px;\r\n background: var(--ui-foreground-color);\r\n }\r\n `;\r\n\r\n /**\r\n * Gets the underlying viewer details (when the underlying viewer is in a loaded state).\r\n * This is useful for advanced scenarios where direct access to the viewer or Babylon scene is needed.\r\n */\r\n public get viewerDetails() {\r\n return this._viewerDetails;\r\n }\r\n\r\n /**\r\n * Get hotspot world and screen values from a named hotspot\r\n * @param name slot of the hot spot\r\n * @param result resulting world and screen positions\r\n * @returns world and screen space coordinates\r\n */\r\n public queryHotSpot(name: string, result: ViewerHotSpot): boolean {\r\n // Retrieve all hotspots inside the viewer element\r\n let resultFound = false;\r\n // Iterate through each hotspot to get the 'data-surface' and 'data-name' attributes\r\n if (this._viewerDetails) {\r\n const hotspot = this.hotspots?.[name];\r\n if (hotspot) {\r\n resultFound = this._viewerDetails.viewer.getHotSpotToRef(hotspot, result);\r\n }\r\n }\r\n return resultFound;\r\n }\r\n /**\r\n * The engine to use for rendering.\r\n */\r\n @property({ reflect: true })\r\n public engine: NonNullable<CanvasViewerOptions[\"engine\"]> = getDefaultEngine();\r\n\r\n /**\r\n * The model URL.\r\n */\r\n @property({ reflect: true })\r\n public source: Nullable<string> = null;\r\n\r\n /**\r\n * Forces the model to be loaded with the specified extension.\r\n * @remarks\r\n * If this property is not set, the extension will be inferred from the model URL when possible.\r\n */\r\n @property({ reflect: true })\r\n public extension: Nullable<string> = null;\r\n\r\n /**\r\n * The environment URL.\r\n */\r\n @property({ reflect: true })\r\n public environment: Nullable<string> = null;\r\n\r\n /**\r\n * A string value that encodes one or more hotspots.\r\n */\r\n @property({\r\n type: \"string\",\r\n converter: (value) => {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n const array = value.split(/\\s+/);\r\n if (array.length % 8 !== 0) {\r\n throw new Error(\r\n `hotspots should be defined in sets of 8 elements: 'name meshIndex pointIndex1 pointIndex2 pointIndex3 barycentricCoord1 barycentricCoord2 barycentricCoord3', but a total of ${array.length} elements were found in '${value}'`\r\n );\r\n }\r\n\r\n const hotspots: Record<string, ViewerHotSpotQuery> = {};\r\n for (let offset = 0; offset < array.length; offset += 8) {\r\n hotspots[array[offset]] = {\r\n meshIndex: Number(array[offset + 1]),\r\n pointIndex: [Number(array[offset + 2]), Number(array[offset + 3]), Number(array[offset + 4])],\r\n barycentric: [Number(array[offset + 5]), Number(array[offset + 6]), Number(array[offset + 7])],\r\n };\r\n }\r\n return hotspots;\r\n },\r\n })\r\n public hotspots: Nullable<Record<string, ViewerHotSpotQuery>> = null;\r\n\r\n /**\r\n * The list of animation names for the currently loaded model.\r\n */\r\n public get animations(): readonly string[] {\r\n return this._animations;\r\n }\r\n\r\n /**\r\n * The currently selected animation index.\r\n */\r\n public get selectedAnimation(): number {\r\n return this._selectedAnimation;\r\n }\r\n\r\n /**\r\n * True if an animation is currently playing.\r\n */\r\n public get isAnimationPlaying(): boolean {\r\n return this._isAnimationPlaying;\r\n }\r\n\r\n /**\r\n * The speed scale at which animations are played.\r\n */\r\n @property({ attribute: \"animation-speed\", reflect: true })\r\n public animationSpeed = 1;\r\n\r\n /**\r\n * The current point on the selected animation timeline, normalized between 0 and 1.\r\n */\r\n @property({ attribute: false })\r\n public animationProgress = 0;\r\n\r\n @state()\r\n private _animations: string[] = [];\r\n\r\n @state()\r\n private _selectedAnimation = -1;\r\n\r\n @state()\r\n private _isAnimationPlaying = false;\r\n\r\n @query(\"#canvasContainer\")\r\n private _canvasContainer: HTMLDivElement | undefined;\r\n\r\n /**\r\n * Toggles the play/pause animation state if there is a selected animation.\r\n */\r\n public toggleAnimation() {\r\n this._viewerDetails?.viewer.toggleAnimation();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this._setupViewer();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this._tearDownViewer();\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override update(changedProperties: PropertyValues): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.get(\"engine\" satisfies keyof this)) {\r\n this._tearDownViewer();\r\n this._setupViewer();\r\n } else {\r\n if (changedProperties.has(\"animationSpeed\")) {\r\n this._updateAnimationSpeed();\r\n }\r\n\r\n if (changedProperties.has(\"_selectedAnimation\")) {\r\n this._updateSelectedAnimation();\r\n }\r\n\r\n if (changedProperties.has(\"source\" satisfies keyof this)) {\r\n this._updateModel();\r\n }\r\n\r\n if (changedProperties.has(\"environment\" satisfies keyof this)) {\r\n this._updateEnv();\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override render() {\r\n // NOTE: The unnamed 'slot' element holds all child elements of the <babylon-viewer> that do not specify a 'slot' attribute.\r\n return html`\r\n <div class=\"full-size\">\r\n <div id=\"canvasContainer\" class=\"full-size\"></div>\r\n <slot class=\"full-size children-slot\"></slot>\r\n ${this.animations.length === 0\r\n ? \"\"\r\n : html`\r\n <slot name=\"tool-bar\">\r\n <div part=\"tool-bar\" class=\"tool-bar\">\r\n <div class=\"progress-control\">\r\n <button aria-label=\"${this.isAnimationPlaying ? \"Pause\" : \"Play\"}\" @click=\"${this.toggleAnimation}\">\r\n ${!this.isAnimationPlaying\r\n ? html`<svg viewBox=\"0 0 20 20\">\r\n <path d=\"${playFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>`\r\n : html`<svg viewBox=\"-3 -2 24 24\">\r\n <path d=\"${pauseFilledIcon}\" fill=\"currentColor\"></path>\r\n </svg>`}\r\n </button>\r\n <input\r\n aria-label=\"Animation Progress\"\r\n class=\"progress-wrapper\"\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.0001\"\r\n .value=\"${this.animationProgress}\"\r\n @input=\"${this._onProgressChanged}\"\r\n @pointerdown=\"${this._onProgressPointerDown}\"\r\n />\r\n </div>\r\n <select aria-label=\"Select Animation Speed\" @change=\"${this._onAnimationSpeedChanged}\">\r\n ${allowedAnimationSpeeds.map((speed) => html`<option value=\"${speed}\" .selected=\"${this.animationSpeed === speed}\">${speed}x</option>`)}\r\n </select>\r\n ${this.animations.length > 1\r\n ? html`<select aria-label=\"Select Animation\" @change=\"${this._onSelectedAnimationChanged}\">\r\n ${this.animations.map((name, index) => html`<option value=\"${index}\" .selected=\"${this.selectedAnimation == index}\">${name}</option>`)}\r\n </select>`\r\n : \"\"}\r\n </div>\r\n </slot>\r\n `}\r\n </div>\r\n `;\r\n }\r\n\r\n // eslint-disable-next-line babylonjs/available\r\n override addEventListener<K extends keyof HTML3DElementEventMap>(\r\n type: K,\r\n listener: (this: HTMLElement, ev: HTML3DElementEventMap[K]) => any,\r\n options?: boolean | AddEventListenerOptions\r\n ): void;\r\n override addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void {\r\n super.addEventListener(type as string, listener as EventListenerOrEventListenerObject, options as boolean | AddEventListenerOptions);\r\n }\r\n\r\n private _dispatchCustomEvent<TEvent extends keyof HTML3DElementEventMap>(type: TEvent, event: (type: TEvent) => HTML3DElementEventMap[TEvent]) {\r\n this.dispatchEvent(event(type));\r\n }\r\n\r\n private _onSelectedAnimationChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this._selectedAnimation = Number(selectElement.value);\r\n }\r\n\r\n private _onAnimationSpeedChanged(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n this.animationSpeed = Number(selectElement.value);\r\n }\r\n\r\n private _onProgressChanged(event: Event) {\r\n if (this._viewerDetails) {\r\n const input = event.target as HTMLInputElement;\r\n const value = Number(input.value);\r\n if (value !== this.animationProgress) {\r\n this._viewerDetails.viewer.animationProgress = value;\r\n }\r\n }\r\n }\r\n\r\n private _onProgressPointerDown(event: Event) {\r\n if (this._viewerDetails?.viewer.isAnimationPlaying) {\r\n this._viewerDetails.viewer.pauseAnimation();\r\n const input = event.target as HTMLInputElement;\r\n input.addEventListener(\"pointerup\", () => this._viewerDetails?.viewer.playAnimation(), { once: true });\r\n }\r\n }\r\n\r\n private async _setupViewer() {\r\n await this._viewerLock.lockAsync(async () => {\r\n // The first time the element is connected, the canvas container may not be available yet.\r\n // Wait for the first update if needed.\r\n if (!this._canvasContainer) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this._canvasContainer && !this._viewerDetails) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.className = \"full-size\";\r\n canvas.setAttribute(\"touch-action\", \"none\");\r\n this._canvasContainer.appendChild(canvas);\r\n\r\n await createViewerForCanvas(canvas, {\r\n engine: this.engine,\r\n onInitialized: (details) => {\r\n this._viewerDetails = details;\r\n\r\n details.viewer.onEnvironmentChanged.add(() => {\r\n this._dispatchCustomEvent(\"environmentchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onEnvironmentError.add((error) => {\r\n this._dispatchCustomEvent(\"environmenterror\", (type) => new ErrorEvent(type, { error }));\r\n });\r\n\r\n details.viewer.onModelChanged.add(() => {\r\n this._animations = [...details.viewer.animations];\r\n this._dispatchCustomEvent(\"modelchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onModelError.add((error) => {\r\n this._animations = [...details.viewer.animations];\r\n this._dispatchCustomEvent(\"modelerror\", (type) => new ErrorEvent(type, { error }));\r\n });\r\n\r\n details.viewer.onSelectedAnimationChanged.add(() => {\r\n this._selectedAnimation = details.viewer.selectedAnimation ?? -1;\r\n this._dispatchCustomEvent(\"selectedanimationchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onAnimationSpeedChanged.add(() => {\r\n let speed = details.viewer.animationSpeed ?? 1;\r\n speed = allowedAnimationSpeeds.reduce((prev, curr) => (Math.abs(curr - speed) < Math.abs(prev - speed) ? curr : prev));\r\n this.animationSpeed = speed;\r\n this._dispatchCustomEvent(\"animationspeedchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onIsAnimationPlayingChanged.add(() => {\r\n this._isAnimationPlaying = details.viewer.isAnimationPlaying ?? false;\r\n this._dispatchCustomEvent(\"animationplayingchange\", (type) => new Event(type));\r\n });\r\n\r\n details.viewer.onAnimationProgressChanged.add(() => {\r\n this.animationProgress = details.viewer.animationProgress ?? 0;\r\n this._dispatchCustomEvent(\"animationprogresschange\", (type) => new Event(type));\r\n });\r\n\r\n this._updateSelectedAnimation();\r\n this._updateAnimationSpeed();\r\n this._updateModel();\r\n this._updateEnv();\r\n\r\n this._dispatchCustomEvent(\"viewerready\", (type) => new Event(type));\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n private async _tearDownViewer() {\r\n await this._viewerLock.lockAsync(async () => {\r\n if (this._viewerDetails) {\r\n this._viewerDetails.viewer.dispose();\r\n this._viewerDetails = undefined;\r\n }\r\n\r\n // We want to replace the canvas for two reasons:\r\n // 1. When the viewer element is reconnected to the DOM, we don't want to briefly see the last frame of the previous model.\r\n // 2. If we are changing engines (e.g. WebGL to WebGPU), we need to create a new canvas for the new engine.\r\n if (this._canvasContainer && this._canvasContainer.firstElementChild) {\r\n this._canvasContainer.removeChild(this._canvasContainer.firstElementChild);\r\n }\r\n });\r\n }\r\n\r\n private _updateAnimationSpeed() {\r\n if (this._viewerDetails) {\r\n this._viewerDetails.viewer.animationSpeed = this.animationSpeed;\r\n }\r\n }\r\n\r\n private _updateSelectedAnimation() {\r\n if (this._viewerDetails) {\r\n this._viewerDetails.viewer.selectedAnimation = this._selectedAnimation;\r\n }\r\n }\r\n\r\n private async _updateModel() {\r\n try {\r\n if (this.source) {\r\n await this._viewerDetails?.viewer.loadModel(this.source, { pluginExtension: this.extension ?? undefined });\r\n } else {\r\n await this._viewerDetails?.viewer.resetModel();\r\n }\r\n } catch (error) {\r\n Logger.Log(error);\r\n }\r\n }\r\n\r\n private async _updateEnv() {\r\n try {\r\n if (this.environment) {\r\n await this._viewerDetails?.viewer.loadEnvironment(this.environment);\r\n } else {\r\n await this._viewerDetails?.viewer.resetEnvironment();\r\n }\r\n } catch (error) {\r\n Logger.Log(error);\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,34 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@babylonjs/viewer",
|
|
3
|
-
"version": "7.30.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
3
|
+
"version": "7.30.1-alpha",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"module": "lib/index.js",
|
|
7
|
+
"esnext": "lib/index.js",
|
|
8
|
+
"types": "lib/index.d.ts",
|
|
7
9
|
"files": [
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
10
|
+
"lib/**/*.js",
|
|
11
|
+
"lib/**/*.d.ts",
|
|
12
|
+
"lib/**/*.map",
|
|
13
|
+
"dist/**/*.js",
|
|
14
|
+
"dist/**/*.map",
|
|
15
|
+
"assets/**",
|
|
11
16
|
"readme.md",
|
|
17
|
+
"docs/**",
|
|
12
18
|
"license.md"
|
|
13
19
|
],
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "npm run clean && npm run compile",
|
|
16
|
-
"clean": "rimraf dist && rimraf *.tsbuildinfo -g && rimraf \"./**/*.!(md|json|build.json)\" -g",
|
|
17
|
-
"compile": "tsc -b tsconfig.build.json --verbose",
|
|
18
|
-
"postcompile": "build-tools -c add-js-to-es6"
|
|
19
|
-
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"
|
|
22
|
-
"@babylonjs/loaders": "^7.30.0",
|
|
23
|
-
"babylonjs-gltf2interface": "^7.30.0",
|
|
24
|
-
"babylonjs-viewer-assets": "^7.30.0",
|
|
25
|
-
"deepmerge": "~4.2.2",
|
|
26
|
-
"handlebars": "~4.7.7",
|
|
27
|
-
"pepjs": "~0.5.3",
|
|
28
|
-
"tslib": "^2.4.0"
|
|
21
|
+
"lit": "^3.2.0"
|
|
29
22
|
},
|
|
30
|
-
"
|
|
31
|
-
"@
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"@babylonjs/core": "^7.23.1",
|
|
25
|
+
"@babylonjs/loaders": "^7.23.1"
|
|
32
26
|
},
|
|
33
27
|
"keywords": [
|
|
34
28
|
"3D",
|
|
@@ -38,9 +32,6 @@
|
|
|
38
32
|
"babylon.js"
|
|
39
33
|
],
|
|
40
34
|
"license": "Apache-2.0",
|
|
41
|
-
"esnext": "index.js",
|
|
42
|
-
"type": "module",
|
|
43
|
-
"sideEffects": true,
|
|
44
35
|
"homepage": "https://www.babylonjs.com",
|
|
45
36
|
"repository": {
|
|
46
37
|
"type": "git",
|
|
@@ -49,4 +40,4 @@
|
|
|
49
40
|
"bugs": {
|
|
50
41
|
"url": "https://github.com/BabylonJS/Babylon.js/issues"
|
|
51
42
|
}
|
|
52
|
-
}
|
|
43
|
+
}
|
package/readme.md
CHANGED
|
@@ -1,40 +1,164 @@
|
|
|
1
1
|
# BabylonJS Viewer
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Online docs: https://doc.babylonjs.com/features/featuresDeepDive/babylonViewer/viewerExamples
|
|
3
|
+
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
`Viewer` is a lower level JavaScript class that implements the bulk of the features, and can be used in any babylonjs context (in the browser using pure HTML, in the browser using React, or even in Babylon Native).
|
|
8
|
+
|
|
9
|
+
`HTML3DElement` is a custom HTML element that wraps the `Viewer` class and provides a declarative way to use it specifically in HTML via the custom element `<babylon-viewer>`.
|
|
10
|
+
|
|
11
|
+
## Using with a Bundler
|
|
7
12
|
|
|
8
13
|
Install the package using npm:
|
|
9
14
|
|
|
10
15
|
```bash
|
|
11
|
-
npm install @babylonjs/viewer --save
|
|
16
|
+
npm install @babylonjs/viewer@preview --save
|
|
12
17
|
```
|
|
13
18
|
|
|
14
|
-
|
|
19
|
+
If you want to use the lower level `Viewer` directly in JavaScript code, you can import it and use it like this:
|
|
15
20
|
|
|
16
21
|
```bash
|
|
17
|
-
import
|
|
22
|
+
import { Engine } from '@babylonjs/core';
|
|
23
|
+
import { Viewer } from '@babylonjs/viewer';
|
|
24
|
+
|
|
25
|
+
const engine = new Engine(canvas);
|
|
26
|
+
const viewer = new Viewer(engine);
|
|
27
|
+
viewer.loadModel("https://playground.babylonjs.com/scenes/BoomBox.glb");
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
To use the higher level `HTML3DElement` you can import the `@babylonjs/viewer` module and then reference the `<babylon-viewer>` element in your HTML like this:
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<html lang="en">
|
|
34
|
+
<body>
|
|
35
|
+
<!-- If you already import @babylonjs/viewer somewhere in your JavaScript, you don't need this script import. -->
|
|
36
|
+
<script type="module">
|
|
37
|
+
import '@babylonjs/viewer';
|
|
38
|
+
</script>
|
|
39
|
+
<babylon-viewer source="https://playground.babylonjs.com/scenes/BoomBox.glb"></babylon-viewer>
|
|
40
|
+
</body>
|
|
41
|
+
</html>
|
|
18
42
|
```
|
|
19
43
|
|
|
20
|
-
|
|
44
|
+
## Using Directly in a Browser
|
|
45
|
+
|
|
46
|
+
If you want to use the viewer directly in a browser without any build tools, you can use the self-contained ESM bundle (which includes all dependencies) through a CDN such as [UNPKG](https://unpkg.com/) or [jsDelivr](https://www.jsdelivr.com/) like this:
|
|
21
47
|
|
|
22
48
|
```html
|
|
23
|
-
<
|
|
49
|
+
<html lang="en">
|
|
50
|
+
<body>
|
|
51
|
+
<script type="module" src="https://unpkg.com/@babylonjs/viewer@preview/dist/babylon-viewer.esm.min.js"></script>
|
|
52
|
+
<babylon-viewer source="https://playground.babylonjs.com/scenes/BoomBox.glb"></babylon-viewer>
|
|
53
|
+
</body>
|
|
54
|
+
</html>
|
|
24
55
|
```
|
|
25
56
|
|
|
26
|
-
|
|
57
|
+
See the [codesandbox.io](https://codesandbox.io/p/sandbox/babylon-viewer-ws82xr) example for a live demo.
|
|
58
|
+
|
|
59
|
+
## Features
|
|
60
|
+
|
|
61
|
+
The Babylon Viewer is under active development and new features are continuously being added. You can request a specific feature in the [Babylon Forum](https://forum.babylonjs.com/c/features/11).
|
|
62
|
+
|
|
63
|
+
**⚠️ NOTE**: While the Babylon Viewer is production ready in terms of performance, reliability, etc., the `@preview` tag and `-alpha` suffix are used to indicate that the API is still subject to change.
|
|
27
64
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
65
|
+
### Formats, Capabilities, and Dynamic Imports
|
|
66
|
+
|
|
67
|
+
The Babylon Viewer supports all the formats that Babylon.js supports, as well as many capabilities such as animation and audio. However, the Babylon Viewer (with support from various Babylon.js libraries) uses dynamic imports to defer loading formats and capabilities until a model is loaded of a specific type or that uses a specific capability. This reduces the download burden on the end user and reduces the time to get something on the screen.
|
|
68
|
+
|
|
69
|
+
### Advanced Usage and Customization
|
|
70
|
+
|
|
71
|
+
While the Babylon Viewer is specifically designed to make viewing a single 3D model easy, it also exposes the underlying Babylon.js components so that you can customize it for your specific scenario and needs.
|
|
72
|
+
|
|
73
|
+
The `HTML3DElement` exposes a `viewerDetails` property and a `viewerready` event that you can use to access the underlying `Viewer` object, the `Scene` object, and the loaded model (`AssetContainer`).
|
|
74
|
+
|
|
75
|
+
### WebGL and WebGPU
|
|
76
|
+
|
|
77
|
+
`HTML3DElement` will choose an underlying engine by default, and how it chooses will change over time. You can use the `engine` attribute to specify a specific engine, such as `WebGL` or `WebGPU`.
|
|
78
|
+
|
|
79
|
+
### Lighting / Environment
|
|
80
|
+
|
|
81
|
+
A Babylon.js environment file can be applied to the a `<babylon-viewer>` through the `environment` attribute. For example:
|
|
82
|
+
|
|
83
|
+
```html
|
|
84
|
+
<babylon-viewer
|
|
85
|
+
source="https://playground.babylonjs.com/scenes/BoomBox.glb"
|
|
86
|
+
environment="https://unpkg.com/@babylonjs/viewer@preview/assets/photoStudio.env">
|
|
87
|
+
</babylon-viewer>
|
|
40
88
|
```
|
|
89
|
+
|
|
90
|
+
The environment is automatically used as the skybox, and also used for image-based lighting (IBL) when a model is loaded that uses PBR materials (such as glTF), unless the model provides its own lights. When IBL is not used and the model does not provide its own lights, default lighting is applied using Babylon.js lights.
|
|
91
|
+
|
|
92
|
+
### Styling
|
|
93
|
+
|
|
94
|
+
`HTML3DElement` includes default UI for various capabilities, such as animation. You can customize the UI in a number of ways:
|
|
95
|
+
|
|
96
|
+
#### CSS Variables
|
|
97
|
+
|
|
98
|
+
Various CSS variables can be set to customize the appearance of the viewer. These variables are applied to the `babylon-viewer` element and are inherited by all UI elements within the viewer.
|
|
99
|
+
|
|
100
|
+
| Variable | Description |
|
|
101
|
+
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
102
|
+
| `--ui-foreground-color` | The default color for the foreground of all UI elements. |
|
|
103
|
+
| `--ui-background-hue` | The default hue for the background of all UI elements. |
|
|
104
|
+
| `--ui-background-saturation` | The default saturation for the background of all UI elements. |
|
|
105
|
+
| `--ui-background-lightness` | The default lightness for the background of all UI elements. |
|
|
106
|
+
| `--ui-background-opacity` | The default opacity for the background of all UI elements. |
|
|
107
|
+
| `--ui-background-color` | The default color for the background of all UI elements (derived from the background hue, saturation, lightness, and opacity). |
|
|
108
|
+
| `--ui-background-color-hover` | The default color for the background of all UI elements when hovered (derived from the background hue, saturation, lightness, and opacity). |
|
|
109
|
+
|
|
110
|
+
As an example, if you wanted UI elements with a moderately saturated bluish background, you could apply the following CSS variables on the `babylon-viewer` element:
|
|
111
|
+
|
|
112
|
+
```css
|
|
113
|
+
babylon-viewer {
|
|
114
|
+
--ui-background-hue: 200;
|
|
115
|
+
--ui-background-saturation: 70%;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+

|
|
120
|
+
|
|
121
|
+
#### Parts
|
|
122
|
+
|
|
123
|
+
Various parts of the viewer can be styled using CSS part selectors. The following parts are available:
|
|
124
|
+
|
|
125
|
+
| Part Name | Description |
|
|
126
|
+
| ---------- | ---------------------------------------- |
|
|
127
|
+
| `tool-bar` | The toolbar used for animation controls. |
|
|
128
|
+
|
|
129
|
+
As an example, if you wanted to style the toolbar to move it to the top and remove the rounded corners and margin, you could apply the following CSS on the `babylon-viewer` element:
|
|
130
|
+
|
|
131
|
+
```css
|
|
132
|
+
babylon-viewer::part(tool-bar) {
|
|
133
|
+
border-radius: 0;
|
|
134
|
+
left: 0;
|
|
135
|
+
right: 0;
|
|
136
|
+
bottom: unset;
|
|
137
|
+
top: 0;
|
|
138
|
+
width: unset;
|
|
139
|
+
max-width: unset;
|
|
140
|
+
transform: unset;
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+

|
|
145
|
+
|
|
146
|
+
#### Slots
|
|
147
|
+
|
|
148
|
+
Various slots are defined that allow entire sections of the UI to be replaced. The following slots are available:
|
|
149
|
+
|
|
150
|
+
| Slot Name | Description |
|
|
151
|
+
| ---------- | ---------------------------------------- |
|
|
152
|
+
| `tool-bar` | The toolbar used for animation controls. |
|
|
153
|
+
|
|
154
|
+
As an example, if you wanted to replace the toolbar with a custom button that just toggles animation play/pause state, you could do so with the following:
|
|
155
|
+
|
|
156
|
+
```html
|
|
157
|
+
<babylon-viewer source="https://raw.githubusercontent.com/BabylonJS/Assets/master/meshes/ufo.glb">
|
|
158
|
+
<div slot="tool-bar" style="position: absolute; top: 12px; left: 12px; width: 100px; height: 36px">
|
|
159
|
+
<button onclick="document.querySelector('babylon-viewer').toggleAnimation()">Toggle Animation</button>
|
|
160
|
+
</div>
|
|
161
|
+
</babylon-viewer>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+

|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import type { IEnvironmentMapConfiguration } from "./interfaces/environmentMapConfiguration";
|
|
2
|
-
import type { EngineOptions } from "@babylonjs/core/Engines/thinEngine.js";
|
|
3
|
-
import type { IObserversConfiguration } from "./interfaces/observersConfiguration";
|
|
4
|
-
import type { IModelConfiguration } from "./interfaces/modelConfiguration";
|
|
5
|
-
import type { ISceneConfiguration } from "./interfaces/sceneConfiguration";
|
|
6
|
-
import type { ISceneOptimizerConfiguration } from "./interfaces/sceneOptimizerConfiguration";
|
|
7
|
-
import type { ICameraConfiguration } from "./interfaces/cameraConfiguration";
|
|
8
|
-
import type { ISkyboxConfiguration } from "./interfaces/skyboxConfiguration";
|
|
9
|
-
import type { IGroundConfiguration } from "./interfaces/groundConfiguration";
|
|
10
|
-
import type { ILightConfiguration } from "./interfaces/lightConfiguration";
|
|
11
|
-
import type { ITemplateConfiguration } from "./interfaces/templateConfiguration";
|
|
12
|
-
import type { IVRConfiguration } from "./interfaces/vrConfiguration";
|
|
13
|
-
import type { IDefaultRenderingPipelineConfiguration } from "./interfaces/defaultRenderingPipelineConfiguration";
|
|
14
|
-
export declare function getConfigurationKey(key: string, configObject: any): any;
|
|
15
|
-
export interface ViewerConfiguration {
|
|
16
|
-
version?: string;
|
|
17
|
-
extends?: string;
|
|
18
|
-
pageUrl?: string;
|
|
19
|
-
configuration?: string | {
|
|
20
|
-
url?: string;
|
|
21
|
-
payload?: any;
|
|
22
|
-
mapper?: string;
|
|
23
|
-
};
|
|
24
|
-
observers?: IObserversConfiguration;
|
|
25
|
-
canvasElement?: string;
|
|
26
|
-
model?: IModelConfiguration | string;
|
|
27
|
-
scene?: ISceneConfiguration;
|
|
28
|
-
optimizer?: ISceneOptimizerConfiguration | boolean;
|
|
29
|
-
camera?: ICameraConfiguration;
|
|
30
|
-
skybox?: boolean | ISkyboxConfiguration;
|
|
31
|
-
ground?: boolean | IGroundConfiguration;
|
|
32
|
-
lights?: {
|
|
33
|
-
[name: string]: number | boolean | ILightConfiguration;
|
|
34
|
-
};
|
|
35
|
-
engine?: {
|
|
36
|
-
renderInBackground?: boolean;
|
|
37
|
-
antialiasing?: boolean;
|
|
38
|
-
disableResize?: boolean;
|
|
39
|
-
engineOptions?: EngineOptions;
|
|
40
|
-
adaptiveQuality?: boolean;
|
|
41
|
-
hdEnabled?: boolean;
|
|
42
|
-
};
|
|
43
|
-
templates?: {
|
|
44
|
-
main: ITemplateConfiguration;
|
|
45
|
-
[key: string]: ITemplateConfiguration;
|
|
46
|
-
};
|
|
47
|
-
customShaders?: {
|
|
48
|
-
shaders?: {
|
|
49
|
-
[key: string]: string;
|
|
50
|
-
};
|
|
51
|
-
includes?: {
|
|
52
|
-
[key: string]: string;
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
loaderPlugins?: {
|
|
56
|
-
extendedMaterial?: boolean;
|
|
57
|
-
msftLod?: boolean;
|
|
58
|
-
telemetry?: boolean;
|
|
59
|
-
minecraft?: boolean;
|
|
60
|
-
[propName: string]: boolean | undefined;
|
|
61
|
-
};
|
|
62
|
-
environmentMap?: IEnvironmentMapConfiguration;
|
|
63
|
-
vr?: IVRConfiguration;
|
|
64
|
-
"3dCommerceCertified"?: boolean;
|
|
65
|
-
lab?: {
|
|
66
|
-
flashlight?: boolean | {
|
|
67
|
-
exponent?: number;
|
|
68
|
-
angle?: number;
|
|
69
|
-
intensity?: number;
|
|
70
|
-
diffuse?: {
|
|
71
|
-
r: number;
|
|
72
|
-
g: number;
|
|
73
|
-
b: number;
|
|
74
|
-
};
|
|
75
|
-
specular?: {
|
|
76
|
-
r: number;
|
|
77
|
-
g: number;
|
|
78
|
-
b: number;
|
|
79
|
-
};
|
|
80
|
-
};
|
|
81
|
-
hideLoadingDelay?: number;
|
|
82
|
-
/** @deprecated */
|
|
83
|
-
assetsRootURL?: string;
|
|
84
|
-
environmentMainColor?: {
|
|
85
|
-
r: number;
|
|
86
|
-
g: number;
|
|
87
|
-
b: number;
|
|
88
|
-
};
|
|
89
|
-
/** @deprecated */
|
|
90
|
-
environmentMap?: {
|
|
91
|
-
/**
|
|
92
|
-
* Environment map texture path in relative to the asset folder.
|
|
93
|
-
*/
|
|
94
|
-
texture: string;
|
|
95
|
-
/**
|
|
96
|
-
* Default rotation to apply to the environment map.
|
|
97
|
-
*/
|
|
98
|
-
rotationY: number;
|
|
99
|
-
/**
|
|
100
|
-
* Tint level of the main color on the environment map.
|
|
101
|
-
*/
|
|
102
|
-
tintLevel: number;
|
|
103
|
-
};
|
|
104
|
-
defaultRenderingPipelines?: boolean | IDefaultRenderingPipelineConfiguration;
|
|
105
|
-
globalLightRotation?: number;
|
|
106
|
-
};
|
|
107
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export function getConfigurationKey(key, configObject) {
|
|
2
|
-
var splits = key.split(".");
|
|
3
|
-
if (splits.length === 0 || !configObject) {
|
|
4
|
-
return;
|
|
5
|
-
}
|
|
6
|
-
else if (splits.length === 1) {
|
|
7
|
-
if (configObject[key] !== undefined) {
|
|
8
|
-
return configObject[key];
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
var firstKey = splits.shift();
|
|
13
|
-
return getConfigurationKey(splits.join("."), configObject[firstKey]);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=configuration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../../tools/viewer/src/configuration/configuration.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,YAAiB;IAC9D,IAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE;QACtC,OAAO;KACV;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACjC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;SAC5B;KACJ;SAAM;QACH,IAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,QAAS,CAAC,CAAC,CAAC;KACzE;AACL,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { IEnvironmentMapConfiguration } from \"./interfaces/environmentMapConfiguration\";\r\nimport type { EngineOptions } from \"core/Engines/thinEngine\";\r\nimport type { IObserversConfiguration } from \"./interfaces/observersConfiguration\";\r\nimport type { IModelConfiguration } from \"./interfaces/modelConfiguration\";\r\nimport type { ISceneConfiguration } from \"./interfaces/sceneConfiguration\";\r\nimport type { ISceneOptimizerConfiguration } from \"./interfaces/sceneOptimizerConfiguration\";\r\nimport type { ICameraConfiguration } from \"./interfaces/cameraConfiguration\";\r\nimport type { ISkyboxConfiguration } from \"./interfaces/skyboxConfiguration\";\r\nimport type { IGroundConfiguration } from \"./interfaces/groundConfiguration\";\r\nimport type { ILightConfiguration } from \"./interfaces/lightConfiguration\";\r\nimport type { ITemplateConfiguration } from \"./interfaces/templateConfiguration\";\r\nimport type { IVRConfiguration } from \"./interfaces/vrConfiguration\";\r\nimport type { IDefaultRenderingPipelineConfiguration } from \"./interfaces/defaultRenderingPipelineConfiguration\";\r\n\r\nexport function getConfigurationKey(key: string, configObject: any): any {\r\n const splits = key.split(\".\");\r\n\r\n if (splits.length === 0 || !configObject) {\r\n return;\r\n } else if (splits.length === 1) {\r\n if (configObject[key] !== undefined) {\r\n return configObject[key];\r\n }\r\n } else {\r\n const firstKey = splits.shift();\r\n return getConfigurationKey(splits.join(\".\"), configObject[firstKey!]);\r\n }\r\n}\r\n\r\nexport interface ViewerConfiguration {\r\n // configuration version\r\n version?: string;\r\n extends?: string; // is this configuration extending an existing configuration?\r\n\r\n pageUrl?: string; // will be used for sharing and other fun stuff. This is the page showing the model (not the model's url!)\r\n\r\n configuration?:\r\n | string\r\n | {\r\n url?: string;\r\n payload?: any;\r\n mapper?: string; // json (default), html, yaml, xml, etc'. if not provided, file extension will be used.\r\n };\r\n\r\n // names of functions in the window context.\r\n observers?: IObserversConfiguration;\r\n\r\n canvasElement?: string; // if there is a need to override the standard implementation - ID of HTMLCanvasElement\r\n\r\n model?: IModelConfiguration | string;\r\n\r\n scene?: ISceneConfiguration;\r\n optimizer?: ISceneOptimizerConfiguration | boolean;\r\n // at the moment, support only a single camera.\r\n camera?: ICameraConfiguration;\r\n skybox?: boolean | ISkyboxConfiguration;\r\n\r\n ground?: boolean | IGroundConfiguration;\r\n lights?: {\r\n //globalRotation: number,\r\n [name: string]: number | boolean | ILightConfiguration;\r\n };\r\n // engine configuration. optional!\r\n engine?: {\r\n renderInBackground?: boolean;\r\n antialiasing?: boolean;\r\n disableResize?: boolean;\r\n engineOptions?: EngineOptions;\r\n adaptiveQuality?: boolean;\r\n hdEnabled?: boolean;\r\n };\r\n //templateStructure?: ITemplateStructure,\r\n templates?: {\r\n main: ITemplateConfiguration;\r\n [key: string]: ITemplateConfiguration;\r\n };\r\n\r\n customShaders?: {\r\n shaders?: {\r\n [key: string]: string;\r\n };\r\n includes?: {\r\n [key: string]: string;\r\n };\r\n };\r\n\r\n loaderPlugins?: {\r\n extendedMaterial?: boolean;\r\n msftLod?: boolean;\r\n telemetry?: boolean;\r\n minecraft?: boolean;\r\n\r\n [propName: string]: boolean | undefined;\r\n };\r\n\r\n environmentMap?: IEnvironmentMapConfiguration;\r\n\r\n vr?: IVRConfiguration;\r\n \"3dCommerceCertified\"?: boolean;\r\n\r\n // features that are being tested.\r\n // those features' syntax will change and move out!\r\n // Don't use in production (or be ready to make the changes :) )\r\n lab?: {\r\n flashlight?:\r\n | boolean\r\n | {\r\n exponent?: number;\r\n angle?: number;\r\n intensity?: number;\r\n diffuse?: { r: number; g: number; b: number };\r\n specular?: { r: number; g: number; b: number };\r\n };\r\n hideLoadingDelay?: number;\r\n /** @deprecated */\r\n assetsRootURL?: string;\r\n environmentMainColor?: { r: number; g: number; b: number };\r\n /** @deprecated */\r\n environmentMap?: {\r\n /**\r\n * Environment map texture path in relative to the asset folder.\r\n */\r\n texture: string;\r\n\r\n /**\r\n * Default rotation to apply to the environment map.\r\n */\r\n rotationY: number;\r\n\r\n /**\r\n * Tint level of the main color on the environment map.\r\n */\r\n tintLevel: number;\r\n };\r\n defaultRenderingPipelines?: boolean | IDefaultRenderingPipelineConfiguration;\r\n globalLightRotation?: number;\r\n };\r\n}\r\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ViewerConfiguration } from "./configuration";
|
|
2
|
-
/**
|
|
3
|
-
* This function will make sure the configuration file is taking deprecated fields into account
|
|
4
|
-
* and is setting them to the correct keys and values.
|
|
5
|
-
*
|
|
6
|
-
* @param configuration The configuration to process. Mutable!
|
|
7
|
-
*/
|
|
8
|
-
export declare function processConfigurationCompatibility(configuration: ViewerConfiguration): void;
|