This project was an assignment for my final year of university. The system allows the user to draw and connect roads and fill them in with buildings and foliage. The system uses multiple plugins that were in beta at the time of development such as, editable scriptable tools, geometry script and PCG. The system is an in depth system that allows a lot of flexibility with allowing user added assets and presets which users can add to. This system is intended to create a model city to showcase assets and for use in city scenes.
The system offers 4 main systems
Road - Spline based meshes. Each road has multiple road points that manipulate the spine and connect to each other. At each road point the system creates a dynamic intersection which adapts to each connected road. Multiple user variables allow the user to manipulate the intersection to best fit their design.
Plot - The user can choose a closed loop of roads to create a plot. The system traces around the roads to create a dynamic mesh which covers the selected area.
Building - The building system uses multiple data tables to collect data on user assets to add procedurally to multiple buildings. The system includes multiple modes that will generate the buildings differently. Linear split procedurally splits the buildings up, once on the smallest axis and a random amount on the other axis. Manual mode which with another scriptable tool allows the user to merge different points and edit them to new buildings. And finally full merge which creates one giant building which is useful for large buildings like hospitals.
Foliage - This uses PCG along with a few user variables that allow the user to adjust the types and amount of foliage created. This system is used to add variety to the cityscape.
Some issues with UE5's Geometry script plugin caused particular issue. Using the 'poly path', geometry often overlapped itself due to procedural placement of the verts by the system. This was an issue i was able to offset by flipping the normals of the created geemetry which ensured the mesh would regenerate correctly. Though this fix only worked on less complex 'plots'.
Roads snap to other points and create a road spline asset. It also creates a midpoint which can be used in conjunction with the road asset to make a curve in the road
PGC creates a spline mesh component within the spline of the plot. I then transfer each instance into a coordinate which can then be split into different buildings
Some assets from the unreal store are used to show off the system:
Megascans modular city asset pack: Sibiriakov, K. (2024). City Environment Megapack Vol 02. https://www.fab.com/listings/b46926e1-fe3c-4c20-83f0-8be8ee5e8de5.
Low poly asset pack: PolyArt3D, . (2024). Low Poly Town. https://www.fab.com/listings/33330547-e825-45b8-9aac-cfa0e8266eab.