Comfy Org PR Bot
b660638f22
[backport core/1.38] fix: add ResizeObserver to fix Preview3D initial render stretch ( #8423 )
...
Backport of #8351 to `core/1.38`
Automatically created by backport workflow.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8423-backport-core-1-38-fix-add-ResizeObserver-to-fix-Preview3D-initial-render-stretch-2f76d73d365081a28ccbd2b5d9eb1aa5 )
by [Unito](https://www.unito.io )
Co-authored-by: Terry Jia <terryjia88@gmail.com >
2026-01-29 10:03:12 -08:00
Terry Jia
82c3cd3cd2
add thumbnail for 3d generation ( #8129 )
...
## Summary
add thrumbnail for 3d genations, feature requested by @PabloWiedemann
## Screenshots
https://github.com/user-attachments/assets/4fb9b88b-dd7b-4a69-a70c-e850472d3498
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8129-add-thumbnail-for-3d-generation-2eb6d73d365081f2a30bc698a4fde6e0 )
by [Unito](https://www.unito.io )
2026-01-17 20:32:32 -07:00
Johnpaul Chiwetelu
538f007f1d
Road to No Explicit Any Part 5: load3d Module ( #8064 )
...
## Summary
- Removes all `any` types from the load3d module
- Uses generics for EventCallback to provide type-safe event handling
- Types node parameters with LGraphNode
- Types onExecuted callback with NodeExecutionOutput
- Types Camera Config property casts with CameraConfig interface
## Changes
- `interfaces.ts`: EventCallback<T> generic, EventManagerInterface
generic methods
- `EventManager.ts`: Generic
emitEvent/addEventListener/removeEventListener
- `AnimationManager.ts`: setupModelAnimations originalModel typed as
GLTF union
- `Load3d.ts`: Event listener methods use EventCallback<T>
- `load3d.ts`: Node params typed as LGraphNode, onExecuted uses
NodeExecutionOutput, CameraConfig casts
## Test plan
- [x] `pnpm typecheck` passes
- [x] `pnpm lint` passes
- [x] `pnpm test:unit` passes
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8064-Road-to-No-Explicit-Any-Part-5-load3d-Module-2e96d73d365081efbc01f2d8a4f3c11f )
by [Unito](https://www.unito.io )
2026-01-15 02:21:38 +01:00
Terry Jia
dad1eafecc
feat: add skeleton visualization toggle for 3D models ( #7857 )
...
## Summary
For better support animation 3d model custon node, such as
https://github.com/jtydhr88/ComfyUI-HY-Motion1 , add ability to show/hide
skeleton bones in Load3D nodes for models with skeletal animation. Uses
THREE.SkeletonHelper with root bone detection to properly support both
FBX and GLB model formats.
## Screenshots
https://github.com/user-attachments/assets/df9de4a6-549e-4227-aa00-8859d71f43d1
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7857-feat-add-skeleton-visualization-toggle-for-3D-models-2e06d73d365081a39f49f81f72657a70 )
by [Unito](https://www.unito.io )
2026-01-06 19:11:06 -07:00
Terry Jia
832588c7a9
fix: continue rendering when 3D animation is playing ( #7836 )
...
## Summary
Previously, the 3D viewer would pause rendering when the mouse left the
node to save resources. This caused GLB/FBX animations to freeze when
the user moved the mouse away, which was a poor user experience.
Now the renderer stays active while an animation is playing, and only
pauses when the animation is stopped.
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7827
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7836-fix-continue-rendering-when-3D-animation-is-playing-2de6d73d365081a6a365f6c0ccfce7b4 )
by [Unito](https://www.unito.io )
2026-01-05 18:07:40 -05:00
Terry Jia
7fcfa4c201
feat: add animation progress bar for 3D nodes and viewer ( #7839 )
...
## Summary
- Add draggable progress bar to AnimationControls component
- Display current time / total duration
- Allow seeking through animations when paused or playing
- Add animation controls to 3D Viewer
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7830 and
https://github.com/Comfy-Org/ComfyUI_frontend/issues/7831
## Screenshots (if applicable)
https://github.com/user-attachments/assets/f6d0668c-c7a4-497e-8345-9ef6e47a41c6
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7839-feat-add-animation-progress-bar-for-3D-nodes-and-viewer-2de6d73d36508101ac98f673206b30d9 )
by [Unito](https://www.unito.io )
2026-01-04 08:47:30 -05:00
Terry Jia
3c4b99ed84
3dgs & ply support ( #7602 )
...
## Summary
integrated sparkjs https://sparkjs.dev/ , built by [world labs
](https://www.worldlabs.ai/ ) to support 3dgs.
- Add 3D Gaussian Splatting (3DGS) support using @sparkjsdev/spark
library
- Add PLY file format support with multiple rendering engines
- Support new file formats: `.ply`, `.spz`, `.splat`, `.ksplat`
- Add PLY Engine setting with three options: `threejs` (mesh), `fastply`
(optimized ASCII point clouds), `sparkjs` (3DGS)
- Add `FastPLYLoader` for 4-5x faster ASCII PLY parsing
- Add `original(Advanced)` material mode for point cloud rendering with
THREE.Points
3dgs generated by https://marble.worldlabs.ai/
test ply file from:
1. made by https://github.com/PozzettiAndrea/ComfyUI-DepthAnythingV3
2. threejs offically repo
## Screenshots
https://github.com/user-attachments/assets/44e64d3e-b58d-4341-9a70-a9aa64801220
https://github.com/user-attachments/assets/76b0dfba-0c12-4f64-91cb-bfc5d672294d
https://github.com/user-attachments/assets/2a8bfe81-1fb2-44c4-8787-dff325369c61
https://github.com/user-attachments/assets/e4beecee-d7a2-40c9-97f7-79b09c60312d
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7602-3dgs-ply-support-2cd6d73d3650814098fcea86cfaf747d )
by [Unito](https://www.unito.io )
2025-12-20 14:04:16 -07:00
Kelly Yang
08faa69256
fix: 3d resize vertically ( #7621 )
...
## Summary
Fix an issue #7620 where 3D nodes could be resized vertically only in
the expanding direction but could not be shrunk.
## Changes
- **What**:
- Allow the 3D node content container to shrink by removing `h-full` and
adding `min-h-0 flex-1`.
- Prevent the internal canvas from reasserting its previous height
during parent resize by avoiding `h-full` and constraining it with
`max-h-full`.
- **Dependencies**:
- None
## Review Focus
- Verify that vertical resize works in both directions for 3D nodes.
- Ensure the canvas still resizes correctly with the node and that
three.js rendering is unaffected.
- Confirm no regression in pointer events, overlays, or resize handles.
## Screenshots
before
https://github.com/user-attachments/assets/6b9e3bb0-98eb-4b06-adb3-b3aab60a7f86
after
https://github.com/user-attachments/assets/76d1a962-6cdc-4ca4-941e-7a3874629b29
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7621-fix-3d-resize-vertically-2cd6d73d365081efb281e8a40c87bf9e )
by [Unito](https://www.unito.io )
2025-12-19 19:52:35 -05:00
Terry Jia
ed7ec2af0f
improve logic of 3d scene size ( #7619 )
...
## Summary
improve 3d scene size logic, for preview3d, it should not have target
size
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7619-improve-logic-of-3d-scene-size-2cd6d73d36508101b9f5dcef9bbe1314 )
by [Unito](https://www.unito.io )
2025-12-19 05:56:19 -05:00
Terry Jia
7a11dc59b6
[refactor] remove node as dependency in 3d node ( #6707 )
...
## Summary
This PR refactors the Load3d 3D rendering system to remove its direct
dependency on LGraphNode, making it a more decoupled and reusable
component. The core rendering engine is now framework-agnostic and can
be used in any context, not just within LiteGraph nodes.
## Changes
1. Decoupled Load3d from LGraphNode
- Before: Load3d directly accessed node.widgets and node.properties
- After: Load3d accepts optional parameters and callbacks, delegating
node integration to the calling code
2. Event-Driven State Management
- Removed internal storage from Load3d core components
- Camera, controls, and view helper managers now emit cameraChanged
events instead of directly storing state
- External code (e.g., useLoad3d) listens to events and handles
persistence to node.properties
3. Reactive Dimension Updates
- Introduced getDimensions callback to support reactive dimension
updates
- Fixes the issue where dimension changes in vueNodes mode required a
refresh
- The callback is invoked on every render to get fresh width/height
values
4. Improved Configuration System
- Load3DConfiguration now accepts properties: Dictionary<NodeProperty |
undefined> instead of custom storage
interface
- Uses official LiteGraph type definitions (Dictionary, NodeProperty)
- More semantic parameter naming: storage → properties
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6707-refactor-remove-node-as-dependency-in-3d-node-2ab6d73d365081ffac1cdce354781ce8 )
by [Unito](https://www.unito.io )
2025-11-15 06:36:36 -05:00
Terry Jia
879cb8f1a8
support panoramic image in 3d node ( #6638 )
...
## Summary
Adds panoramic image support to the 3D node viewer, allowing users to
display equirectangular panoramic images as immersive backgrounds
alongside the existing tiled image mode.
## Changes
- Toggle between tiled and panorama rendering modes for background
images
- Field of view (FOV) control for panorama mode
- Refactored FOV slider into reusable PopupSlider component
## Screenshots
https://github.com/user-attachments/assets/8955d74b-b0e6-4b26-83ca-ccf902b43aa6
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6638-support-panoramic-image-in-3d-node-2a56d73d365081b98647f988130e312e )
by [Unito](https://www.unito.io )
2025-11-11 04:02:12 -05:00
Terry Jia
afa10f7a1e
[refactor] refactor load3d ( #5765 )
...
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 )
2025-10-31 16:19:35 -04:00
Terry Jia
dd90288846
code improve for 3d node ( #6403 )
...
## Summary
code improve for 3d node
## Changes
1. remove custom css
2. use tailwind instead
3. bug fix for right click context menu
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6403-code-improve-for-3d-node-29c6d73d3650819fab26feabdaa21821 )
by [Unito](https://www.unito.io )
2025-10-30 05:31:36 -04:00
Terry Jia
c76f017f92
add save option for 3d node on context menu ( #6319 )
...
## Summary
add save option for 3d node on context menu
## Changes
allow to export model from context menu, supported in
preview3d/load3d/saveMesh
https://github.com/user-attachments/assets/1f0f1a93-9cdb-477f-8bd3-e298c7e3892b
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6319-add-save-option-for-3d-node-on-context-menu-2996d73d365081f7853cd2ae9c69fe4d )
by [Unito](https://www.unito.io )
2025-10-29 20:52:02 -04:00
sno
653cf64e01
[chore] Upgrade Prettier from 3.3.2 to 3.6.2 ( #6089 )
...
## Summary
- Updated Prettier from 3.3.2 to 3.6.2 in pnpm-workspace.yaml
- Ran `pnpm install` to update dependencies
- Ran `pnpm format` to apply new formatting rules
- Verified typecheck passes
## Test plan
- [x] TypeScript typecheck passes
- [x] Prettier formatting applied successfully
🤖 Generated with [Claude Code](https://claude.com/claude-code )
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6089-chore-Upgrade-Prettier-from-3-3-2-to-3-6-2-28e6d73d3650816a888ff1129b14e0bc )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Christian Byrne <cbyrne@comfy.org >
2025-10-16 20:46:59 -07:00
snomiao
cbb0f765b8
feat: enable verbatimModuleSyntax in TypeScript config ( #5533 )
...
## Summary
- Enable `verbatimModuleSyntax` compiler option in TypeScript
configuration
- Update all type imports to use explicit `import type` syntax
- This change will Improve tree-shaking and bundler compatibility
## Motivation
The `verbatimModuleSyntax` option ensures that type-only imports are
explicitly marked with the `type` keyword. This:
- Makes import/export intentions clearer
- Improves tree-shaking by helping bundlers identify what can be safely
removed
- Ensures better compatibility with modern bundlers
- Follows TypeScript best practices for module syntax
## Changes
- Added `"verbatimModuleSyntax": true` to `tsconfig.json`
- Updated another 48+ files to use explicit `import type` syntax for
type-only imports
- No functional changes, only import/export syntax improvements
## Test Plan
- [x] TypeScript compilation passes
- [x] Build completes successfully
- [x] Tests pass
- [ ] No runtime behavior changes
🤖 Generated with [Claude Code](https://claude.ai/code )
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5533-feat-enable-verbatimModuleSyntax-in-TypeScript-config-26d6d73d36508190b424ef9b379b5130 )
by [Unito](https://www.unito.io )
2025-09-18 21:05:56 -07:00
Terry Jia
d22d62b670
[3d] initial version of 3d viewer ( #3968 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-08-10 21:09:19 -07:00
Benjamin Lu
fef02e5f56
[refactor] Migrate litegraph imports from npm package to local subtree
...
- Updated all imports from '@comfyorg/litegraph' to '@/lib/litegraph/src/'
- Replaced deep dist imports with direct source paths
- Updated CSS import in main.ts
- All imports now use the @ alias consistently
2025-08-03 22:06:29 -04:00
Terry Jia
ed1d944e0e
[3d] remove unnecessary uploadTexture ( #4357 )
2025-07-19 11:38:49 -07:00
Terry Jia
35ff882ff2
[3d] better solution to support reading extra resource/texture ( #4209 )
2025-07-01 21:25:18 -07:00
Terry Jia
b2918a4cf6
Improve bg color image logic ( #4095 )
2025-06-08 01:20:56 -07:00
Terry Jia
1ca71caf45
[3d] performance improvement by using threejs setViewport ( #4079 )
2025-06-06 17:35:16 -07:00
Terry Jia
b531d34027
[3d] performance improve ( #3961 )
2025-05-21 21:29:52 -04:00
Terry Jia
49d32f4809
[3d] support mtl for obj file ( #3933 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-05-19 20:48:57 -07:00
Terry Jia
db81b62274
[3d] add record video support for load3d animation node ( #3798 )
2025-05-07 10:12:33 -04:00
Terry Jia
754eb807de
[3d] some improvement for load3d recording video ( #3794 )
2025-05-06 22:03:12 -04:00
Terry Jia
77ac4a415c
[3d] add recording video support ( #3749 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-05-03 23:00:07 -04:00
Terry Jia
abe65e58a0
[3d] add support to upload texture ( #3224 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-03-24 16:58:45 -04:00
Terry Jia
0863fda6a4
[3d] add support to export different formats ( #3176 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-03-21 11:04:39 -04:00
Terry Jia
afdb94f12f
[3d] refactor legacy code by using new vue style ( #3161 )
2025-03-20 10:28:35 -04:00
Terry Jia
06488cc811
[3d] performance improve ( #3131 )
2025-03-18 16:23:32 -04:00
Terry Jia
52bad3d0d1
[3d] support output normal and lineart at once ( #3122 )
2025-03-18 10:51:53 -04:00
Terry Jia
3d6fe41ee9
[3d] add edge threshold support ( #2939 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-03-09 13:44:30 -04:00
Terry Jia
cb6f2e4398
[3d] fix preview camera not sync up issue ( #2747 )
2025-02-27 08:42:07 -05:00
Terry Jia
e843f53799
[3d] temp fix preview camera not sync up ( #2743 )
2025-02-26 21:39:19 -05:00
Terry Jia
d033640927
[3d] redesign UI ( #2686 )
...
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: Chenlei Hu <huchenlei@proton.me >
2025-02-23 10:14:52 -05:00
Terry Jia
c502b86c31
[3d] refactor load3d nodes ( #2683 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-02-22 18:36:47 -05:00
Terry Jia
c3c6ec627b
[3d] support using image as background ( #2657 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-02-20 20:05:54 -05:00
Terry Jia
014a65411e
[3d] flash preview screen border if reach out limitation ( #2638 )
2025-02-19 15:49:36 -05:00
Terry Jia
01ffc9e4eb
[3d] allow using mouse wheel to adjust preview screen size ( #2619 )
2025-02-18 14:59:43 -05:00
Margen67
7bc48c5074
Formatting/cleanup ( #2594 )
2025-02-17 10:10:00 -05:00
Terry Jia
b2375a150c
[3d] fully convert load 3d nodes into vue ( #2590 )
2025-02-16 20:15:49 -05:00
Terry Jia
29cd693335
[3d] add tooltip ( #2524 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-02-11 22:28:24 -05:00
Terry Jia
aaca5191ab
Light fov UI change ( #2492 )
2025-02-10 11:23:33 -05:00
Terry Jia
83cc49a42b
[3d] use vue to rewrite the UI for load3d ( #2467 )
2025-02-09 12:05:42 -05:00
kvick-games
f5c5a95bdc
Refresh Preview3D node with node.onMouseEnter ( #2439 )
2025-02-05 21:26:45 -05:00
Terry Jia
55d63a8aef
[3d] move change background color button ( #2365 )
2025-01-27 17:06:01 -08:00
Terry Jia
3f787e2dbf
[3d] improve storing Camera State logic ( #2328 )
2025-01-23 14:26:13 -05:00
Terry Jia
b54e270b10
[3d] refactor code ( #2326 )
2025-01-23 11:26:27 -05:00