Vertex colour is now chosen from the true, unrounded surface height and faded between adjacent materials across a tunable band, instead of switching at one rounded integer depth. This removes the horizontal contour banding. Colour path only: density field, Marching Cubes interpolation/welding, chunk dimensions, the .dat contract and all road logic are untouched. BlockID classification is unchanged and still drives non-visual use. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Scripts | ||
| README.md | ||
Client Module - IslaApocalypse
Phase 2 Status: Active (Mesh Rendering & Vertex Painting Online)
Overview
The Client directory handles the visual representation of the 3D Voxel Engine. It is strictly responsible for receiving pre-calculated mathematical data from the Server and Core modules and translating it into Godot-native visual nodes (MeshInstance3D). It does not calculate collisions, densities, or terrain generation.
Key Architecture & Components
1. The Visualizer (ChunkRenderer.cs)
A script attached to a MeshInstance3D node that physically draws a single 32x32 chunk of the world.
- Mesh Generation: Calls
MarchingCubes.GenerateMesh()from theCoremodule, passing in theDensitiesandBlockIDsscalar fields. - Vertex Painting: Dynamically creates a
StandardMaterial3Dand enablesVertexColorUseAsAlbedo = true. This tells Godot to ignore standard texture maps and instead color the mesh using the exact RGB values we assigned to the vertices based on theirBlockID(e.g., Green for Grass, Brown for Wasteland). - World Positioning: Multiplies the
ChunkPosition(e.g., [1, 0]) byConstants.CHUNK_SIZEandConstants.VOXEL_SCALE(1.0f) to perfectly align the chunk in the global 3D space. - Backface Rendering:
CullModeis explicitly disabled to ensure players don't see through the bottom of the map if they clip inside a mountain.
Next Immediate Steps (Phase 2, Step 4)
- Currently, the renderer draws the exact topography. Once the
Serverimplements Road Carving, theClientwill automatically inherit those flattened vertices and paint them with theASPHALTvertex color without needing any code changes here. - Future implementations will include reading
BlockIDsto paint different UV maps/textures instead of just raw RGB vertex colors.