-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Hi! I’m using comfyui-PlyPreview and I’d like to request (or contribute) a feature that turns the viewer into a real “camera controller” node.
Goal: merge the UX idea of “Qwen Multiangle Camera” with your PLY/Gaussian viewer, so the viewer can be used as an interactive camera tool inside a generation pipeline.
Why this matters (my workflow)
I’m building a pipeline around Qwen Image Edit (2509 / 2511) + SHARP (single image → Gaussian/PLY).
Qwen can generate multi-angle images using a reference image, but right now the workflow is painful:
We constantly copy/paste the captured view into the Qwen node.
Prompt management is also a headache.
I noticed something important:
If I provide only the reference image, SHARP/Qwen “understands” the desired view only partially.
If I provide both the reference image + a camera prompt, the result quality improves dramatically.
So the real aim is:
Move the camera inside the PLY viewer → capture the exact view → output image + prompt automatically → feed into Qwen.
If this works, I believe many Qwen users will prefer this node.
What we want
- Outputs from the Preview node
image output: screenshot/render of the current viewer view (the exact camera the user sees).
prompt output: a camera prompt that updates live while orbiting (example:
front view eye-level shot medium shot)
camera_state_json output: persistable camera state (yaw/pitch/zoom/target etc.) so other nodes can reuse it.
- Viewer state must persist
When the workflow is executed again (“Run”), the viewer must NOT reset to the default camera if the PLY path didn’t change.
Reset View should restore the original start view and also restore prompt/state accordingly.
- Inputs
ply_path (and existing extrinsics / intrinsics if applicable)
optional camera_state_json input: if provided, apply that camera state on load (or after run)
- UI requirement
The preview node UI should show camera controls similar to “Qwen Multiangle Camera” (horizontal/vertical/zoom + prompt display), but instead of controlling a 2D image it controls the 3D PLY viewer.
Current issues I see
Sometimes the viewer becomes black (WebGL init errors), and then prompt/state doesn’t update.
Reset doesn’t always restore prompt/state.
There are no output sockets for image/prompt/state, so we can’t feed the selected view into other nodes.
I tried modifying viewer_gaussian.html myself, but I started getting black-screen issues after changes—so I’d love your guidance on the cleanest implementation.
If you’re open to it, I can help with code/PR.
In your architecture, what’s the best approach:
adding an API endpoint for screenshot + state, or
using frontend postMessage + backend caching?
Thanks! I’d really like to hear your thoughts on whether you can (or would like to) add this feature.
