Det första steget var att skapa en terräng att leka med. För det behövde jag en höjdkarta. Det finns många sätt att skapa dem, som ”The Diamond-Square Algorithm”, fraktaler, rita för hand eller till och med använda en verklig höjd från satellitdata. Men ett enkelt och vanligt sätt att få en procedurterräng är att använda Perlin-brus, en funktion inbyggd i Flash. Att generera en höjdkarta och tillämpa den på ett rutnät är ganska så enkelt och det finns många exempel runt omkring, så jag kommer inte att förklara det på djupet här.
Jag ville göra det enkelt att skapa och modifiera terrängen, utan att behöva utsätta mig för mycket av processen. En av de fantastiska sakerna med procedurgenerering är att den är helt parametriserad, så att du kan spara alla inställningar i ett litet format.
Prova följande exempel för att se ett exempel på ett nät med en höjdkarta bifogad. Du kan dra runt nätet för att ändra offset-parametern. Slidern för ”rockiness” styr antalet oktaver som används i Perlin-bruset. Genom att manipulera höjdkartan med filter så kan jag få till olika effekter. Jag skulle kunna lägga till mycket fler funktioner här, men jag håller det enkelt för nu, så jag kan fortsätta med alla andra funktioner i verktyget först.
Enkel geometri
Det finns också olika tillvägagångssätt för att generera nätet. Jag använder ett vanligt PV3D-plan, men jag hittade en mycket intressant artikel om delaunay-triangulering. Jag kanske tittar mer på det senare.
Framtida förbättringar
- Fler funktioner för att ändra höjdkartan/geometrin. Som masker, filter m.m.
- Utöka brusgenereringen med mer avancerade funktioner som voronoi, räfflat brus, terrass och erosion.
- Ladda upp externa höjdkartor kanske?
- Delaunay-triangulering?