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

turn the planet a little and you can see the weird stretching I'm talking about

on the left it looks good but then to the right you can see the stretching