7.0 KiB
Day/Night Cycle System - Dubai Metaverse
Overview
This document describes the day/night cycle system implementation for the Dubai Metaverse project.
System Architecture
BP_DayNightCycle Blueprint
Purpose: Central controller for time of day and lighting transitions
Components
- Time Variable: Float (0-24 hours)
- Sun Controller: Controls directional light rotation
- Sky Controller: Controls sky color and atmosphere
- Light Controller: Controls light intensity and color
- Event System: Triggers events at specific times
Time System
Time Format
- Range: 0.0 - 24.0 (hours)
- Precision: Float (allows smooth transitions)
- Update: Real-time or accelerated time
Time Progression
- Real-Time: 1:1 with real time (optional)
- Accelerated: Faster time progression for demo
- Manual Control: Manual time adjustment for testing
Time of Day Presets
Sunrise (6:00-8:00)
Duration: 2 hours
Lighting:
- Sun Intensity: 4-6 lux (increasing)
- Sun Color: Warm orange/red → white
- Sky Color: Warm, dramatic → clear
- Temperature: 4000K → 5500K
Atmosphere:
- Fog Density: Medium
- Fog Color: Warm orange
- Volumetric: Enhanced
Post-Process:
- Color Grading: Warm LUT
- Bloom: Enhanced
- Saturation: High
Daytime (8:00-17:00)
Duration: 9 hours
Lighting:
- Sun Intensity: 8-12 lux (peak at noon)
- Sun Color: White
- Sky Color: Clear blue
- Temperature: 6500K-7500K
Atmosphere:
- Fog Density: Low
- Fog Color: Neutral
- Volumetric: Subtle
Post-Process:
- Color Grading: Natural LUT
- Bloom: Moderate
- Saturation: Natural
Characteristics:
- Harsh, direct sunlight
- Strong shadows
- High contrast
- Clear visibility
Sunset (17:00-19:00)
Duration: 2 hours
Lighting:
- Sun Intensity: 4-6 lux (decreasing)
- Sun Color: White → warm orange/red
- Sky Color: Clear → warm, dramatic
- Temperature: 6500K → 4000K
Atmosphere:
- Fog Density: Medium
- Fog Color: Warm orange
- Volumetric: Enhanced
Post-Process:
- Color Grading: Warm LUT
- Bloom: Enhanced
- Saturation: High
Characteristics:
- Warm, dramatic lighting
- Long shadows
- High contrast
- Atmospheric
Night (19:00-6:00)
Duration: 11 hours
Lighting:
- Sun Intensity: 0-1 lux (moonlight)
- Sun Color: Cool blue
- Sky Color: Dark, starry
- Temperature: 8000K-10000K
Atmosphere:
- Fog Density: Low
- Fog Color: Cool blue/gray
- Volumetric: Subtle
Post-Process:
- Color Grading: Cool LUT
- Bloom: Enhanced (neon lights)
- Saturation: Reduced
Artificial Lighting:
- Neon Signs: Bright, saturated colors
- Street Lights: Warm, yellow
- Building Lights: Interior lights visible
- Marina Lights: Reflected in water
Characteristics:
- Cool, atmospheric lighting
- Soft shadows
- Low contrast
- Neon accents
Implementation
Blueprint Setup
-
Create BP_DayNightCycle:
- Create Blueprint class
- Add time variable
- Add event tick or timer
-
Sun Rotation:
- Calculate sun rotation based on time
- Rotate directional light
- Adjust sun intensity
-
Sky Color:
- Interpolate sky color based on time
- Use curve or lerp
- Update sky light
-
Light Intensity:
- Interpolate light intensity based on time
- Use curve for smooth transitions
- Update directional light
-
Atmosphere:
- Adjust fog density based on time
- Adjust fog color based on time
- Update exponential height fog
-
Post-Process:
- Switch LUTs based on time
- Adjust post-process settings
- Update post-process volume
Curves
Use Curves for Smooth Transitions:
- Sun Intensity Curve: Float curve
- Sun Color Curve: Vector curve (RGB)
- Sky Color Curve: Vector curve (RGB)
- Fog Density Curve: Float curve
Transitions
Smooth Transitions
Interpolation:
- Use linear interpolation (lerp) for smooth transitions
- Use curves for natural transitions
- Update every frame or at intervals
Transition Duration:
- Sunrise/Sunset: 2 hours (smooth transition)
- Day/Night: Gradual transition
- Avoid: Abrupt changes
Event Triggers
Events at Specific Times:
- 6:00 AM: Sunrise start
- 8:00 AM: Daytime start
- 5:00 PM: Sunset start
- 7:00 PM: Night start
Use Cases:
- Trigger NPC behavior changes
- Trigger audio changes
- Trigger particle effects
Testing
Manual Testing
-
Time Control:
- Add manual time control (slider)
- Test each time of day
- Verify transitions
-
Visual Validation:
- Compare to reference photos
- Verify lighting matches Dubai aesthetic
- Check transitions are smooth
-
Performance Testing:
- Test performance at different times
- Verify no performance issues
- Optimize if needed
Automated Testing
- Use
scripts/lighting_validation.pyto validate:- Time transitions
- Light intensity values
- Color values
- Performance
Performance Considerations
Optimization
-
Update Frequency:
- Update every frame (smooth)
- Or update at intervals (performance)
-
Interpolation:
- Use efficient interpolation
- Cache values when possible
-
Light Updates:
- Batch light updates
- Update only when needed
Dubai-Specific Considerations
Climate
- Desert Climate: Hot, dry, clear skies
- Sun Intensity: Very high during day
- Heat Haze: Visible during day
- Clear Nights: Clear, starry nights
Lighting Characteristics
- Daytime: Harsh, direct sunlight
- Sunset: Dramatic, warm colors
- Night: Cool, clear with artificial lights
- Reflections: Strong reflections from glass
Integration
With Other Systems
- NPCs: NPC behavior may change based on time
- Vehicles: Vehicle lights at night
- Audio: Ambient audio changes with time
- Particles: Particle effects (dust, heat haze) based on time
With Cinematics
- Time Control: Set specific time for cinematic shots
- Transitions: Use time transitions in cinematics
- Consistency: Maintain time consistency across shots
Troubleshooting
Common Issues
Issue: Transitions not smooth
- Solution: Use curves for interpolation
- Solution: Increase update frequency
Issue: Lighting doesn't match reference
- Solution: Adjust color values
- Solution: Adjust intensity values
Issue: Performance issues
- Solution: Reduce update frequency
- Solution: Optimize interpolation
Documentation
Parameters
Document all exposed parameters:
- Time variable
- Sun rotation
- Light intensity
- Color values
- Transition curves
Usage
Document how to use the system:
- How to set time
- How to adjust transitions
- How to add new time presets
Version: 1.0 Last Updated: [Current Date]