# Texturing Workflow - Dubai Metaverse ## Overview This document describes the texturing workflow from Substance Painter to Unreal Engine for the Dubai Metaverse project. ## Workflow Overview 1. **Model Preparation**: Prepare model with UVs 2. **Substance Painter**: Create textures 3. **Export**: Export texture sets 4. **Import to Unreal**: Import and create materials 5. **Assignment**: Assign materials to meshes --- ## Model Preparation ### UV Mapping - **UDIM Workflow**: Use UDIM for hero assets (8K textures) - **Standard UVs**: Use standard UVs for primary/background assets - **UV Layout**: Optimize UV layout for texture space - **Seams**: Minimize visible seams ### Export for Texturing - **Format**: FBX or OBJ - **Include**: - High-poly mesh (for baking) - Low-poly mesh (for texturing) - UVs - Material IDs (if using) --- ## Substance Painter Workflow ### Project Setup 1. **Create Project**: - Import low-poly mesh - Import high-poly mesh (for baking) - Set texture resolution (8K for hero, 4K for primary) 2. **Bake Maps**: - Normal map (from high-poly) - Ambient Occlusion - Curvature - Position - Thickness ### Texture Creation #### Base Color - **Purpose**: Albedo/diffuse colors - **Content**: Material colors, patterns, details - **Notes**: No lighting information, pure color #### Normal - **Purpose**: Surface detail and geometry - **Content**: Bumps, surface detail, geometry - **Source**: Baked from high-poly or painted - **Notes**: RGB format, tangent space #### Roughness - **Purpose**: Surface roughness (shininess) - **Content**: - Glass: 0.05-0.1 (very smooth) - Metal: 0.1-0.3 (smooth) - Concrete: 0.4-0.6 (rough) - **Notes**: Critical for material realism #### Metallic - **Purpose**: Metallic vs. dielectric materials - **Content**: - Metal: 1.0 (white) - Non-metal: 0.0 (black) - Mixed: Grayscale values - **Notes**: Binary or grayscale #### Ambient Occlusion - **Purpose**: Shadow and occlusion information - **Content**: Baked AO or painted - **Notes**: Enhances depth and realism #### Additional Maps (if needed) - **Emissive**: For neon lights, interior lighting - **Height**: For parallax/displacement (optional) - **Opacity**: For transparency (glass) ### Export Settings #### Resolution - **Hero Assets**: 8K (8192x8192) per UDIM tile - **Primary Buildings**: 4K (4096x4096) - **Background**: 2K (2048x2048) #### Format - **Export**: PNG or TGA - **Bit Depth**: 16-bit (recommended) - **Color Space**: sRGB for base color, linear for others #### Export Configuration - **Base Color**: sRGB, 16-bit PNG - **Normal**: Linear, 16-bit PNG - **Roughness**: Linear, 16-bit PNG - **Metallic**: Linear, 16-bit PNG - **AO**: Linear, 16-bit PNG - **Emissive**: sRGB, 16-bit PNG (if needed) --- ## Import to Unreal Engine ### Texture Import 1. **Import Textures**: - Drag textures to Content Browser - Or use Import button 2. **Import Settings**: - **Compression**: - Base Color: BC7 (DXT5) - Normal: BC5 - Roughness/Metallic/AO: BC7 - **sRGB**: - Base Color: Enabled - Others: Disabled - **Mip Maps**: Generate mip maps - **Virtual Texturing**: Enable if using (optional) ### Material Creation 1. **Create Material**: - Create new material asset - Name: `M_AssetName_Type` 2. **Texture Assignment**: - Base Color: Connect Base Color texture - Normal: Connect Normal texture - Roughness: Connect Roughness texture - Metallic: Connect Metallic texture - Ambient Occlusion: Connect AO texture 3. **Material Settings**: - **Shading Model**: Default Lit - **Blend Mode**: Opaque (or Translucent for glass) - **Two-Sided**: Enable for glass if needed 4. **Parameters**: - Expose parameters for material instances - Color tint - Roughness multiplier - Metallic value ### Material Instances 1. **Create Instance**: - Right-click material > Create Material Instance - Name: `MI_AssetName_Variant` 2. **Adjust Parameters**: - Color variations - Roughness adjustments - Other exposed parameters --- ## UDIM Workflow (Hero Assets) ### UDIM Overview - **UDIM**: U-Dimension texture mapping - **Tiles**: Multiple UV tiles (1001, 1002, 1003, etc.) - **Usage**: Large assets requiring high-resolution textures ### Texture Naming - **Format**: `T_AssetName_MapType_UDIMNumber` - **Example**: - `T_Hero_CayanTower_BaseColor_1001` - `T_Hero_CayanTower_BaseColor_1002` ### Import UDIM Textures 1. **Import All Tiles**: Import all UDIM tiles 2. **Create Material**: Create material with UDIM support 3. **Texture Arrays**: Use texture arrays or virtual textures 4. **UV Mapping**: Ensure UVs use UDIM coordinates --- ## Quality Validation ### Texture Quality - [ ] Resolution meets requirements - [ ] No compression artifacts - [ ] Colors are accurate - [ ] Normal maps are correct - [ ] Roughness values are realistic - [ ] Metallic values are correct ### Material Quality - [ ] Materials look realistic - [ ] PBR workflow is correct - [ ] Lighting responds correctly - [ ] Performance is acceptable --- ## Best Practices ### Texture Creation 1. **Reference**: Use real-world material references 2. **Consistency**: Maintain consistency across assets 3. **Detail**: Add appropriate detail level 4. **Optimization**: Balance quality and performance ### Material Creation 1. **Shared Materials**: Use shared materials where possible 2. **Instances**: Use material instances for variations 3. **Performance**: Optimize shader complexity 4. **Documentation**: Document material usage ### Workflow 1. **Iterate**: Iterate on textures based on feedback 2. **Test**: Test materials in level regularly 3. **Validate**: Validate quality and performance 4. **Document**: Document texture and material specifications --- ## Troubleshooting ### Common Issues **Issue**: Textures look washed out - **Solution**: Check sRGB settings (base color should be sRGB) **Issue**: Normal maps not working - **Solution**: Check normal map format (BC5 compression) - **Solution**: Verify normal map is tangent space **Issue**: Materials too shiny/rough - **Solution**: Adjust roughness values - **Solution**: Check metallic values **Issue**: Performance issues - **Solution**: Reduce texture resolution - **Solution**: Use texture streaming - **Solution**: Optimize material complexity --- ## Tools ### Primary Tools - **Substance Painter**: Primary texturing tool - **Substance Designer**: Procedural materials (optional) - **Photoshop**: Additional editing (optional) ### Validation Tools - **Unreal Material Editor**: Material validation - **Performance Profiler**: Performance testing - **Texture Validation Script**: `scripts/texture_validation.py` --- **Version**: 1.0 **Last Updated**: [Current Date]