När jag gjorde research för terrängredigeraren så hittade jag många olika metoder för att skapa brus. En av mina favoritalgoritmer är ”ridged fraktal brus”. Jag har inte hittat några exempel på detta i AS3 så jag skapade min egen version baserad på Optimized Perlin Noise som setts i communityn tidigare.
Jag tror att vägen till den källan började med Ron Valstars AS3-version, sedan med en optimerad version av Quasimondo, och ytterligare optimerad med en haxe-version av Nicolas Cannasse. Det var väldigt enkelt att bara lägga till den räfflade delen till bruset som genererades. Det finns någon källa att titta på i andra språk som C++, Java eller C#.
Först ett par exempel för att se vad som är egenskaperna hos åsar.
Några av dem använder en Stok3d PhongShader skapad av DerSchmale för att lägga till ett fint djup:
- Terräng | Min favorit. Tänk dig att använda detta med en voxelengine.
- Spår | Sätt ihop i Photoshop för att få effekten av skuggningen
Det är ganska roligt att söka efter nya mönster genom att bara justera några parametrar.
Gör lite ljud
Prova det själv. Jag har begränsat storleken på bitmappen till 200×200. Det är ganska så optimerat, men fortfarande för långsamt för stora bitmappar. En cool sak är att swf bara är 26 kB.
Öppna editorn
Här är en förklaring till några av parametrarna (jag lånade beskrivningarna från referensen till world-machine):
- Offset: Offset bestämmer vid vilken höjd fraktalbeteendet börjar ändra karaktär.
- Gain: En multifractal parameter, Gain styr vanligtvis den relativa styrkan av fraktalens detaljerade, kontra jämna områden. Låga värden är mycket jämna, medan höga värden tar upp detaljerna snabbare.
- Persistens: Styr i vilken grad styrkan av varje lager av brus reduceras när de läggs ihop. Låga beständighetsvärden ger mycket jämna terränger, medan en ökning av beständigheten ger fler detaljer (och taggighet). Till skillnad från ett lågt oktavvärde, så beräknas fortfarande alla lager av brus när man använder en låg beständighet, så att terrängegenskaper smidigt introduceras när värdet höjs.
I en terräng är en höjdkarta med åsar lämplig för att skapa höga berg eller sanddyner, vilket var mitt primära mål. Nästa steg är att visualisera det i 3d. Åsarna ser inte så bra ut med ett lågt polymesh, så jag måste leta efter en voxel-motor nu.