From afa10f7a1e4441de10904c9b533aa23d7377cffa Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Fri, 31 Oct 2025 16:19:35 -0400 Subject: [PATCH] [refactor] refactor load3d (#5765) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary Fully Refactored the Load3D module to improve architecture and maintainability by consolidating functionality into a centralized composable pattern and simplifying component structure. and support VueNodes system Changes - Architecture: Introduced new useLoad3d composable to centralize 3D loading logic and state management - Component Simplification: Removed redundant components (Load3DAnimation.vue, Load3DAnimationScene.vue, PreviewManager.ts) - Support VueNodes - improve config store - remove lineart output due Animation doesnot support it, may add it back later - remove Preview screen and keep scene in fixed ratio in load3d (not affect preview3d) - improve record video feature which will already record video by same ratio as scene Need BE change https://github.com/comfyanonymous/ComfyUI/pull/10025 https://github.com/user-attachments/assets/9e038729-84a0-45ad-b0f2-11c57d7e0c9a ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5765-refactor-refactor-load3d-2796d73d365081728297cc486e2e9052) by [Unito](https://www.unito.io) --- src/components/load3d/Load3D.vue | 381 ++------ src/components/load3d/Load3DAnimation.vue | 336 ------- .../load3d/Load3DAnimationScene.vue | 208 ----- src/components/load3d/Load3DControls.vue | 272 +----- src/components/load3d/Load3DScene.vue | 262 +----- src/components/load3d/Load3dViewerContent.vue | 22 + src/components/load3d/LoadingOverlay.vue | 31 +- .../AnimationControls.vue} | 39 +- .../load3d/controls/CameraControls.vue | 72 +- .../load3d/controls/ExportControls.vue | 7 +- .../load3d/controls/LightControls.vue | 43 +- .../load3d/controls/ModelControls.vue | 114 +-- .../load3d/controls/RecordingControls.vue | 78 +- .../load3d/controls/SceneControls.vue | 57 +- .../load3d/controls/ViewerControls.vue | 3 - .../controls/viewer/ViewerExportControls.vue | 4 +- .../controls/viewer/ViewerLightControls.vue | 3 +- .../controls/viewer/ViewerModelControls.vue | 4 +- .../controls/viewer/ViewerSceneControls.vue | 10 +- src/composables/useLoad3d.ts | 536 +++++++++++ src/composables/useLoad3dDrag.ts | 70 ++ src/composables/useLoad3dViewer.ts | 192 ++-- src/extensions/core/load3d.ts | 346 ++----- .../core/load3d/AnimationManager.ts | 24 +- src/extensions/core/load3d/CameraManager.ts | 12 +- src/extensions/core/load3d/ControlsManager.ts | 15 +- src/extensions/core/load3d/LightingManager.ts | 2 + .../core/load3d/Load3DConfiguration.ts | 218 +++-- src/extensions/core/load3d/Load3d.ts | 209 +++-- src/extensions/core/load3d/Load3dAnimation.ts | 131 --- src/extensions/core/load3d/PreviewManager.ts | 416 --------- .../core/load3d/RecordingManager.ts | 86 +- src/extensions/core/load3d/SceneManager.ts | 77 +- .../core/load3d/SceneModelManager.ts | 416 +-------- .../core/load3d/ViewHelperManager.ts | 17 +- .../ColoredShadowMaterial.js | 163 ---- .../ConditionalEdgesGeometry.js | 126 --- .../ConditionalEdgesShader.js | 96 -- .../Lines2/ConditionalLineMaterial.js | 379 -------- .../Lines2/ConditionalLineSegmentsGeometry.js | 43 - src/extensions/core/load3d/interfaces.ts | 61 +- src/extensions/core/saveMesh.ts | 34 +- src/locales/en/main.json | 17 +- .../core/layout/sync/useLayoutSync.ts | 4 +- .../widgets/registry/widgetRegistry.ts | 4 +- src/schemas/apiSchema.ts | 1 - src/scripts/app.ts | 2 + src/services/load3dService.ts | 115 +-- tests-ui/tests/composables/useLoad3d.test.ts | 880 ++++++++++++++++++ .../tests/composables/useLoad3dDrag.test.ts | 267 ++++++ .../tests/composables/useLoad3dViewer.test.ts | 79 +- 51 files changed, 2784 insertions(+), 4200 deletions(-) delete mode 100644 src/components/load3d/Load3DAnimation.vue delete mode 100644 src/components/load3d/Load3DAnimationScene.vue rename src/components/load3d/{Load3DAnimationControls.vue => controls/AnimationControls.vue} (57%) create mode 100644 src/composables/useLoad3d.ts create mode 100644 src/composables/useLoad3dDrag.ts delete mode 100644 src/extensions/core/load3d/Load3dAnimation.ts delete mode 100644 src/extensions/core/load3d/PreviewManager.ts delete mode 100644 src/extensions/core/load3d/conditional-lines/ColoredShadowMaterial.js delete mode 100644 src/extensions/core/load3d/conditional-lines/ConditionalEdgesGeometry.js delete mode 100644 src/extensions/core/load3d/conditional-lines/ConditionalEdgesShader.js delete mode 100644 src/extensions/core/load3d/conditional-lines/Lines2/ConditionalLineMaterial.js delete mode 100644 src/extensions/core/load3d/conditional-lines/Lines2/ConditionalLineSegmentsGeometry.js create mode 100644 tests-ui/tests/composables/useLoad3d.test.ts create mode 100644 tests-ui/tests/composables/useLoad3dDrag.test.ts diff --git a/src/components/load3d/Load3D.vue b/src/components/load3d/Load3D.vue index 7b6e68a75..a525481d4 100644 --- a/src/components/load3d/Load3D.vue +++ b/src/components/load3d/Load3D.vue @@ -1,71 +1,48 @@