Jag är inte riktigt färdig med att experimentera med 3d perlin-brus. En annan cool funktion som jag inte har sett i Flash är att linda in bruset på en sfär sömlöst.
För att få texturen att lindas sömlöst utan förvrängning så kan vi använda brusets 3d-karaktär på ett intressant sätt. Om vi utvärderar 3d-positionen för varje punkt på ytan av en sfär så kan vi få bruset i den specifika punkten. För att konvertera punkten från 3d-rymden till 2d så behövs det en del trigonometri. Mina matematiska färdigheter suger verkligen, men mina klipp-n-klistra färdigheter är utmärkta. Än en gång så visade LibNoise mig vägen med 5 rader kod. Först fick jag bara kaotiskt brus med något slags upprepande mönster. Det tog lite tid att komma på att jag var tvungen att konvertera siffrorna till ett positivt intervall.
lat = py / height * 180- 90;
lon = px / width * 360-180;
r = Math.cos(DEG_TO_RAD * lat);
//range between 0-1
_x = (r * Math.cos (DEG_TO_RAD * lon) +1)*.5
_y = (Math.sin (DEG_TO_RAD * lat)+1)*.5
_z = (r * Math.sin(DEG_TO_RAD * lon)+1)*.5
För sfären och materialet/belysningen så använder jag Away3d. I nästa inlägg kommer jag att visa dig mer om det och verktyget för att skapa de olika materialen. Åh, och det ser mycket bättre animerat ut.