Как задать UV для динамически изменяемого объекта в Unity?

Есть некоторый меш, который можно редактировать - изменять формы, двигать вершины и т.д. Ключевой проблемой является рисование по мешу после деформаций. Наши рисования начинают выглядеть как растянутые кляксы. Сами объекты сложные, с десятками тысяч полигонов. Я пытался пересчитывать UV:

        mesh = GetComponent<MeshFilter>().sharedMesh;
        meshCollider = GetComponent<MeshCollider>();
        meshFilter = GetComponent<MeshFilter>();
        
        vertices = mesh.vertices.ToList();
        List<Vector3> newVert = new List<Vector3>(mesh.vertices);
        for(int i = 0; i < newVert.Count; i++)
        {
            newVert[i] = transform.TransformPoint(mesh.vertices[i]);
        }
        mesh.SetUVs(0, newVert);

Этот кусочек кода задает и делает UV координаты, однако кривовато и нужно редактировать это руками, без этого область для рисования у трехмерного объекта сдвинутая и не вся область рабочая.

Как правильно их динамически задать? И если подход не тот, в какую сторону копать?


Ответы (0 шт):