Commit Graph
9 Commits
Author SHA1 Message Date
Cedar 5eddc29909 Fix panorama geometry and add editing workflows 2026-09-15 13:11:13 -07: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 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 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 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