426 lines
10 KiB
Markdown
426 lines
10 KiB
Markdown
|
|
# 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]
|
||
|
|
|