Here's the relevant code. it just loops through each vertex i in vertices[] which are all unit length along a subdivided icosphere and applies some noise to it. They end up ranging from about 0.85f - 1.15f afterwards and then I just scale it up for however big I want the planet to be.
float random = Random.Range(100f, 1000f);
for(int i = 0; i < vertices.length; i++){
float noiseDensity = 2f;
Vector3 v = vertices[i];
v.Scale(new Vector3(noiseDensity, noiseDensity, noiseDensity));
float scale = .25f;
float noise1 = Noise.Noise.GetOctaveNoise(v.x + random, v.y + random, v.z + random, 4) * scale;
float factor = 1f - (scale / 2f) + noise1;
vertices[i] = Vector3.Scale(vertices[i], new Vector3(factor, factor, factor));
}
I tried sampling the noise in multiple spots and average them together to try to smooth it out but I couldn't get it looking good really. I'm quite new to noise and such but I thought if I used 3D noise it wouldn't matter what shape I applied it to, but perhaps the icosphere is the problem because you can't really map a grid to it without distortions. I really don't want to use a normal sphere though because their triangles aren't as consistent of a size. If you guys have any ideas on how I could fix this problem that would be great! I wasn't sure if this was the right forum to post on but it seemed more about the math of applying noise than about rendering or graphics. Thanks!
Here's a few pictures of how it looks:
looks good here
[attachment=20446:Unity 2014-03-16 15-44-06-31.png]
turn the planet a little and you can see the weird stretching I'm talking about
[attachment=20445:Unity 2014-03-16 15-45-29-03.png]
on the left it looks good but then to the right you can see the stretching
[attachment=20444:Unity 2014-03-16 15-48-28-65.png]