I want to get all the vertices of an 3D object.

I'm using this:

public List<Vector3> getVertices()
    MeshFilter meshFilter = GetComponent<MeshFilter>();
    List<Vector3> lst = new List<Vector3>();

    if (meshFilter != null)
        Mesh mesh = meshFilter.sharedMesh;
        // Get the vertices of the mesh and transform to world space
        foreach (Vector3 vertex in mesh.vertices)
            Vector3 trnsvertex = transform.TransformPoint(vertex);
        // Now add points within the volume of the balloon
        Bounds bounds = mesh.bounds;
        Vector3 center = bounds.center;
        Vector3 extents = bounds.extents;
        int pointsInside = 1; // Adjust this to change the number of internal points
        // Scaling factors to map unit sphere points to the balloon ellipsoid
        Vector3 scale = extents;
        for (int i = 0; i < pointsInside; i++)
            // Generate a random point inside a unit sphere
            Vector3 randomPointInSphere = Random.insideUnitSphere;
            // Scale to the balloon's ellipsoid dimensions
            Vector3 randomPointInEllipsoid = new Vector3(
                randomPointInSphere.x * scale.x,
                randomPointInSphere.y * scale.y,
                randomPointInSphere.z * scale.z
            // Transform to world space
            Vector3 worldPoint = transform.TransformPoint(randomPointInEllipsoid + center);

    return lst;

It works fine, but the problem is it's giving me only the vertices of what we can see (only from outside),

I also want to get the vertices of what's inside this object. In other words, I want to get all the vertices that the objects cover.

How do I do that?



You must log in to answer this question.

Browse other questions tagged .