Files
metaverseDubai/PIPELINE.md

426 lines
10 KiB
Markdown
Raw Normal View History

# Development Pipeline - Dubai Metaverse
## Overview
This document outlines the complete development pipeline for the Dubai Metaverse project, including asset creation workflows, import processes, and iteration cycles.
## Pipeline Stages
### 1. Pre-Production
#### Concept & Planning
- **Input**: Art bible, district selection, reference images
- **Output**: Asset list, technical specifications, style guides
- **Tools**: Photoshop, Midjourney, Stable Diffusion
- **Deliverables**: Concept art, moodboards, asset breakdown
#### Data Acquisition
- **Input**: OpenStreetMap, GIS data, elevation data
- **Output**: Geospatial data, terrain data, building footprints
- **Tools**: Python scripts, GIS software, RealityCapture
- **Deliverables**: Processed data, terrain mesh, building outlines
---
### 2. Asset Creation
#### 3D Modeling
**Workflow**:
1. **Blockout**: Create basic shape in Blender/Maya
2. **High-Poly**: Add detail, create high-poly version
3. **Low-Poly**: Create optimized low-poly (if not using Nanite)
4. **UV Mapping**: Unwrap UVs, prepare for texturing
5. **Export**: Export to FBX or direct to Unreal
**Tools**:
- Blender (free, recommended)
- Maya (professional)
- Houdini (procedural generation)
**Standards**:
- **Hero Assets**: High-poly only (Nanite)
- **Primary Buildings**: High-poly + low-poly with LODs
- **Background**: Simplified geometry with LODs
- **Format**: FBX 2020 or newer
**Naming Convention**: See [NAMING_CONVENTIONS.md](NAMING_CONVENTIONS.md)
---
#### Texturing
**Workflow**:
1. **Bake Maps**: Bake normal, AO, curvature maps from high-poly
2. **Texture Creation**: Create textures in Substance Painter
3. **Material Setup**: Set up PBR materials
4. **Export**: Export texture sets
5. **Import**: Import to Unreal, create materials
**Tools**:
- Substance Painter (primary)
- Substance Designer (procedural materials)
- Photoshop (additional editing)
**Texture Sets**:
- **Base Color**: Albedo/diffuse
- **Normal**: Normal map
- **Roughness**: Surface roughness
- **Metallic**: Metallic map
- **AO**: Ambient occlusion
- **Additional**: Emissive, height (where needed)
**Resolution Standards**:
- **Hero Assets**: 8K (8192x8192) - UDIM workflow
- **Primary Buildings**: 4K (4096x4096)
- **Background**: 2K (2048x2048)
**Format**:
- **Export**: PNG or TGA (16-bit)
- **Import**: BC7 (DXT5) for color, BC5 for normals
---
#### Photogrammetry (Optional)
**Workflow**:
1. **Photography**: Capture 100-500 photos of building
2. **Processing**: Process in RealityCapture or Luma AI
3. **Cleanup**: Clean mesh, fix holes, optimize
4. **Texturing**: Generate textures from photos
5. **Export**: Export mesh and textures
6. **Import**: Import to Unreal, convert to Nanite
**Tools**:
- RealityCapture (professional)
- Luma AI (simplified)
- Agisoft Metashape (alternative)
**Requirements**:
- High-quality camera (DSLR or mirrorless)
- Consistent lighting
- Overlapping photos (70-80% overlap)
- Multiple angles
---
### 3. Procedural Generation
#### Houdini Workflow
**Process**:
1. **Create HDA**: Build Houdini Digital Asset
2. **Parameters**: Set up exposed parameters
3. **Export**: Export HDA file
4. **Import**: Import HDA to Unreal via Houdini Engine
5. **Instance**: Create instances in level
6. **Bake**: Bake to static meshes (optional)
**Use Cases**:
- Modular building generation
- Road network generation
- Terrain sculpting
- Complex procedural geometry
**Tools**:
- Houdini (Houdini Engine plugin in Unreal)
---
#### PCG (Procedural Content Generation) Workflow
**Process**:
1. **Create Graph**: Create PCG graph in Unreal
2. **Define Rules**: Set up placement rules
3. **Input Data**: Provide input (splines, volumes, points)
4. **Generate**: Execute graph to generate content
5. **Iterate**: Adjust rules and regenerate
6. **Bake**: Bake to static (optional, for performance)
**Use Cases**:
- Building placement
- Road props (lamp posts, barriers)
- Vegetation placement
- Traffic generation
**Tools**:
- Unreal Engine PCG Framework (built-in)
---
### 4. Import to Unreal
#### Static Mesh Import
**Process**:
1. **Import Settings**: Configure import settings
2. **Nanite**: Enable Nanite if applicable
3. **Materials**: Assign materials or create new
4. **LODs**: Generate LODs if not using Nanite
5. **Collision**: Generate collision meshes
6. **Validation**: Validate mesh and materials
**Import Settings**:
- **Nanite**: Enable for high-poly static meshes
- **LODs**: Generate LODs for non-Nanite meshes
- **Collision**: Auto-generate or use custom
- **Lightmap UVs**: Generate if needed
**Validation Checklist**:
- ✅ Mesh imports without errors
- ✅ Materials assigned correctly
- ✅ Nanite enabled (if applicable)
- ✅ Collision generated
- ✅ Scale is correct
- ✅ Naming follows conventions
---
#### Texture Import
**Process**:
1. **Import**: Import texture files
2. **Compression**: Set compression settings
3. **sRGB**: Configure sRGB (color maps only)
4. **Mip Maps**: Generate mip maps
5. **Virtual Texturing**: Enable if using virtual textures
**Settings**:
- **Base Color**: sRGB enabled, BC7 compression
- **Normal**: sRGB disabled, BC5 compression
- **Roughness/Metallic**: sRGB disabled, BC7 compression
- **AO**: sRGB disabled, BC7 compression
---
#### Material Creation
**Process**:
1. **Create Material**: Create material asset
2. **Texture Assignment**: Assign texture maps
3. **Parameters**: Expose parameters for instances
4. **Shading Model**: Set shading model (Default Lit)
5. **Blend Mode**: Set blend mode (Opaque, Masked, Translucent)
6. **Test**: Test material in level
**Material Instances**:
- Create material instances for variations
- Expose parameters (color, roughness, etc.)
- Use instances for similar materials
---
### 5. Level Assembly
#### World Partition Setup
**Process**:
1. **Enable World Partition**: Enable in project settings
2. **Cell Size**: Configure cell size (128m default)
3. **Data Layers**: Create data layers for organization
4. **Streaming**: Set up streaming volumes
5. **Validation**: Test streaming performance
**Data Layer Organization**:
- Buildings
- Props
- Vegetation
- Lighting
- Vehicles
- NPCs
---
#### Placement
**Process**:
1. **Manual Placement**: Place assets manually in level
2. **PCG Placement**: Use PCG for procedural placement
3. **Spline Placement**: Use splines for roads, paths
4. **Validation**: Validate placement and scale
**Placement Tools**:
- Unreal Editor (manual)
- PCG Framework (procedural)
- Spline tools (roads, paths)
---
### 6. Lighting & Atmosphere
#### Lighting Setup
**Process**:
1. **Sky Light**: Set up HDRI sky
2. **Directional Light**: Configure sun light
3. **Lumen**: Enable Lumen GI and reflections
4. **Day/Night Cycle**: Set up time of day system
5. **Atmosphere**: Configure volumetric fog
6. **Post-Process**: Set up post-process volume
**Lighting Workflow**:
- Start with HDRI sky
- Add directional light (sun)
- Adjust Lumen settings
- Set up day/night cycle
- Add atmosphere and fog
- Configure post-process
---
### 7. Gameplay Systems
#### Blueprint Creation
**Process**:
1. **Design**: Plan blueprint functionality
2. **Create**: Create blueprint class
3. **Implement**: Implement logic
4. **Test**: Test in level
5. **Iterate**: Refine based on testing
**Blueprint Organization**:
- Gameplay (player, interactions)
- Vehicles (Chaos vehicles)
- NPCs (AI, behavior)
- Systems (day/night, weather)
---
### 8. Optimization
#### Performance Optimization
**Process**:
1. **Profile**: Profile performance (Unreal Insights)
2. **Identify**: Identify bottlenecks
3. **Optimize**: Apply optimizations
4. **Validate**: Validate performance improvement
5. **Iterate**: Repeat as needed
**Optimization Techniques**:
- LOD generation and assignment
- Nanite clustering
- Material optimization
- Lightmap optimization
- Streaming optimization
- Draw call reduction
---
### 9. Cinematic Rendering
#### Sequencer Workflow
**Process**:
1. **Create Sequence**: Create Sequencer asset
2. **Add Cameras**: Add camera actors
3. **Animate**: Animate cameras and objects
4. **Configure**: Configure render settings
5. **Render**: Render with Movie Render Queue
**Movie Render Queue**:
- Set output format (EXR, MP4)
- Configure resolution (8K, 4K)
- Set up additional passes
- Configure anti-aliasing
- Render sequence
---
## Iteration Cycle
### Asset Iteration
1. **Create/Update**: Create or update asset in DCC tool
2. **Export**: Export to Unreal format
3. **Import**: Import to Unreal
4. **Review**: Review in Unreal
5. **Feedback**: Gather feedback
6. **Iterate**: Return to step 1 if needed
### Level Iteration
1. **Place/Update**: Place or update assets in level
2. **Test**: Test in editor or play mode
3. **Review**: Review visual quality and performance
4. **Feedback**: Gather feedback
5. **Iterate**: Return to step 1 if needed
---
## Quality Control
### Asset Validation
**Checklist**:
- ✅ Naming follows conventions
- ✅ Scale is correct
- ✅ Materials are assigned
- ✅ Textures are correct resolution
- ✅ LODs are generated (if needed)
- ✅ Collision is set up
- ✅ Performance is acceptable
### Level Validation
**Checklist**:
- ✅ All assets placed correctly
- ✅ Lighting is correct
- ✅ Performance targets met
- ✅ No visual artifacts
- ✅ Interactions work correctly
- ✅ Streaming works correctly
---
## Automation
### Scripts
- **Asset Validation**: `scripts/validate_assets.sh`
- **Texture Validation**: `scripts/texture_validation.py`
- **Performance Audit**: `scripts/performance_audit.py`
- **Documentation Generation**: `scripts/generate_docs.sh`
### Tools
- **Houdini HDAs**: Procedural generation tools
- **PCG Graphs**: Reusable procedural content
- **Material Functions**: Reusable material logic
---
## Version Control
### Asset Versioning
- Use Git LFS for large files
- Commit assets after validation
- Use descriptive commit messages
- Tag major milestones
### Level Versioning
- Commit level changes regularly
- Use branches for major features
- Merge after review and testing
---
## Best Practices
1. **Always Validate**: Validate assets before committing
2. **Follow Naming**: Follow naming conventions strictly
3. **Document Changes**: Document significant changes
4. **Test Regularly**: Test in level regularly
5. **Optimize Early**: Optimize for performance early
6. **Iterate Quickly**: Short iteration cycles
7. **Communicate**: Communicate changes to team
---
**Version**: 1.0
**Last Updated**: [Current Date]