I'm attempting to create a sphere with terrain (aka planet). I managed to procedurally create an icosahedron, and I am able to subdivide it (yay), but now I'm stuck on terrain.

My current idea is to create a Perlin like "3D Noise Field" and sample noise where each of the spheres vertices fall. this way i should be able to tweak the noise (add octaves, etc) to roughen the "NoiseField" and thus the spheres surface.

rough example:

    for (int i = 0; i < sphere.VertCount; i++)
        Sphere.verts[i] = Sample3DNoise(Sphere.verts[i]) * scale;//ehh

    public float Sample3DNoise(Vector3 point)
    {
        //???  should probs work ???
        float x = Mathf.PerlinNoise(point.x, 0.0000f);
        float y = Mathf.PerlinNoise(0.0000f, point.y);
        float z = Mathf.PerlinNoise(point.x, point.y);

        //the average of the coords, returns "density at this point"
        return (x + y + z) / 3; 
    }

that should work, right? I'm not just doing something absurd? is there a better way to do this?

(as a side question how do i render a Textrue3D? i populated one using my noise as the textels (alpha value), but how do i display it?)