Grot Generator
Door Denis Möller

Published
maart 9, 2020

Denis Möller is recent gestart als stagiair bij DAE Research op het TETRA-project Procedural 3D. Hij heeft voor het vak graduation work een grot generator gemaakt in Houdini. Wij stelden hem enkele vragen over zijn ervaringen en vroegen meer uitleg over zijn ontwikkelde tool. Hieronder laten we Denis zelf aan het woord:

Hallo, ik ben Denis, met een droom om technical artist te worden met een focus op proceduralisme. Mijn interesse in de techniek werd aangewakkerd door het bekijken van een GDC-talk over het gebruik van procedurele middelen om de prestaties te verhogen en sneller te itereren. Hierna verdiepte ik me nog door naar een aantal andere talks rond procedurele technieken te kijken. Mijn eerste echte contact kwam tijdens het gebruiken van Houdini voor mijn graduation work. Als graduation work koos ik voor het gebruiken van procedurele generatie voor het creëren van druipsteengrotten.

Er zijn veel verschillende tutorials, documentatie en informatie te vinden online rond procedurele generatie. Ik startte met het volgen van deze bronnen om mezelf familiair te maken met procedurele generatie. Hierbij was het volgen van de tutorials vrij eenvoudig, maar ik merkte dat het een uitdaging was om de nieuwe verworven kennis toe te passen op een ander project. De basis bleef dezelfde, maar ineens kwamen problemen naar boven die ik nog nooit eerder tegen kwam. Dit was een mooie uitdaging en niet frustrerend, want ik kon zelf de kleine stappen zien die me dichter bij mijn doel brachten. Mijn eerder verworven programmeervaardigheden hebben me veel geholpen, want als er geen ingebouwde oplossing is, kon ik het zelf schrijven.

Naast de technische informatie over het werken in Houdini en de logica van procedurele technieken was het belangrijk om bij het starten van het project te weten waar je voor gaat. Zoek veel referenties en probeer je probleem in zo klein mogelijke stukjes op te splitsen. Voor het maken van procedurele objecten is het ook belangrijk om te begrijpen hoe deze of zelfs de natuur werkt. Ik stelde mezelf vragen zoals: Wat voor soort druipstenen zijn er? Hoe groeien ze? Wat beïnvloedt hun kleur en vorm?

Het was belangrijk voor mij om me te focussen op het object dat ik wilde maken. Dit omdat ik niet alleen een stilstaand beeld van een druipsteen wilde vastleggen, maar ook de mogelijkheid om meerdere iteraties te krijgen van de verschillende stadia tijdens de groei.

In het echte leven vormen druipstenen zich in scheuren aan het grotplafond waar water doorheen kan lopen. Het water lost mineralen op en later, als het verdampt, bouwen de mineralen zich op. Het kan enkele jaren duren voordat druipstenen zich vormen.

In de natuur creëert water druipstenen, dus ik wilde dezelfde aanpak proberen. In Houdini heb je vloeistofsimulaties, maar in plaats van mineralen te laten oplossen, gebruik ik de viscositeit om het water te verharden. Het is vergelijkbaar met wasdruipen, afkoelen en uitharden. Door kleine dingen te veranderen, zoals de tijd die nodig is om te harden of de hoeveelheid water, ontstaan er heel andere druipstenen. Dit maakt het itereren super gemakkelijk.

Met het resultaat op basis van vloeistofsimulaties was ik niet 100% tevreden, dus heb ik particle systemen uitgeprobeerd. De particles vallen in principe uit het plafond en creëren een bol achter zich. De bol groeit op basis van zijn leeftijd, na samenvoeging vormen ze de druipsteen.

Het leuke aan Houdini is, dat je door het programmeergedeelte oneindig veel mogelijkheden hebt om je doel te bereiken. Soms zijn de meegeleverde tools niet voldoende. Zoals in mijn geval met de detectie van geschikte origine punten voor de stalactieten. Ik heb hiervoor de kromming van de grot als basis gebruikt.

Deze curvaturemap was slechts een goed begin. Met behulp van VEX, de scripttaal in Houdini, kon ik het gewenste resultaat bereiken. In de afbeelding kun je zien dat ik met een slider het aantal origine punten kan verminderen. Zo kan de gebruiker controleren hoeveel stalactieten in de grot staan.

Ik ben gebeten door het procedureel werken. Het beste vind ik dat je geniet van elke kleine stap en dat elk klein stukje samenwerkt om een geheel te bereiken. Het is een zoektocht, waarbij elke stap je dichter bij je doel brengt en je ook het gevoel heeft dat je al iets bereikt hebt. Alle kennis die je tijdens een project opdoet kun je toepassen op andere projecten. De modulariteit en het nodenetwerk helpen daarbij veel. Bovendien is het tweaken van waarden eenvoudig en kun je veel variaties genereren zonder dat je zelf iets hoeft aan te passen in je code of structuur.

Dankjewel Denis voor de uitleg en het fijne gesprek!

U kan meer van Denis’ werk bekijken op zijn Artstation profiel.