gitextract_eu8tak94/ ├── .gitignore ├── .npmrc ├── .prettierrc.js ├── CONTRIBUTING.md ├── LEGAL.md ├── LICENSE ├── README.en.md ├── README.md ├── common/ │ └── build/ │ ├── package.json │ ├── src/ │ │ ├── index.ts │ │ ├── plugins/ │ │ │ ├── appConfig.ts │ │ │ ├── compress.ts │ │ │ ├── index.ts │ │ │ └── visualizer.ts │ │ └── utils.ts │ └── tsconfig.json ├── package.json ├── packages/ │ ├── docs/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── package.json │ │ └── src/ │ │ ├── .vuepress/ │ │ │ ├── _bulletin.md │ │ │ ├── client.ts │ │ │ ├── config.ts │ │ │ ├── navbar.ts │ │ │ ├── notes.ts │ │ │ ├── plume.config.ts │ │ │ └── theme/ │ │ │ ├── components/ │ │ │ │ └── Custom.vue │ │ │ ├── shim.d.ts │ │ │ └── styles/ │ │ │ └── custom.css │ │ ├── README.md │ │ └── notes/ │ │ ├── cooperation/ │ │ │ └── README.md │ │ ├── guide/ │ │ │ ├── manual/ │ │ │ │ ├── editor/ │ │ │ │ │ ├── extras/ │ │ │ │ │ │ ├── 动画编辑器.md │ │ │ │ │ │ ├── 日志.md │ │ │ │ │ │ └── 资源中心.md │ │ │ │ │ ├── leftSidebar/ │ │ │ │ │ │ ├── BIM轻量化.md │ │ │ │ │ │ ├── CAD解析预览.md │ │ │ │ │ │ └── 场景树.md │ │ │ │ │ ├── rightSidebar/ │ │ │ │ │ │ ├── Html面板.md │ │ │ │ │ │ ├── 几何.md │ │ │ │ │ │ ├── 动画.md │ │ │ │ │ │ ├── 历史记录.md │ │ │ │ │ │ ├── 后期处理.md │ │ │ │ │ │ ├── 场景图纸.md │ │ │ │ │ │ ├── 场景配置.md │ │ │ │ │ │ ├── 天气.md │ │ │ │ │ │ ├── 对象.md │ │ │ │ │ │ ├── 广告牌.md │ │ │ │ │ │ ├── 材质.md │ │ │ │ │ │ ├── 渲染器配置.md │ │ │ │ │ │ ├── 粒子.md │ │ │ │ │ │ └── 脚本.md │ │ │ │ │ ├── viewport/ │ │ │ │ │ │ ├── 2D图纸.md │ │ │ │ │ │ └── 3D场景.md │ │ │ │ │ ├── 界面.md │ │ │ │ │ └── 顶栏.md │ │ │ │ ├── home/ │ │ │ │ │ ├── 数据中心.md │ │ │ │ │ ├── 设置中心.md │ │ │ │ │ ├── 资源中心.md │ │ │ │ │ └── 项目.md │ │ │ │ └── preview/ │ │ │ │ └── 界面.md │ │ │ ├── plugins/ │ │ │ │ ├── builtin/ │ │ │ │ │ └── glTFHandler.md │ │ │ │ ├── 入门.md │ │ │ │ └── 插件开发.md │ │ │ └── quick-start/ │ │ │ ├── 介绍.md │ │ │ ├── 安装.md │ │ │ ├── 部署.md │ │ │ └── 项目结构.md │ │ ├── more/ │ │ │ └── questions.md │ │ ├── promotion/ │ │ │ └── README.md │ │ └── sdk/ │ │ └── README.md │ ├── editor/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── components.d.ts │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ ├── libs/ │ │ │ │ └── draco/ │ │ │ │ ├── draco_decoder.js │ │ │ │ ├── draco_decoder.wasm │ │ │ │ ├── draco_decoder_gltf.js │ │ │ │ ├── draco_decoder_gltf.wasm │ │ │ │ ├── draco_encoder.js │ │ │ │ ├── draco_encoder.wasm │ │ │ │ ├── draco_encoder_wrapper.js │ │ │ │ ├── draco_wasm_wrapper.js │ │ │ │ └── draco_wasm_wrapper_gltf.js │ │ │ ├── robots.txt │ │ │ ├── static/ │ │ │ │ ├── model/ │ │ │ │ │ ├── animal/ │ │ │ │ │ │ └── Rat_astral3d.optimize.glb │ │ │ │ │ ├── building/ │ │ │ │ │ │ └── Stall_astral3d.optimize.glb │ │ │ │ │ ├── furniture/ │ │ │ │ │ │ ├── Sofa_astral3d.optimize.glb │ │ │ │ │ │ └── WoodenStool_astral3d.optimize.glb │ │ │ │ │ ├── mehicle/ │ │ │ │ │ │ └── Drill_astral3d.optimize.glb │ │ │ │ │ ├── other/ │ │ │ │ │ │ └── Baseball_astral3d.optimize.glb │ │ │ │ │ ├── outdoor/ │ │ │ │ │ │ └── WoodenDiningTable_astral3d.optimize.glb │ │ │ │ │ ├── person/ │ │ │ │ │ │ └── Jackie.glb │ │ │ │ │ ├── plant/ │ │ │ │ │ │ ├── DragonSpruce_astral3d.optimize.glb │ │ │ │ │ │ ├── Grass_astral3d.optimize.glb │ │ │ │ │ │ ├── Lemon_astral3d.optimize.glb │ │ │ │ │ │ ├── MapleTree_astral3d.optimize.glb │ │ │ │ │ │ ├── SmallFlower_astral3d.optimize.glb │ │ │ │ │ │ └── SmallTree_astral3d.optimize.glb │ │ │ │ │ └── vehicle/ │ │ │ │ │ └── CoveredCar_astral3d.optimize.glb │ │ │ │ └── resource/ │ │ │ │ ├── hdr/ │ │ │ │ │ └── cloudy.hdr │ │ │ │ ├── htmlPanel/ │ │ │ │ │ └── technology/ │ │ │ │ │ └── factoryEquipment.html │ │ │ │ └── material/ │ │ │ │ └── wallBrick/ │ │ │ │ ├── red_brick/ │ │ │ │ │ └── red_brick_nor_gl_1k.exr │ │ │ │ ├── red_sandstone/ │ │ │ │ │ └── red_sandstone_wall_diff_1k.exr │ │ │ │ └── rustic_stone_wall/ │ │ │ │ └── rustic_stone_wall_02_diff_1k.exr │ │ │ └── wasm/ │ │ │ └── Astral3DglTFHandler.wasm │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── assets/ │ │ │ │ ├── color/ │ │ │ │ │ ├── ChineseColors.json │ │ │ │ │ ├── all_in_one.json │ │ │ │ │ └── recommend.json │ │ │ │ └── less/ │ │ │ │ ├── common.less │ │ │ │ ├── index.less │ │ │ │ ├── reset.less │ │ │ │ └── viewport.cube.less │ │ │ ├── components/ │ │ │ │ ├── code/ │ │ │ │ │ ├── CodeEditor.vue │ │ │ │ │ ├── HtmlPanelCode.vue │ │ │ │ │ ├── JSONEditor.vue │ │ │ │ │ ├── SQLEditor.vue │ │ │ │ │ ├── Script.vue │ │ │ │ │ └── UserData.vue │ │ │ │ ├── drawing/ │ │ │ │ │ ├── Drawing.vue │ │ │ │ │ └── toolbar/ │ │ │ │ │ ├── CAD.vue │ │ │ │ │ ├── CadLayers.vue │ │ │ │ │ └── Image.vue │ │ │ │ ├── es/ │ │ │ │ │ ├── EsContextmenu.vue │ │ │ │ │ ├── EsCubeLoading.vue │ │ │ │ │ ├── EsDocument.vue │ │ │ │ │ ├── EsFormItemHelpLabel.vue │ │ │ │ │ ├── EsInput.vue │ │ │ │ │ ├── EsInputNumber.vue │ │ │ │ │ ├── EsKeyFrame.vue │ │ │ │ │ ├── EsParticleEasing.vue │ │ │ │ │ ├── EsPlugin.vue │ │ │ │ │ ├── EsPopTreeSelect.vue │ │ │ │ │ ├── EsTexture.vue │ │ │ │ │ ├── EsTip.vue │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── EsPluginDialog.vue │ │ │ │ │ ├── EsPluginList.vue │ │ │ │ │ └── builtin/ │ │ │ │ │ ├── EarthGenerator.vue │ │ │ │ │ ├── GLTFHandler.vue │ │ │ │ │ ├── PointCloudReconstructor.vue │ │ │ │ │ ├── glTFHandler/ │ │ │ │ │ │ └── GLTFHandlerForm.vue │ │ │ │ │ └── pointCloudReconstructor/ │ │ │ │ │ └── ReconstructorForm.vue │ │ │ │ ├── header/ │ │ │ │ │ ├── Logo.vue │ │ │ │ │ ├── NavigationOperation.vue │ │ │ │ │ ├── RightOperation.vue │ │ │ │ │ ├── navigation/ │ │ │ │ │ │ ├── Clear.vue │ │ │ │ │ │ ├── Copy.vue │ │ │ │ │ │ ├── Delete.vue │ │ │ │ │ │ ├── Do.vue │ │ │ │ │ │ ├── Fullscreen.vue │ │ │ │ │ │ └── ImportExport.vue │ │ │ │ │ └── right/ │ │ │ │ │ ├── SaveToService.vue │ │ │ │ │ └── XR.vue │ │ │ │ ├── preview/ │ │ │ │ │ ├── AssetPreview.vue │ │ │ │ │ ├── CommonPreview.vue │ │ │ │ │ └── CommonPreview_backup.vue │ │ │ │ ├── project/ │ │ │ │ │ └── ProjectInfoForm.vue │ │ │ │ ├── setting/ │ │ │ │ │ ├── Setting.vue │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── Color.vue │ │ │ │ │ │ ├── Locale.vue │ │ │ │ │ │ ├── SettingCenter.vue │ │ │ │ │ │ └── Theme.vue │ │ │ │ │ └── components/ │ │ │ │ │ ├── PreviewSetting.vue │ │ │ │ │ ├── SettingTabs.vue │ │ │ │ │ ├── Shortcuts.vue │ │ │ │ │ └── SystemSetting.vue │ │ │ │ └── tree/ │ │ │ │ └── SceneTree.vue │ │ │ ├── config/ │ │ │ │ └── service.ts │ │ │ ├── core/ │ │ │ │ └── AssetPreview.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── useBoolean.ts │ │ │ │ ├── useLoading.ts │ │ │ │ └── useWebSocket.ts │ │ │ ├── http/ │ │ │ │ ├── api/ │ │ │ │ │ ├── assetsCategory.ts │ │ │ │ │ ├── assetsInfo.ts │ │ │ │ │ ├── bim.ts │ │ │ │ │ ├── cad.ts │ │ │ │ │ ├── sceneExample.ts │ │ │ │ │ ├── scenes.ts │ │ │ │ │ └── sys.ts │ │ │ │ └── request/ │ │ │ │ ├── ConcurrencyManager.ts │ │ │ │ ├── index.ts │ │ │ │ ├── instance.ts │ │ │ │ └── request.ts │ │ │ ├── language/ │ │ │ │ ├── index.ts │ │ │ │ └── zh-CN-en-US.ts │ │ │ ├── main.ts │ │ │ ├── plugin/ │ │ │ │ ├── glTFHandler/ │ │ │ │ │ ├── Listr.ts │ │ │ │ │ ├── glTFHandler.ts │ │ │ │ │ ├── optimizePng.ts │ │ │ │ │ ├── session.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── index.ts │ │ │ │ └── pointCloudReconstructor/ │ │ │ │ └── PointCloudReconstructor.ts │ │ │ ├── router/ │ │ │ │ ├── index.ts │ │ │ │ └── routes.ts │ │ │ ├── store/ │ │ │ │ ├── index.ts │ │ │ │ └── modules/ │ │ │ │ ├── animation.ts │ │ │ │ ├── assets.ts │ │ │ │ ├── drag.ts │ │ │ │ ├── globalConfig.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── previewOperation.ts │ │ │ │ └── websocket.ts │ │ │ ├── utils/ │ │ │ │ ├── common/ │ │ │ │ │ ├── base64.ts │ │ │ │ │ ├── color.ts │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── dateTime.ts │ │ │ │ │ ├── file.ts │ │ │ │ │ ├── init.ts │ │ │ │ │ ├── render.ts │ │ │ │ │ ├── scenes.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── verify.ts │ │ │ │ ├── drawing/ │ │ │ │ │ └── drawRect.ts │ │ │ │ ├── preview/ │ │ │ │ │ └── menuOperation.ts │ │ │ │ ├── service/ │ │ │ │ │ ├── error.ts │ │ │ │ │ ├── fetchController.ts │ │ │ │ │ ├── handler.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── msg.ts │ │ │ │ ├── signals/ │ │ │ │ │ └── signalRegister.ts │ │ │ │ └── storage/ │ │ │ │ └── config.ts │ │ │ └── views/ │ │ │ ├── editor/ │ │ │ │ ├── components/ │ │ │ │ │ └── extraPane/ │ │ │ │ │ ├── ExtraPane.vue │ │ │ │ │ ├── animation/ │ │ │ │ │ │ ├── Animation.vue │ │ │ │ │ │ ├── AnimationList.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── log/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── resource/ │ │ │ │ │ ├── builtin/ │ │ │ │ │ │ ├── Billboard.vue │ │ │ │ │ │ ├── Cameras.vue │ │ │ │ │ │ ├── HtmlPanel.vue │ │ │ │ │ │ ├── Lights.vue │ │ │ │ │ │ ├── Materials.vue │ │ │ │ │ │ ├── Models.vue │ │ │ │ │ │ ├── Particles.vue │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── ModelCard.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── public/ │ │ │ │ │ ├── AssetsList.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── index.vue │ │ │ │ └── layouts/ │ │ │ │ ├── Assets.vue │ │ │ │ ├── Footer.vue │ │ │ │ ├── Header.vue │ │ │ │ ├── Scene.vue │ │ │ │ ├── Sidebar.vue │ │ │ │ ├── assets/ │ │ │ │ │ ├── CadLibrary.vue │ │ │ │ │ └── cadLibrary/ │ │ │ │ │ └── CadUploadDialog.vue │ │ │ │ ├── index.ts │ │ │ │ ├── sidebar/ │ │ │ │ │ ├── SidebarAnimations.vue │ │ │ │ │ ├── SidebarBillboard.vue │ │ │ │ │ ├── SidebarDrawing.vue │ │ │ │ │ ├── SidebarEffect.vue │ │ │ │ │ ├── SidebarGeometry.vue │ │ │ │ │ ├── SidebarHistory.vue │ │ │ │ │ ├── SidebarHtmlPanel.vue │ │ │ │ │ ├── SidebarMaterial.vue │ │ │ │ │ ├── SidebarObject.vue │ │ │ │ │ ├── SidebarParticle.vue │ │ │ │ │ ├── SidebarRenderer.vue │ │ │ │ │ ├── SidebarScene.vue │ │ │ │ │ ├── SidebarScript.vue │ │ │ │ │ ├── SidebarWeather.vue │ │ │ │ │ ├── billboard/ │ │ │ │ │ │ ├── Sidebar.Billboard.Image.vue │ │ │ │ │ │ └── Sidebar.Billboard.Text.vue │ │ │ │ │ ├── effect/ │ │ │ │ │ │ ├── Sidebar.Effect.Afterimage.vue │ │ │ │ │ │ ├── Sidebar.Effect.Bokeh.vue │ │ │ │ │ │ ├── Sidebar.Effect.FXAA.vue │ │ │ │ │ │ ├── Sidebar.Effect.Halftone.vue │ │ │ │ │ │ ├── Sidebar.Effect.LUT.vue │ │ │ │ │ │ ├── Sidebar.Effect.Outline.vue │ │ │ │ │ │ ├── Sidebar.Effect.Pixelate.vue │ │ │ │ │ │ └── Sidebar.Effect.UnrealBloom.vue │ │ │ │ │ ├── geometry/ │ │ │ │ │ │ ├── Sidebar.Geometry.BoxGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.BufferGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.CapsuleGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.CircleGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.CylinderGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.DodecahedronGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.ExtrudeGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.IcosahedronGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.LatheGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.Modifiers.vue │ │ │ │ │ │ ├── Sidebar.Geometry.OctahedronGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.PlaneGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.RingGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.ShapeGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.SphereGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.TeapotGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.TetrahedronGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.TorusGeometry.vue │ │ │ │ │ │ ├── Sidebar.Geometry.TorusKnotGeometry.vue │ │ │ │ │ │ └── Sidebar.Geometry.TubeGeometry.vue │ │ │ │ │ ├── material/ │ │ │ │ │ │ ├── SceneAllMaterials.vue │ │ │ │ │ │ ├── SidebarMaterialBooleanProperty.vue │ │ │ │ │ │ ├── SidebarMaterialColorProperty.vue │ │ │ │ │ │ ├── SidebarMaterialConstantProperty.vue │ │ │ │ │ │ ├── SidebarMaterialMapProperty.vue │ │ │ │ │ │ ├── SidebarMaterialNumberProperty.vue │ │ │ │ │ │ ├── SidebarMaterialProgram.vue │ │ │ │ │ │ └── SidebarMaterialRangeValueProperty.vue │ │ │ │ │ ├── particle/ │ │ │ │ │ │ ├── Sidebar.Particle.Attribute.vue │ │ │ │ │ │ ├── Sidebar.Particle.Behaviour.vue │ │ │ │ │ │ ├── Sidebar.Particle.Initializer.vue │ │ │ │ │ │ └── initializer/ │ │ │ │ │ │ ├── Sidebar.Particle.Initializer.Body.vue │ │ │ │ │ │ ├── Sidebar.Particle.Initializer.Velocity.vue │ │ │ │ │ │ └── Sidebar.Particle.Initializer.Zones.vue │ │ │ │ │ ├── renderer/ │ │ │ │ │ │ └── Sidebar.Renderer.CSM.vue │ │ │ │ │ ├── scene/ │ │ │ │ │ │ ├── Sidebar.Scene.ProjectSetting.vue │ │ │ │ │ │ └── Sidebar.Scene.Setting.vue │ │ │ │ │ └── weather/ │ │ │ │ │ ├── Sidebar.Weather.Fog.vue │ │ │ │ │ ├── Sidebar.Weather.Rain.vue │ │ │ │ │ └── Sidebar.Weather.Snow.vue │ │ │ │ └── viewport/ │ │ │ │ ├── BIMProperties.vue │ │ │ │ ├── IFCProperties.vue │ │ │ │ ├── Toolbar.vue │ │ │ │ ├── Viewport.vue │ │ │ │ ├── ViewportCamera.vue │ │ │ │ ├── ViewportInfo.vue │ │ │ │ └── ViewportShading.vue │ │ │ ├── home/ │ │ │ │ ├── assetsCenter/ │ │ │ │ │ ├── AssetsList.vue │ │ │ │ │ ├── UploadAsset.vue │ │ │ │ │ └── components/ │ │ │ │ │ ├── AssetDetail.vue │ │ │ │ │ └── CardAction.vue │ │ │ │ ├── components/ │ │ │ │ │ ├── HeaderCarousel.vue │ │ │ │ │ ├── SidebarBottomInfo.vue │ │ │ │ │ └── SidebarTopInfo.vue │ │ │ │ ├── container/ │ │ │ │ │ ├── AssetsCenter.vue │ │ │ │ │ ├── DataCenter.vue │ │ │ │ │ ├── Project.vue │ │ │ │ │ └── SettingCenter.vue │ │ │ │ ├── index.vue │ │ │ │ └── project/ │ │ │ │ ├── MyProject.vue │ │ │ │ ├── SharedProject.vue │ │ │ │ └── components/ │ │ │ │ ├── CardAction.vue │ │ │ │ ├── CreateProject.vue │ │ │ │ └── ProjectDetail.vue │ │ │ ├── index.vue │ │ │ └── preview/ │ │ │ ├── components/ │ │ │ │ ├── OperationItem.vue │ │ │ │ ├── Operations.vue │ │ │ │ ├── PreviewSceneTree.vue │ │ │ │ └── operationConfigModal/ │ │ │ │ ├── AutoRotate.vue │ │ │ │ ├── ModelExplode.vue │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── assets.d.ts │ │ │ ├── billboard.d.ts │ │ │ ├── bim.d.ts │ │ │ ├── config.d.ts │ │ │ ├── data-source.d.ts │ │ │ ├── drawing.d.ts │ │ │ ├── env.d.ts │ │ │ ├── ignore.d.ts │ │ │ ├── naive-ui.d.ts │ │ │ ├── network.d.ts │ │ │ ├── particle.d.ts │ │ │ ├── plugin.d.ts │ │ │ ├── scene.d.ts │ │ │ ├── script.d.ts │ │ │ ├── three.d.ts │ │ │ └── window.d.ts │ │ ├── uno.config.ts │ │ └── vite.config.ts │ └── sdk/ │ ├── .gitignore │ ├── index.html │ ├── lib/ │ │ ├── constant/ │ │ │ ├── enum.ts │ │ │ ├── index.ts │ │ │ └── type.ts │ │ ├── core/ │ │ │ ├── animation/ │ │ │ │ ├── AnimationManager.ts │ │ │ │ └── TimelineTrack.ts │ │ │ ├── app/ │ │ │ │ ├── App.ts │ │ │ │ └── modules/ │ │ │ │ ├── CSM.ts │ │ │ │ ├── Config.ts │ │ │ │ ├── History.ts │ │ │ │ ├── Project.ts │ │ │ │ ├── Resource.ts │ │ │ │ ├── Selector.ts │ │ │ │ ├── Storage.ts │ │ │ │ └── index.ts │ │ │ ├── built-in/ │ │ │ │ └── assets/ │ │ │ │ ├── BasicObject3D.ts │ │ │ │ └── Particles.ts │ │ │ ├── commands/ │ │ │ │ ├── AddObjectCommand.ts │ │ │ │ ├── AddScriptCommand.ts │ │ │ │ ├── Command.ts │ │ │ │ ├── Commands.ts │ │ │ │ ├── MoveObjectCommand.ts │ │ │ │ ├── RemoveObjectCommand.ts │ │ │ │ ├── RemoveScriptCommand.ts │ │ │ │ ├── SetColorCommand.ts │ │ │ │ ├── SetGeometryCommand.ts │ │ │ │ ├── SetGeometryValueCommand.ts │ │ │ │ ├── SetMaterialColorCommand.ts │ │ │ │ ├── SetMaterialCommand.ts │ │ │ │ ├── SetMaterialMapCommand.ts │ │ │ │ ├── SetMaterialRangeCommand.ts │ │ │ │ ├── SetMaterialValueCommand.ts │ │ │ │ ├── SetMaterialVectorCommand.ts │ │ │ │ ├── SetPositionCommand.ts │ │ │ │ ├── SetRotationCommand.ts │ │ │ │ ├── SetScaleCommand.ts │ │ │ │ ├── SetSceneCommand.ts │ │ │ │ ├── SetScriptValueCommand.ts │ │ │ │ ├── SetUuidCommand.ts │ │ │ │ └── SetValueCommand.ts │ │ │ ├── controls/ │ │ │ │ └── DragControls.js │ │ │ ├── expansion/ │ │ │ │ ├── Material.ts │ │ │ │ ├── Object3D.ts │ │ │ │ └── index.ts │ │ │ ├── geometries/ │ │ │ │ ├── TeapotGeometry.ts │ │ │ │ └── index.ts │ │ │ ├── libs/ │ │ │ │ ├── astral-timeline/ │ │ │ │ │ ├── animation-timeline.ts │ │ │ │ │ ├── enums/ │ │ │ │ │ │ ├── timelineCapShape.ts │ │ │ │ │ │ ├── timelineCursorType.ts │ │ │ │ │ │ ├── timelineElementType.ts │ │ │ │ │ │ ├── timelineEventSource.ts │ │ │ │ │ │ ├── timelineEvents.ts │ │ │ │ │ │ ├── timelineInteractionMode.ts │ │ │ │ │ │ ├── timelineKeyframeShape.ts │ │ │ │ │ │ ├── timelineScrollSource.ts │ │ │ │ │ │ ├── timelineSelectionEventSource.ts │ │ │ │ │ │ └── timelineSelectionMode.ts │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── timelineGroup.ts │ │ │ │ │ │ ├── timelineKeyframe.ts │ │ │ │ │ │ ├── timelineModel.ts │ │ │ │ │ │ ├── timelineRanged.ts │ │ │ │ │ │ └── timelineRow.ts │ │ │ │ │ ├── settings/ │ │ │ │ │ │ ├── defaults/ │ │ │ │ │ │ │ ├── defaultGroupStyle.ts │ │ │ │ │ │ │ ├── defaultTimelineConsts.ts │ │ │ │ │ │ │ ├── defaultTimelineKeyframeStyle.ts │ │ │ │ │ │ │ ├── defaultTimelineOptions.ts │ │ │ │ │ │ │ ├── defaultTimelineRowStyle.ts │ │ │ │ │ │ │ └── defaultTimelineStyle.ts │ │ │ │ │ │ ├── styles/ │ │ │ │ │ │ │ ├── timelineCapStyle.ts │ │ │ │ │ │ │ ├── timelineGroupStyle.ts │ │ │ │ │ │ │ ├── timelineKeyframeStyle.ts │ │ │ │ │ │ │ ├── timelineRowStyle.ts │ │ │ │ │ │ │ └── timelineStyle.ts │ │ │ │ │ │ ├── timelineConsts.ts │ │ │ │ │ │ └── timelineOptions.ts │ │ │ │ │ ├── timeline.ts │ │ │ │ │ ├── timelineEventsEmitter.ts │ │ │ │ │ ├── utils/ │ │ │ │ │ │ ├── events/ │ │ │ │ │ │ │ ├── timelineBaseEvent.ts │ │ │ │ │ │ │ ├── timelineClickEvent.ts │ │ │ │ │ │ │ ├── timelineDragEvent.ts │ │ │ │ │ │ │ ├── timelineKeyframeChangedEvent.ts │ │ │ │ │ │ │ ├── timelineScrollEvent.ts │ │ │ │ │ │ │ ├── timelineSelectedEvent.ts │ │ │ │ │ │ │ └── timelineTimeChangedEvent.ts │ │ │ │ │ │ ├── timelineCutBoundsRectResults.ts │ │ │ │ │ │ ├── timelineDraggableData.ts │ │ │ │ │ │ ├── timelineElement.ts │ │ │ │ │ │ ├── timelineElementDragState.ts │ │ │ │ │ │ ├── timelineMouseData.ts │ │ │ │ │ │ ├── timelinePoint.ts │ │ │ │ │ │ ├── timelineSelectable.ts │ │ │ │ │ │ ├── timelineSelectionResults.ts │ │ │ │ │ │ ├── timelineStyleUtils.ts │ │ │ │ │ │ └── timelineUtils.ts │ │ │ │ │ └── viewModels/ │ │ │ │ │ ├── timelineGroupViewModel.ts │ │ │ │ │ ├── timelineKeyframeViewModel.ts │ │ │ │ │ ├── timelineRowViewModel.ts │ │ │ │ │ └── timelineViewModel.ts │ │ │ │ └── three-nebula/ │ │ │ │ ├── behaviour/ │ │ │ │ │ ├── Alpha.js │ │ │ │ │ ├── Attraction.js │ │ │ │ │ ├── Behaviour.js │ │ │ │ │ ├── Collision.js │ │ │ │ │ ├── Color.js │ │ │ │ │ ├── CrossZone.js │ │ │ │ │ ├── Force.js │ │ │ │ │ ├── Gravity.js │ │ │ │ │ ├── RandomDrift.js │ │ │ │ │ ├── Repulsion.js │ │ │ │ │ ├── Rotate.js │ │ │ │ │ ├── Scale.js │ │ │ │ │ ├── Spring.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── types.js │ │ │ │ ├── constants/ │ │ │ │ │ └── index.js │ │ │ │ ├── core/ │ │ │ │ │ ├── Particle.js │ │ │ │ │ ├── Pool.js │ │ │ │ │ ├── System.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── fromJSON.js │ │ │ │ │ ├── fromJSONAsync.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── three/ │ │ │ │ │ │ ├── Euler.js │ │ │ │ │ │ ├── Math.js │ │ │ │ │ │ ├── Matrix4.js │ │ │ │ │ │ ├── Quaternion.js │ │ │ │ │ │ ├── Vector3.js │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── types.js │ │ │ │ ├── debug/ │ │ │ │ │ ├── Debug.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── log.js │ │ │ │ ├── ease/ │ │ │ │ │ └── index.js │ │ │ │ ├── emitter/ │ │ │ │ │ ├── Emitter.js │ │ │ │ │ ├── FollowEmitter.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── types.js │ │ │ │ ├── events/ │ │ │ │ │ ├── EventDispatcher.js │ │ │ │ │ ├── constants.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── initializer/ │ │ │ │ │ ├── Body.js │ │ │ │ │ ├── BodySprite.js │ │ │ │ │ ├── Initializer.js │ │ │ │ │ ├── InitializerUtil.js │ │ │ │ │ ├── Life.js │ │ │ │ │ ├── Mass.js │ │ │ │ │ ├── Position.js │ │ │ │ │ ├── Radius.js │ │ │ │ │ ├── Rate.js │ │ │ │ │ ├── Rotation.js │ │ │ │ │ ├── Texture.js │ │ │ │ │ ├── Velocity/ │ │ │ │ │ │ ├── PolarVelocity.js │ │ │ │ │ │ ├── RadialVelocity.js │ │ │ │ │ │ ├── VectorVelocity.js │ │ │ │ │ │ ├── Velocity.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── types.js │ │ │ │ ├── math/ │ │ │ │ │ ├── ArraySpan.js │ │ │ │ │ ├── Box.js │ │ │ │ │ ├── ColorSpan.js │ │ │ │ │ ├── MathUtils.js │ │ │ │ │ ├── Polar3D.js │ │ │ │ │ ├── Span.js │ │ │ │ │ ├── Vector3D.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── integration.js │ │ │ │ │ └── types.js │ │ │ │ ├── renderer/ │ │ │ │ │ ├── BaseRenderer.js │ │ │ │ │ ├── CustomRenderer.js │ │ │ │ │ ├── GPURenderer/ │ │ │ │ │ │ ├── Desktop/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── shaders/ │ │ │ │ │ │ │ ├── fragmentShader.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── vertexShader.js │ │ │ │ │ │ ├── Mobile/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── shaders/ │ │ │ │ │ │ │ ├── fragmentShader.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── vertexShader.js │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ ├── ParticleBuffer/ │ │ │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── TextureAtlas/ │ │ │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── shaders/ │ │ │ │ │ │ │ │ └── constants.js │ │ │ │ │ │ │ └── stores/ │ │ │ │ │ │ │ ├── Target.js │ │ │ │ │ │ │ ├── UniqueList.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── MeshRenderer.js │ │ │ │ │ ├── SpriteRenderer.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── types.js │ │ │ │ ├── utils/ │ │ │ │ │ ├── ColorUtil.js │ │ │ │ │ ├── PUID.js │ │ │ │ │ ├── THREEUtil.js │ │ │ │ │ ├── Util.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── isNumber.js │ │ │ │ │ ├── potpack.js │ │ │ │ │ ├── sample.js │ │ │ │ │ └── uid.js │ │ │ │ └── zone/ │ │ │ │ ├── BoxZone.js │ │ │ │ ├── LineZone.js │ │ │ │ ├── MeshZone.js │ │ │ │ ├── PointZone.js │ │ │ │ ├── ScreenZone.js │ │ │ │ ├── SphereZone.js │ │ │ │ ├── Zone.js │ │ │ │ ├── index.js │ │ │ │ └── types.js │ │ │ ├── loader/ │ │ │ │ ├── Loader.ts │ │ │ │ ├── ObjectLoader.js │ │ │ │ ├── Package.Skeleton.ts │ │ │ │ └── Package.ts │ │ │ ├── objects/ │ │ │ │ ├── Billboard.ts │ │ │ │ ├── HtmlPanel.ts │ │ │ │ ├── LineMesh.ts │ │ │ │ ├── ParticleEmitter.ts │ │ │ │ ├── index.ts │ │ │ │ ├── texture/ │ │ │ │ │ └── BillboardTexture.ts │ │ │ │ └── weather/ │ │ │ │ ├── Rain.ts │ │ │ │ └── Snow.ts │ │ │ ├── plugin/ │ │ │ │ ├── builtin/ │ │ │ │ │ └── builtin.ts │ │ │ │ ├── plugin.ts │ │ │ │ └── pluginLoader.ts │ │ │ ├── points/ │ │ │ │ ├── PointCloudReconstructor.ts │ │ │ │ └── index.ts │ │ │ ├── preview/ │ │ │ │ ├── Preview.ts │ │ │ │ └── PreviewOptions.ts │ │ │ ├── script/ │ │ │ │ ├── Animation.ts │ │ │ │ ├── Helper.ts │ │ │ │ ├── Source.ts │ │ │ │ └── index.ts │ │ │ ├── shaderMaterial/ │ │ │ │ ├── ShaderMaterialManager.ts │ │ │ │ └── modules/ │ │ │ │ ├── CircleGridShaderMaterial.ts │ │ │ │ ├── DynamicCheckerboardShaderMaterial.ts │ │ │ │ ├── FlickerShaderMaterial.ts │ │ │ │ ├── SlowSmokeShaderMaterial.ts │ │ │ │ ├── SnowingShaderMaterial.ts │ │ │ │ ├── StreamerWallShaderMaterial.ts │ │ │ │ └── index.ts │ │ │ ├── tools/ │ │ │ │ ├── ClippedEdgesBox.ts │ │ │ │ ├── Export.ts │ │ │ │ ├── Measure.ts │ │ │ │ ├── MiniMap-20240823.ts │ │ │ │ ├── MiniMap.ts │ │ │ │ ├── ModelExplode.ts │ │ │ │ ├── Roaming.ts │ │ │ │ ├── RoamingStatus.ts │ │ │ │ └── index.ts │ │ │ └── viewer/ │ │ │ ├── Viewer.ts │ │ │ ├── ViewerOptions.ts │ │ │ ├── ViewerPathTracer.ts │ │ │ └── modules/ │ │ │ ├── CameraManage.ts │ │ │ ├── Drag.ts │ │ │ ├── Effect.ts │ │ │ ├── Helper.ts │ │ │ ├── ParticleSystem.ts │ │ │ ├── Signals.ts │ │ │ ├── Weather.ts │ │ │ └── index.ts │ │ ├── dxf/ │ │ │ ├── DragControls.js │ │ │ ├── bspline.ts │ │ │ ├── drawRect.ts │ │ │ ├── drawShare.ts │ │ │ ├── drawUtils.ts │ │ │ ├── index.ts │ │ │ ├── offScreenCanvas.worker.ts │ │ │ ├── parser/ │ │ │ │ ├── AutoCadColorIndex.ts │ │ │ │ ├── DimStyleCodes.ts │ │ │ │ ├── DxfArrayScanner.ts │ │ │ │ ├── DxfParser.ts │ │ │ │ ├── ExtendedDataParser.ts │ │ │ │ ├── ParseHelpers.ts │ │ │ │ ├── entities/ │ │ │ │ │ ├── 3dface.ts │ │ │ │ │ ├── arc.ts │ │ │ │ │ ├── attdef.ts │ │ │ │ │ ├── attribute.ts │ │ │ │ │ ├── circle.ts │ │ │ │ │ ├── dimension.ts │ │ │ │ │ ├── ellipse.ts │ │ │ │ │ ├── geomtry.ts │ │ │ │ │ ├── hatch.ts │ │ │ │ │ ├── insert.ts │ │ │ │ │ ├── line.ts │ │ │ │ │ ├── lwpolyline.ts │ │ │ │ │ ├── mtext.ts │ │ │ │ │ ├── point.ts │ │ │ │ │ ├── polyline.ts │ │ │ │ │ ├── solid.ts │ │ │ │ │ ├── spline.ts │ │ │ │ │ ├── text.ts │ │ │ │ │ └── vertex.ts │ │ │ │ └── index.ts │ │ │ ├── pickHelper.ts │ │ │ ├── round10.ts │ │ │ ├── troika-three-text.esm.js │ │ │ ├── troika-three-utils.esm.js │ │ │ └── troika-worker-utils.esm.js │ │ ├── hooks/ │ │ │ ├── index.ts │ │ │ └── useSignal.ts │ │ ├── index.ts │ │ ├── utils/ │ │ │ ├── common/ │ │ │ │ ├── dom.ts │ │ │ │ ├── download.ts │ │ │ │ ├── helper.ts │ │ │ │ ├── index.ts │ │ │ │ ├── object.ts │ │ │ │ ├── performance.ts │ │ │ │ └── verify.ts │ │ │ ├── index.ts │ │ │ ├── log/ │ │ │ │ └── Logger.ts │ │ │ ├── request/ │ │ │ │ ├── fetchController.ts │ │ │ │ └── index.ts │ │ │ ├── scene/ │ │ │ │ ├── Stats.ts │ │ │ │ ├── controls.ts │ │ │ │ ├── index.ts │ │ │ │ └── material.ts │ │ │ ├── signals/ │ │ │ │ └── signalRegister.ts │ │ │ └── wasm/ │ │ │ ├── index.ts │ │ │ ├── inject.ts │ │ │ ├── wasm_exec.js │ │ │ └── zip.ts │ │ └── workers/ │ │ ├── bvh/ │ │ │ ├── GenerateColliderEnvironmentWorker.js │ │ │ ├── GenerateMeshBVHWorker.js │ │ │ ├── generateAsync.worker.js │ │ │ └── generateColliderEnvironment.worker.js │ │ └── mergeGeometries.worker.ts │ ├── package.json │ ├── public/ │ │ ├── libs/ │ │ │ ├── basis/ │ │ │ │ ├── README.md │ │ │ │ ├── basis_transcoder.js │ │ │ │ └── basis_transcoder.wasm │ │ │ ├── draco/ │ │ │ │ ├── draco_decoder.js │ │ │ │ ├── draco_decoder.wasm │ │ │ │ ├── draco_decoder_gltf.js │ │ │ │ ├── draco_decoder_gltf.wasm │ │ │ │ ├── draco_encoder.js │ │ │ │ ├── draco_encoder.wasm │ │ │ │ ├── draco_encoder_wrapper.js │ │ │ │ ├── draco_wasm_wrapper.js │ │ │ │ ├── draco_wasm_wrapper_gltf.js │ │ │ │ └── gltf/ │ │ │ │ ├── draco_decoder.js │ │ │ │ ├── draco_decoder.wasm │ │ │ │ ├── draco_encoder.js │ │ │ │ └── draco_wasm_wrapper.js │ │ │ └── web-ifc/ │ │ │ ├── IFCWorker.js │ │ │ ├── web-ifc-mt.wasm │ │ │ └── web-ifc.wasm │ │ ├── resource/ │ │ │ ├── luts/ │ │ │ │ ├── Bourbon 64.CUBE │ │ │ │ ├── Chemical 168.CUBE │ │ │ │ ├── Clayton 33.CUBE │ │ │ │ ├── Cubicle 99.CUBE │ │ │ │ ├── Presetpro-Cinematic.3dl │ │ │ │ └── Remy 24.CUBE │ │ │ └── model/ │ │ │ ├── Jackie.glb │ │ │ ├── Workman.glb │ │ │ ├── X_Bot.glb │ │ │ └── Y_Bot.glb │ │ └── static/ │ │ └── wasm/ │ │ └── Astral3DEngine.wasm │ ├── tsconfig.json │ ├── types/ │ │ ├── Scene.d.ts │ │ ├── Script.d.ts │ │ ├── Three.d.ts │ │ ├── app/ │ │ │ ├── Config.d.ts │ │ │ └── Project.d.ts │ │ ├── astral-zip.d.ts │ │ ├── core/ │ │ │ ├── Cad.d.ts │ │ │ └── Plugin.d.ts │ │ ├── global.d.ts │ │ ├── objects/ │ │ │ ├── Billboard.d.ts │ │ │ └── Particle.d.ts │ │ ├── setting/ │ │ │ ├── PreviewSetting.d.ts │ │ │ └── ViewerSetting.d.ts │ │ └── vite-env.d.ts │ └── vite.config.ts └── pnpm-workspace.yaml