Users can reproduce the preview simulation using examples from the worvai.managers.light_manager
extension!
Welcome diverse and refined examples contributing to the community!
The Light Manager extension provides a powerful and intuitive interface for managing lighting in Isaac Sim environments. It offers comprehensive control over all USD light types with advanced features including time-based animations, attribute management, and specialized functionalities like sun tracking.
- Unified Light Management: Control all USD light types (DistantLight, DomeLight, DiskLight, RectLight, SphereLight, CylinderLight) from a single interface
- Real-time Attribute Control: Dynamically adjust light properties like intensity, color, exposure, and geometry-specific attributes
- Advanced Animation System: Create sophisticated lighting animations with time-based property interpolation
- Sun Tracking: Simulate realistic day/night cycles with automated sun movement and color temperature changes
- Non-destructive Workflow: Original light settings are preserved and can be restored at any time
- Extensible Architecture: Modular design allows for easy addition of new lighting features and functionalities
- Multi-Light Selection: Add and manage multiple lights simultaneously
- Attribute Filtering: Intelligent filtering of relevant attributes per light type
- Real-time Updates: Live synchronization between UI controls and USD stage properties
- Reset Functionality: Restore lights to original settings or reset individual attributes
- Intensity & Exposure: Precise control over light brightness and exposure values
- Color Management: RGB color picker with support for color temperature workflows
- Geometry Properties: Type-specific controls (radius for sphere lights, width/height for rect lights, etc.)
- Visibility & Purpose: Control light visibility and rendering purpose
- Sun Tracking System:
- Time-based intensity modulation
- Color temperature transitions (sunrise to sunset)
- Automatic angle progression for distant lights
- Customizable animation duration and parameters
- Timeline Integration: Seamless integration with Isaac Sim's timeline system
- Property Animation: Smooth interpolation between start/end values over time
The extension supports all USD light types available in Isaac Sim:
Light Type | Specific Controls | Advanced Features |
---|---|---|
DistantLight | Angle | Sun tracking, directional animation |
DomeLight | Guide radius, texture file/format | Environment lighting control |
DiskLight | Radius | Area light simulation |
RectLight | Width, height, texture file | Rectangular area lighting |
SphereLight | Radius, treat as point | Point/area light modes |
CylinderLight | Length, radius, treat as line | Linear lighting effects |
Isaac Sim Version | Support Status | Notes |
---|---|---|
4.2.0 | Older release, APIs incompatible | |
4.5.0 | Fully tested and verified | |
5.0.0 | Compatibility under development |
- NVIDIA Isaac Sim 4.5.0+ (2025.02 or later)
- Python 3.10+
- Open Isaac Sim
- Navigate to
Window > Extensions
- Search for "Light Manager"
- Click "Install"
-
Clone this repository:
git clone https://github.com/worv-ai/LightManager.git
-
Copy the extension to your Isaac Sim extensions directory:
cp -r exts/worvai.managers.light_manager ~/path/to/isaac-sim/extsUser
-
Enable the extension in Isaac Sim Extension Manager
- Open Isaac Sim and load your scene with lights
- Enable the Extension: Navigate to
Window > Extensions
and enable "Light Manager" - Access the Interface: Open the Light Manager panel from the menu or dock it to your preferred location
- Add Lights: Use the dropdown to select and add lights from your scene to the manager
- Control Properties: Expand the "Basic" section to adjust intensity, color, exposure, and geometry-specific attributes
- Enable Advanced Features: Use the "Advanced Functionalities" section to enable sun tracking or other animations
# Access the Light Manager API programmatically
from worvai.managers.light_manager.api import AttributeUtils
from worvai.managers.light_manager.impl.utils import LightPrimManager
# Get a light prim and create a manager
stage = omni.usd.get_context().get_stage()
light_prim = stage.GetPrimAtPath("/World/Lights/sky")
light_manager = LightPrimManager.from_prim(light_prim)
# Create time-based animation for intensity
intensity_attr = light_prim.GetAttribute("inputs:intensity")
intensity_util = AttributeUtils(intensity_attr)
intensity_util.set_live_update()
# Define animation keyframes (time, value)
intensity_util.set_attr_path([
(0, 0.0), # Night
(150, 1500.0), # Dawn
(300, 6000.0), # Sunrise
(600, 10000.0), # Noon
(900, 7000.0), # Sunset
(1200, 0.0) # Night
])
The Light Manager follows a modular architecture:
worvai.managers.light_manager/
├── impl/
│ ├── extension.py # Main extension class
│ ├── ui_builder.py # UI construction and management
│ ├── utils.py # Light prim management utilities
│ └── sub_ui/
│ ├── attributes.py # Attribute widget builders
│ └── funcs/
│ └── track_sun_distantlight.py # Sun tracking functionality
├── api/
│ └── light_utils.py # Public API utilities
└── example/
├── preview.py # Example simulation
└── utils/
├── lamp_light.py # Warehouse lighting example
└── distant_light.py # Distant light examples
- LightPrimManager: Manages individual USD light prims and their original state
- UIBuilder: Constructs and manages the user interface dynamically
- AttributeUtils: Provides timeline-based attribute animation
- TimeBasedLightController: Handles advanced animation features like sun tracking
# Create from existing prim
light_manager = LightPrimManager.from_prim(prim)
light_manager = LightPrimManager.from_path("/World/Lights/sun")
# Reset to original values
light_manager.reset_to_original() # Reset all attributes
light_manager.reset_to_original("inputs:intensity") # Reset specific attribute
# Create time-based animation
attr_util = AttributeUtils(light_prim.GetAttribute("inputs:intensity"))
attr_util.set_live_update() # Enable real-time updates
attr_util.set_attr_path([(time1, value1), (time2, value2), ...])
The extension includes comprehensive examples in the example/
directory:
- preview.py: Complete warehouse simulation with day/night cycle
- lamp_light.py: Industrial lighting control with programmatic lamp management
- distant_light.py: Sun/sky light manipulation examples
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch
- Make your changes with appropriate tests
- Submit a pull request with a clear description
For detailed contribution guidelines, see our Contributing Guide.
This project is licensed under the Apache-2.0 License - see the LICENSE file for details.
See CHANGELOG.md for version history and updates.
We would like to express our gratitude to the following:
- NVIDIA Corporation for
Isaac Sim
and theOmniverse
platform that makes this extension possible - Pixar Animation Studios for the
Universal Scene Description (USD)
framework
Author: kickthemoon0817 kickthemoon0817@gmail.com
Version: 0.1.0
Isaac Sim Compatibility: 4.5.0 (2025.02+)