Commit Graph
26 Commits
Author SHA1 Message Date
Cedar 617cb06332 Fix LatLongOutpaintSetup perspective mode issues
- Fixed tensor dimension error in mask slicing (unsqueeze for 2D mask)
- Fixed perspective coordinate system to center image at equator with yaw=0, pitch=0
- Simplified FOV calculation: eff_fov = fov * scale (prevents extreme barrel distortion)
- Increased scale max from 10.0 to 100.0
- Updated Stitch node with matching FOV calculation
2026-02-05 15:13:41 -08:00
Cedar 2a03ca1dbf Add LatLong Outpaint Setup and Stitch nodes with perspective projection and high-res composition 2026-02-03 16:31:17 -08:00
Cedar Connor 9f1753c94d tool tips 2025-12-14 21:18:43 -08:00
Cedar Connor 2cf7247f02 Merge pull request #2 from ComfyNodePRs/publish
Add Github Action for Publishing to Comfy Registry
2025-11-07 20:44:36 -08:00
Cedar Connor bea0bd47bf Merge pull request #4 from cedarconnor/claude/implement-360-panorama-viewer-011CUptduSUoWeqqm6A4rGLA
Claude/implement 360 panorama viewer 011 c uptdu s uo weqqm6 a4r gla
2025-11-07 20:44:06 -08:00
Claude 51ead939f9 Add 360° edge blender for seamless wraparound
Extracted and integrated the Equirect360EdgeBlender from ComfyUI-DiT360 to provide professional-grade edge blending for panoramic images.

New Node: Equirectangular Edge Blender
- Blends left/right edges for perfect 360° wraparound continuity
- Essential for eliminating visible seams in panorama viewers
- Three blending modes: cosine (smoothest), linear, smooth
- Automatic edge continuity validation
- Configurable blend width (0-200px, 10-20 recommended)
- Console reporting of seamless status

Implementation Details:
- Added blend_edges() method to EquirectangularProcessor
  - Supports linear, cosine, and smooth blending curves
  - Uses weighted interpolation between edges
  - Cosine mode provides smoothest S-curve transition

- Added check_edge_continuity() method
  - Validates seamlessness with configurable threshold
  - Measures mean absolute difference between edges
  - Default 5% tolerance for quality assurance

Node Features:
- Compatible with all image sizes (including 16K)
- Batch processing support
- Progress bar for multi-image workflows
- Optional continuity checking with detailed feedback
- Integrates seamlessly with existing LatLong workflow

Use Cases:
- Final polish after rotation/transformation
- Pre-processing for interactive 360° viewers
- Quality validation for panoramic content
- Professional VR and 360° photography workflows

Based on proven implementation from ComfyUI-DiT360, adapted for LatLong node pack with full ComfyUI integration and enhanced user feedback.
2025-11-08 04:39:59 +00:00
Claude 79d914d2b2 Update README with v2.0 features and future enhancements
Comprehensive README update documenting all new features and capabilities:

New Features Documented:
- Interactive 360° Panorama Viewer nodes (single image & video)
  - Three.js WebGL rendering
  - Real-time navigation controls
  - Automatic optimization

- 16K Image Support with Tiled Processing
  - Auto-detection for large images
  - Memory usage reduction (60-75%)
  - Configurable tile sizes
  - Performance characteristics

Updated Sections:
- Installation: Added Pillow dependency
- Node Overview: Added viewer nodes (12 & 13)
- Core Nodes: Updated Rotate node with tiling parameters
- Quickstart Examples: Added viewer and 16K processing examples
- Technical Notes: Detailed tiling implementation and viewer architecture
- Troubleshooting: Added solutions for large images and viewer issues

New Sections:
- Performance Benchmarks: Table showing memory/time for 2K-32K images
- Future Enhancements: Comprehensive roadmap including:
  - Multi-threaded tiling
  - GPU tiling support
  - Progressive downsampling
  - VR mode for viewer
  - Hotspot annotations
  - Stereo panorama support
  - HDR processing
  - Custom projection types

The README now provides complete documentation for professional high-resolution 360° workflows with clear performance expectations and future direction.
2025-11-05 14:36:51 +00:00
Claude b980eb1aa2 Add 16K image support with tiled processing for large panoramas
Implemented memory-efficient tiled processing to handle extra-large high-resolution panoramic images up to 16K (16384×8192) and beyond.

New Features:
- Automatic tiling detection: Auto-enables for images >8K pixels
- Configurable tile size: Default 2048px tiles with adjustable size
- Overlap regions: 64px overlap between tiles prevents seam artifacts
- Memory-efficient: Processes images in horizontal bands
- Backward compatible: Small images use fast direct processing

Performance Improvements:
- calculate_optimal_tile_size(): Smart memory-based tile sizing
- should_use_tiled_processing(): Automatic detection for large images
- _rotate_equirectangular_tiled(): Band-based processing with overlap
- Memory cleanup: Explicit deletion of temporary arrays

Node Updates (EquirectangularRotate):
- New parameter 'use_tiling': auto/enabled/disabled
- New parameter 'tile_size': 512-8192 pixels
- Auto-selection based on image dimensions
- Full backward compatibility with existing workflows

Technical Details:
- Processes 16K images in ~4-8 bands depending on tile size
- Reduces peak memory from ~1.6GB to ~400-800MB per image
- Maintains quality with proper overlap blending
- Pre-computes rotation matrix once for efficiency

This enables processing of extra-large panoramas that previously would cause out-of-memory errors, making the node pack suitable for professional high-resolution 360° photography workflows.
2025-11-05 14:32:34 +00:00
Cedar Connor ecdc18bfe5 Merge pull request #3 from cedarconnor/claude/implement-360-panorama-viewer-011CUptduSUoWeqqm6A4rGLA 2025-11-05 06:29:20 -08:00
Claude 523a72eeeb Add interactive 360-degree panorama viewer
Implemented a comprehensive 360° panorama viewing system based on the ComfyUI_preview360panorama reference implementation. This adds interactive visualization capabilities to the LatLong node pack.

Changes:
- Added PanoramaViewerNode: Interactive single-image 360° viewer with pan and zoom controls
- Added PanoramaVideoViewerNode: Frame-by-frame 360° video panorama player
- Created JavaScript viewer using Three.js for WebGL-based equirectangular rendering
- Added required Pillow dependency for image encoding
- Updated .gitignore to allow js/lib/ directory

Features:
- Mouse drag to look around the panorama
- Mouse wheel to zoom in/out (FOV adjustment)
- Base64-encoded PNG delivery for seamless integration
- Automatic image resizing for performance optimization
- Support for grayscale to RGB conversion
- Batch processing support (uses first image from batch)

Technical Implementation:
- js/pano_viewer.js: Three.js-based viewer with MinimalPanoViewer and MinimalPanoVideoViewer classes
- js/lib/three.module.min.js: Three.js library loaded from CDN
- nodes.py: Added viewer node classes with proper OUTPUT_NODE configuration
- __init__.py: Registered new nodes and added WEB_DIRECTORY for JavaScript loading

The viewer integrates seamlessly with ComfyUI's node system and provides an intuitive interface for exploring equirectangular panoramas directly within the workflow.
2025-11-05 14:28:28 +00:00
Cedar Connor f2fe25f4e4 Merge pull request #1 from ComfyNodePRs/pyproject
Add pyproject.toml for Custom Node Registry
2025-10-26 00:53:32 -07:00
async () = process.env.GIT_USERNAME || (await ghUser()).email && (await ghUser()).name || DIE("Missing env.GIT_USERNAME") ed30d93ef7 chore(publish): Add Github Action for Publishing to Comfy Registry 2025-10-22 19:08:05 +00:00
async () = process.env.GIT_USERNAME || (await ghUser()).email && (await ghUser()).name || DIE("Missing env.GIT_USERNAME") 81e96b1f29 chore(pyproject): Add pyproject.toml for Custom Node Registry 2025-10-22 19:08:05 +00:00
Cedar Connor 2ee7b64ae1 Add five new nodes: cubemap conversion, mirror/flip, resize, presets, and face extraction
New nodes:
- Cubemap (3x2) → Equirectangular: Convert cubemap atlases back to equirectangular
- Equirectangular Mirror/Flip: Horizontal/vertical flip with proper spherical wrapping
- Equirectangular Resize: Smart resize with 2:1 aspect ratio preservation
- Equirectangular Rotate (Preset): Quick preset rotations (front, back, left, right, up, down)
- Cubemap Faces Extract: Export all 6 cube faces as separate images

Improvements:
- Enhanced tooltips for better user guidance across all new nodes
- Updated README with comprehensive documentation of new features
- Added processing methods to EquirectangularProcessor module

Technical details:
- Cubemap-to-equirectangular uses face sampling with bilinear interpolation
- Mirror/flip operations use numpy flip operations for efficiency
- Resize maintains standard 2:1 equirectangular aspect ratio by default
- Preset rotations map to common viewing angles with offset adjustments
- All nodes support batch processing and multiple interpolation methods
2025-09-29 21:27:38 -07:00
ComfyUI Bot d3b6d4815f All-in-One: embed controls + tooltips; docs refresh
- Embed rotation/crop/interp controls in Equirectangular Processor node (optional inputs, defaults)
- Add node/param tooltips and node descriptions across all nodes
- Rewrite README with updated usage, node overview, and installation notes
- Include tests/run_node_smoke_tests.py for local sanity checks
2025-08-12 20:00:29 -07:00
Cedar ConnorandClaude 6c2f62291e Add .gitignore to exclude development files
- Add .gitignore file to exclude .claude configuration directory
- Remove .claude directory and __pycache__ files from git tracking
- Exclude Python cache files, virtual environments, and IDE files
- Keep repository clean of development artifacts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:58:18 -07:00
Cedar ConnorandClaude d94fd3e3c6 Add forceInput to all parameters to prevent None values
- Add forceInput: True to all input parameters
- Forces ComfyUI to always provide values instead of None
- Should definitively resolve validation errors
- Ensures robust parameter handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:53:44 -07:00
Cedar ConnorandClaude 5b2221c0b9 Fix ComfyUI validation error by moving all parameters to required
- Move all optional parameters to required section with defaults
- Remove None value handling since ComfyUI will always provide valid values
- Prevents validation error at ComfyUI level before function execution
- All parameters now have proper defaults and will never be None

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:47:54 -07:00
Cedar ConnorandClaude 0be1d35b3f Remove ComfyUI-CustomNodes-Template from node pack
- Delete template directory that was only used for development reference
- Clean up repository to contain only the equirectangular processing nodes
- Remove unnecessary template files and examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:42:21 -07:00
Cedar ConnorandClaude b5f43e6a94 Fix None value validation error in equirectangular processor node
- Remove type hints from output_width and output_height parameters
- Add explicit None value handling for all optional parameters
- Set proper defaults when ComfyUI passes None values
- Prevents validation error: "int() argument must be a string, a bytes-like object or a real number, not 'NoneType'"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:41:01 -07:00
Cedar ConnorandClaude 79eaabc987 Add comprehensive README documentation
- Complete feature overview and node descriptions
- Installation instructions for multiple methods
- Usage examples and technical details
- Troubleshooting and performance tips
- Professional documentation for equirectangular processing capabilities

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:38:51 -07:00
Cedar ConnorandClaude 75bea5f363 Fix None value validation error in combined processor node
- Replace None values with default integers (1024, 512) for output dimensions
- Prevents ComfyUI validation error when crop_to_square is used
- Values are ignored when not using crop_to_180, so defaults are safe
- Fixes: "int() argument must be a string, a bytes-like object or a real number, not 'NoneType'"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:35:55 -07:00
Cedar ConnorandClaude bc1ea1ef89 Add square crop option and change default pitch to -65 degrees
- Add crop_to_square function that crops width to match original image height
- Create dedicated EquirectangularCropSquare node for square cropping
- Add crop_to_square option to combined processor node
- Change default pitch rotation from 0° to -65° across all nodes
- Square crop takes precedence over 180° crop when both are enabled
- Perfect for creating square images at original height resolution

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:30:29 -07:00
Cedar ConnorandClaude cf9cab6102 Add high-quality filtering options to equirectangular nodes
- Implement multiple interpolation methods: nearest, bilinear, bicubic, lanczos
- Add interpolation parameter to all three node types with dropdown selection
- Use scipy map_coordinates with spline interpolation for rotation transforms
- Use OpenCV LANCZOS4 for resize operations during cropping
- Set Lanczos as default for highest quality filtering
- Add proper longitude wrapping mode for equirectangular projection
- Improve image quality significantly during transformations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:25:35 -07:00
Cedar ConnorandClaude ba19840173 Fix blown out image issue in rotation processing
- Remove uint8 conversion that was causing value clipping
- Keep images in float32 format throughout processing pipeline
- Add proper value clamping to [0,1] range after processing
- Maintain image quality during rotation and horizon adjustments

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:16:13 -07:00
Cedar ConnorandClaude ea1aa67936 Add ComfyUI equirectangular image processing nodes
- Implement 3D rotation (yaw/pitch/roll) for equirectangular images
- Add horizon line adjustment functionality
- Support 180-degree longitude cropping with custom output dimensions
- Include bilinear interpolation for smooth transformations
- Provide three node types: rotation-only, crop-only, and combined processor
- Add comprehensive mathematical coordinate transformations
- Support batch processing with progress indicators

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 10:55:22 -07:00