ComfyUI Extension: ComfyUI-8iPlayer

Authored by Kartel-ai

Created

Updated

56 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Looking for a different extension?

Custom Nodes (1)

README

โœจ ComfyUI-8iPlayer โœจ

Developed for Kartel.ai by Lovis Odin

<a href="https://Kartel.IAI"><img src="assets/kartellogo.avif" alt="Kartel.IAI Logo" width="100"></a>

A custom node for ComfyUI providing an interactive 3D viewer for 8i volumetric videos (MPD format), allowing frame capture and integration into workflows.

Node in Action


๐Ÿš€ Key Features

  • ๐Ÿ–ผ๏ธ Interactive 8i MPD Viewer: Load and view 8i videos via URL.
  • ๐ŸŽž๏ธ Frame Sequence Capture: Grab frames from the video timeline.
  • โฏ๏ธ Playback Controls: Smart play/pause functionality with visual feedback.
  • ๐ŸŽฅ Camera Animation System: Record keyframes and create smooth camera animations between them.
  • ๐Ÿ‘€ Animation Preview: Preview camera movements before capture with smooth transitions.
  • ๐ŸŽจ Customizable Background: Use solid colors or HDR environment maps (via URL).
  • ๐ŸงŠ Toggleable Floor: Add an optional ground plane.
  • โ˜€๏ธ Toggleable Shadows: Cast shadows onto the floor (requires floor).
  • ๐Ÿ”„ Update Node: Force ComfyUI recalculation with visual feedback.
  • โŒจ๏ธ Enhanced Camera Controls: Full 360ยฐ rotation, keyboard controls (WASD + QE), extended zoom range.
  • ๐Ÿ“ฆ Outputs: Provides captured frames as an IMAGE batch.

๐Ÿ™ Foundation & Core Credits

This node heavily utilizes and adapts code from the excellent comfyui-mixlab-nodes project by shadowcz007, particularly for the web viewer interface and the underlying structure connecting the frontend controls to the backend execution.


๐Ÿ› ๏ธ Installation

  1. Navigate to your ComfyUI custom_nodes directory:
    cd ComfyUI/custom_nodes/
    
  2. Clone the repository (from Kartel.IAI):
    git clone https://github.com/Kartel-IAI/ComfyUI-8iPlayer.git ComfyUI-8iPlayer
    
  3. Install the required dependencies:
    cd ComfyUI-8iPlayer
    pip install -r requirements.txt
    
  4. Restart ComfyUI. โœ…

๐ŸŽฎ How to Use

  1. Add the "8i - 3Dplayer" node to your workflow.
  2. Paste the 8i .mpd manifest URL into the node's panel.
    • You can obtain the MPD URL directly from the official 8i Web Player. Click the dedicated button on the player interface to copy the manifest URL.
    • How to get MPD URL
  3. Click "Load MPD". The hologram should appear.
  4. Use the panel controls to adjust:
    • Background (Color Picker / HDR URL + Load Button)
      • Example HDR URLs: You can try these links:
        https://lovis.io/RESSOURCE/HDR/01.hdr
        https://lovis.io/RESSOURCE/HDR/02.hdr
        https://lovis.io/RESSOURCE/HDR/03.hdr
        https://lovis.io/RESSOURCE/HDR/04.hdr
        https://lovis.io/RESSOURCE/HDR/05.hdr
        https://lovis.io/RESSOURCE/HDR/06.hdr
        
    • Floor (Toggle Button / Color Picker)
    • Shadows (Toggle Button)
    • Playback (Play/Pause Button)
  5. Use mouse and keyboard for camera control:
    • Mouse: Left-drag: Orbit (unlimited 360ยฐ) | Right-drag: Pan | Scroll: Zoom (0.1-1000x range)
    • Keyboard: WASD: Move forward/backward/left/right | Q/E: Move up/down
  6. Camera Animation System:
    • Orange border on play/pause button indicates camera keyframes are recorded
    • Preview button: Test camera animations with 3-second smooth transitions
    • Camera positions are automatically interpolated during frame capture
  7. Update Node button: Purple button to force ComfyUI recalculation (turns green when clicked)
  8. Set the desired frame_count on the node input.
  9. Connect the IMAGE output to the next node (e.g., VAE Encode, Preview Image).
  10. Queue Prompt! โ–ถ๏ธ (Adjusting the camera view also triggers execution on the next run).

โš™๏ธ Node Details

Node: 8i - 3Dplayer (3DImage)

  • Inputs:
    • frame_count (INT): Number of frames to capture (Default: 24, Min: 1, Max: 120).
    • upload (Internal): Handles data from the web UI.
    • _camera_timestamp (Internal): Triggers re-execution on camera change.
  • Outputs:
    • IMAGE (IMAGE Batch): The sequence of captured frames.

๐Ÿงช Example Workflows

Download the example workflow JSON files from the workflow_examples directory.


๐Ÿค” Troubleshooting

  • Load/Playback Fails:
    • Verify MPD/HDR URL is correct and accessible (check CORS).
    • Check browser console (F12) for errors.
    • If the hologram doesn't load, try clicking "Load MPD" again. Sometimes a second click is needed for proper initialization.
  • Viewer Black: Check console; ensure WebGL is enabled in your browser.
  • Performance: High frame_count, large HDRs, and shadows can be demanding.

๐Ÿ’ป Technical Details

  • Frontend: Built with Three.js.
  • MPD Playback: Uses the 8i DashPlayer library.
  • Camera: Enhanced Three.js OrbitControls with unlimited rotation and keyboard support.
  • Animation System: Linear interpolation between user-defined keyframes with smooth transitions.
  • Capture System: Advanced frame capture with camera stabilization during recording.
  • HDR Loading: Three.js RGBELoader with improved background color handling.

๐Ÿค Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss.


๐Ÿ”ฎ Future Enhancements

We plan to add more features, including:

  • ๐Ÿงฉ Enhanced Customization: Support for adding multiple characters/holograms, importing custom environments or objects (e.g., GLB files).
  • ๐Ÿ“Š Export Options: Save camera animations as presets for reuse across projects.

๐Ÿ‘ค Author

Originally created by Lovis Odin.


๐Ÿ“œ License

MIT License


๐Ÿ™ Acknowledgements

  • Built for the amazing ComfyUI platform.
  • Uses Three.js, 8i DashPlayer, RGBELoader.
  • Gratitude to the developers of the libraries mentioned above.

๐Ÿ†˜ Support

Please report issues via the GitHub Issues page for this repository.

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Learn more