Jean-Edouard
Marconnet
/ TECHNICAL ARTIST
Roads & Villages
Generator System
The Project
For my Technical Artist graduation project I worked on a Roads & Villages Generator System with Houdini.
Inspired by the work of Benoit MARTINEZ and his team for Tom Clancy's Ghost Recon Wildlands, I used their workflow as a guideline and the scientific publications of two teams from de CNRS as methodology.
Procedural Generation of Roads - N. Maréchal, E. Galin, A. Peytavie, E. Guérin
My plan was to establish a procedural system able to generate a big terrain with roads and settlements more like a big sketch than a finished and optimized system due to the time constraint. This system works independently but the final idea is to divide the different steps into powerful tools for the artists and by offering a lot of control over them.
Terrain Generation
The idea was to create de hilly terrain with plateaus based on reliefs we can find in Languedoc-Roussillon.
I started by creating the terrain generator with PDG.


I randomly picked a percentage of primitives of a grid, scatter points on them,
copy to point geometries and project the result on the heightfield plane to get the reliefs.
Seeding Path

Massing Path

Project Path

Details Path

Once the details path done, I had to prepare the terrain for the path finding. I just converted the regular grid
into a anisotropic one to have the diagonals.

REGULAR GRID

ANISOTROPIC GRID

DETAIL
RESAMPLE
REGULAR
ANISO
Roads Generation
For the pathfinding, my work is based on the first scientific publication I shared earlier. After defining the bordering points of the roads, I made an A* algorithm in VEX running over each point of the grid avoiding steep slopes or at least compensating them according to different parameters such as the height, the curvature, the normal orientation or the distance from the target.

First Path

Second Path

Village Generation
Once the roads done, I could start working on the village generation. This step is based on
the second scientific publication I shared earlier.
Village Skeleton
I had to find a good place for the village so I made an algorithm running over each roads points and according to the perimeter
of the village that we want, find the one with the flattest area.

Curvature Map

Research Path
Once the algorithm find the position I could growth the village skeleton. I started by defining aged areas able to affect the
buildings placement depending of the architecture, the population density or the building function for exemple.
I seeded the different buildings and connect them to the roads.

Aged Areas
I seeded the different buildings and connect them to the roads.

Land Parcel Generation
Once the village skeleton done, I made an algorithm for the land parcels generation. This algorithm will works in three steps :
- First, the seeds will conquer their road territory
- Then, they expand from the road using anisotropic conquest
-Lastly, the resulting parcels are simplified
Road Conquest

Land Conquest

Buildings Generation
The tow last steps of the system in Houdini are the buildings generation, done procedurally and the terraformation.
I will not explain in detail how the buildings generator works but each zone is worked independently of the others as well
as each parcel within these zones. Depending on the size of these parcels, the system will generate one or more buildings.

UE4 Integration
I could now integrate the terrain to Unreal Engine 4 and procedurally generate the environment with the engine tools.





Music by Beatjunkie Rato