VariusRain
@VariusRain
музыкант-программист-конструктор

Как выдавить меш программно в Unity3d?

Всем доброго здравия!

Создаю меш из спрайта стандартными средствами:
Mesh mesh = new Mesh();
        mesh.vertices = Array.ConvertAll(sprite.vertices, i => (Vector3)i);
        mesh.uv = asset.uv;
        mesh.triangles = Array.ConvertAll(sprite.triangles, i => (int)i);

        mesh.RecalculateBounds();
        mesh.RecalculateNormals();
        mesh.RecalculateTangents();
        
        GameObject gameObject = new GameObject("ASSET");
        MeshRenderer meshRenderer = gameObject.AddComponent<MeshRenderer>();
        MeshFilter meshFilter = gameObject.AddComponent<MeshFilter>();
        
        Material newMaterial = new Material(material);
        newMaterial.mainTexture = texture;
        meshRenderer.material = newMaterial;

Это прекрасно работает, меш создаётся. Создаётся нужно формы, текстура накладывается как надо, тут вопросов нет.
Но суть в том, что мне нужно его выдавить, чтобы он сохранил форму, но стал толстым.
На ЮВшки при этом плевать.
Всё, что смог нагуглить, что это делается через про билдер.
Переписал создание меша через него:
ProBuilderMesh quad = ProBuilderMesh.Create(Array.ConvertAll(sprite.vertices, i => (Vector3)i),
        new Face[] { new Face(Array.ConvertAll(sprite.triangles, i => (int)i)) });

И вот тут встал в ступор. Документацию я либо читать не умею, либо там мало чего полезного. Но я смог найти только то, что есть метод extrude и... Дальше я продвинуться не смог.

Буду признателен за любую наводку
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NickNamee
всего лишь нужно пересчитать координаты вершин
mesh.vertices
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы