t1k:unity:dots-rendering:perspective-3d
| Field | Value |
|---|---|
| Module | dots-rendering |
| Version | 2.1.7 |
| Effort | high |
| Tools | — |
Keywords: 3D, DOTS, perspective, rendering
How to invoke
Section titled “How to invoke”/t1k:unity:dots-rendering:perspective-3dDOTS Perspective: 3D
Section titled “DOTS Perspective: 3D”When This Skill Triggers
Section titled “When This Skill Triggers”- 3D mesh rendering, LODGroup, skeletal animation, impostor billboard
- Third-person camera, orbit camera, perspective projection
- URP/Lit materials, shadow casting, light probes
Key Concepts
Section titled “Key Concepts”- Simulation: XZ plane (always). Standard 3D NavMesh pathfinding on XZ ground
- Presentation: Perspective camera. 3D meshes (primitives or skeletal). LOD for performance
- No coordinate remapping — what you see is what the simulation computes
Camera Setup
Section titled “Camera Setup”- Perspective camera with orbit/spring-arm or fixed angle
- Adjust position based on battle AABB and FOV (same math as isometric)
- Can use Cinemachine for production cameras
-> See
references/camera-3d-guide.md
Rendering
Section titled “Rendering”- Meshes: Unity primitives (Capsule, Cylinder, Sphere) or Synty Polygon skeletal models
- Shader:
Universal Render Pipeline/Litwith per-unit color and smoothness - LODGroup: LOD0 = full 3D mesh, LOD1 = Amplify Impostor billboard
- Shadows: Full shadow casting enabled (unlike 2D perspectives)
-> See
references/rendering-3d-guide.md
Navigation
Section titled “Navigation”NavigationAuthoring.EnableGrounding = true(default) — DOTSGroundingSystem applies YRangedAttackAuthoring.ArcHeight = 5f— parabolic arc projectiles- Standard NavMeshSurface with PhysicsColliders geometry
- Full
SonarAvoidanceenabled (viable at 3D unit counts, typically < 500)
Animation
Section titled “Animation”- Skeletal: Animator + AnimatorController on mesh child (not DOTS-native yet)
- Impostor: static billboard at LOD1 (no animation at distance)
- Death:
DeathAnimationSystemhandles scale shrink (no alpha fade needed for 3D)
LODGroup + Impostor Pattern
Section titled “LODGroup + Impostor Pattern”Prefab Structure
Section titled “Prefab Structure”UnitPrefab (root — authoring components here)├── Mesh (child — MeshFilter + MeshRenderer + LOD0)│ └── Primitive mesh with URP/Lit material├── LOD1_Impostor (child — MeshFilter + MeshRenderer)│ └── Amplify Impostor mesh + tinted material└── LODGroup (on root) ├── LOD0: transition at 0.15 → Mesh renderer └── LOD1: transition at 0.0 (never cull) → Impostor rendererLOD Configuration
Section titled “LOD Configuration”var lodGroup = root.AddComponent<LODGroup>();lodGroup.SetLODs(new[] { new LOD(0.15f, new[] { lod0Renderer }), // LOD0 = 3D mesh new LOD(0f, new[] { impostorRenderer }), // LOD1 = impostor (never cull)});lodGroup.RecalculateBounds();Impostor Team Color Tinting
Section titled “Impostor Team Color Tinting”// Per-unit material instance (don't modify shared atlas)var tintedMat = new Material(baseMat);tintedMat.SetColor("_BaseColor", teamColor);AssetDatabase.CreateAsset(tintedMat, folder + name + "_Tinted.mat");impostorRenderer.sharedMaterial = tintedMat;Gotchas
Section titled “Gotchas”| # | Issue | Fix |
|---|---|---|
| 1 | Synty models: 5 SMRs + 50 bones per unit = 0.9 FPS at 100 units | Use Amplify Impostor LOD1 at distance |
| 2 | Impostor atlas shared across units — team tint modifies all | Create per-unit material instance with _BaseColor override |
| 3 | Animator on source model captures dynamic pose during impostor bake | Disable Animator before baking impostors |
| 4 | Lightmap baking corrupts ChunkWorldRenderBounds with NaN | Do NOT bake lightmaps for DOTS entities. Use realtime lighting |
| 5 | Mesh pivot at center, not feet — authoring offset needed | Child mesh at (0, halfHeight, 0), root at feet |
Cross-References
Section titled “Cross-References”dots-ecs— ECS fundamentalsdots-rpg— Combat, stats, navigation authoring componentsdots-graphics— RenderMeshArray, MaterialMeshInfo, LOD in ECSamplify-impostors— Impostor baking workflow, atlas config, URP shaderdots-battlefield— ArenaConfig, tree LOD with impostorsunity-urp— URP/Lit shader, shadow settings, pipeline configunity-shadow-optimization— Shadow cascades, light probesagents-navigation— NavMesh pathfinding with groundingdots-performance— Draw call reduction, chunk utilization
Reference Files
Section titled “Reference Files”| File | Coverage |
|---|---|
references/rendering-3d-guide.md | LOD setup, impostor integration, mesh rendering, materials |
references/camera-3d-guide.md | Perspective camera, orbit patterns, FOV-based framing |