runtime procedural generation

use case

Published
december 8, 2021

Doel: de mogelijkheden verkennen van een realtime procedurele 3D in een game engine via een lightweight sandbox systeem.

Er bestaat software om op een modulaire manier procedurele 3D-content op te bouwen. Daarbij wordt de 3D-content vaak op voorhand gegenereerd en kan die gebruikt worden in een realtime omgeving zoals een game engine onder de vorm van voorgemaakte of pre-baked assets. Bij die manier van werken is het niet mogelijk om de procedurele opbouw of manipulatie van parametrisch opgebouwde elementen aan te passen tijdens het uitvoeren van de realtime applicatie. Dat maakt dat een procedureel opgebouwd 3D-model of -omgeving niet dynamisch kan aanpassen aan realtime user input, bijvoorbeeld aan de hand van gameplay in het kader van een game of aan de gescande omgeving in het kader van een augmented reality-applicatie.

Er bestaan uiteraard reeds implementaties die alsnog run-time proceduralisme mogelijk maken, maar dat zijn specifiek uitgewerkte use cases die met een vast doel voor ogen ontwikkeld zijn. Daarbinnen gaat het sandbox en dynamische aspect verloren dat je met procedurele software hebt.

In deze use case werd eerst onderzoek gedaan naar de mogelijkheden en limitaties van run-time mesh manipulatie en instancing in Unity. Er werd ook gekeken naar bestaande plug-ins of tools. Om de veelgebruikte procedurele functionaliteiten te bepalen, werd Houdini als voorbeeld genomen. Daarna werd er gekeken naar de complexiteit en haalbaarheid om een functionaliteit te implementeren. Een selectie werd gebruikt voor het ontwikkelen van een lightweight systeem waarbij de functionaliteiten op een modulaire manier gekoppeld worden. Er werden enkele kleine proof of concepts ontwikkeld die gebruik maken van het opgebouwde procedurele systeem in Unity.