Страница 1 из 1

Не текстурируются сгенерированные стены

СообщениеДобавлено: 16 июн 2019, 22:41
Devane1488
Господа знатоки! прошу вашему вниманию мою ошибку.
Я строю меши с нуля и появилась проблема, при которой текстура на стены ложится неправильно ~x(
дело в том что она вроде наложилась но она плавает словно она отразилась или это скайбокс
она ползает относительно камеры .
ниже прилагаю скриншоты для понимания сути дела:

https://drive.google.com/open?id=1qm5to ... UqbRP_jyru

Заранее спасибо всем откликнувшимся ! ;;)

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 01:23
AngryCat
С разверткой все в порядке?

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 11:05
Devane1488
AngryCat писал(а):С разверткой все в порядке?

вроде обычные полигоны

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 12:25
Devane1488
AngryCat писал(а):С разверткой все в порядке?

Вот код который рисует стены
Синтаксис:
Используется csharp
void CreateWallMesh()
    {

        MeshCollider currentCollider = GetComponent<MeshCollider>();
        Destroy(currentCollider);

        CalculateMeshOutlines();

        List<Vector3> wallVertices = new List<Vector3>();
        List<int> wallTriangles = new List<int>();
        Mesh wallMesh = new Mesh();
        //float wallHeight = 5;

        foreach (List<int> outline in outlines)
        {
            for (int i = 0; i < outline.Count - 1; i++)
            {
                int startIndex = wallVertices.Count;
                wallVertices.Add(vertices[outline[i]]); // left
                wallVertices.Add(vertices[outline[i + 1]]); // right
                wallVertices.Add(vertices[outline[i]] - Vector3.up * wallHeight); // bottom left
                wallVertices.Add(vertices[outline[i + 1]] - Vector3.up * wallHeight); // bottom right

                wallTriangles.Add(startIndex + 0);
                wallTriangles.Add(startIndex + 2);
                wallTriangles.Add(startIndex + 3);

                wallTriangles.Add(startIndex + 3);
                wallTriangles.Add(startIndex + 1);
                wallTriangles.Add(startIndex + 0);

            }
        }

        wallMesh.vertices = wallVertices.ToArray();
        wallMesh.triangles = wallTriangles.ToArray();
        wallMesh.RecalculateNormals();
        walls.mesh = wallMesh;

        MeshCollider wallCollider = gameObject.AddComponent<MeshCollider>();
        wallCollider.sharedMesh = wallMesh;
    }
 

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 12:29
IDoNotExist
Devane1488 писал(а):
AngryCat писал(а):С разверткой все в порядке?

Вот код который рисует стены
Синтаксис:
Используется csharp
void CreateWallMesh()
    {

        MeshCollider currentCollider = GetComponent<MeshCollider>();
        Destroy(currentCollider);

        CalculateMeshOutlines();

        List<Vector3> wallVertices = new List<Vector3>();
        List<int> wallTriangles = new List<int>();
        Mesh wallMesh = new Mesh();
        //float wallHeight = 5;

        foreach (List<int> outline in outlines)
        {
            for (int i = 0; i < outline.Count - 1; i++)
            {
                int startIndex = wallVertices.Count;
                wallVertices.Add(vertices[outline[i]]); // left
                wallVertices.Add(vertices[outline[i + 1]]); // right
                wallVertices.Add(vertices[outline[i]] - Vector3.up * wallHeight); // bottom left
                wallVertices.Add(vertices[outline[i + 1]] - Vector3.up * wallHeight); // bottom right

                wallTriangles.Add(startIndex + 0);
                wallTriangles.Add(startIndex + 2);
                wallTriangles.Add(startIndex + 3);

                wallTriangles.Add(startIndex + 3);
                wallTriangles.Add(startIndex + 1);
                wallTriangles.Add(startIndex + 0);

            }
        }

        wallMesh.vertices = wallVertices.ToArray();
        wallMesh.triangles = wallTriangles.ToArray();
        wallMesh.RecalculateNormals();
        walls.mesh = wallMesh;

        MeshCollider wallCollider = gameObject.AddComponent<MeshCollider>();
        wallCollider.sharedMesh = wallMesh;
    }
 

Для текстур нужны UV координаты, которые в этом меше не установлены.

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 12:37
Devane1488
[/syntax][/quote]
Для текстур нужны UV координаты, которые в этом меше не установлены.[/quote]
Вы можете подсказать как их задать?

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 14:34
AngryCat
Devane1488 писал(а):Для текстур нужны UV координаты, которые в этом меше не установлены.
Вы можете подсказать как их задать?

Можно в программе для 3D моделирования, но я предпочитаю UV Layout =)

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 16:54
Devane1488
AngryCat писал(а):
Devane1488 писал(а):Для текстур нужны UV координаты, которые в этом меше не установлены.
Вы можете подсказать как их задать?

Можно в программе для 3D моделирования, но я предпочитаю UV Layout =)

но мои меши генерируются процедурно

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 17:05
waruiyume
По нормали треугольника выбрать одну из трёх плоскостей
Скопировать мировые координаты из двух компонентов позиции

Re: Не текстурируются сгенерированные стены

СообщениеДобавлено: 17 июн 2019, 17:06
Devane1488
waruiyume писал(а):По нормали треугольника выбрать одну из трёх плоскостей
Скопировать мировые координаты из двух компонентов позиции

как это реализовать в виде кода ?