Код УФ-картографирования неверен. Я не знаю где это исправить - PullRequest
0 голосов
/ 07 января 2019

Я делаю трехмерные модели с камерой, которые думают о текстуре и сетке типа облака точек. В процессе я сделал комбинированную текстуру и сетку. И проблема была в процессе нанесения текстуры на сетку. ах! Тип сетки - это тип точек. не треугольники

это тестовая текстура.

Test Texture

это код УФ-картирования.

    Vector2[] uvs = new Vector2[modelWidth * modelHeight];
    Array.Clear(uvs, 0, uvs.Length);

    for (int h = 0; h < heightNum; h++)
    {
        for (int k = 0; k < widthNum; k++)
        {
            for (int i = 0; i < _height; i++)
            {
                for (int j = 0; j < _width; j++)
                {
                    int uvX = _width * k + j;
                    int uvY = _height * h + i;
                    int arrayIndex = uvY * modelWidth + uvX;

                    uvs[arrayIndex].x = uvX / (float)((modelWidth - 1));
                    uvs[arrayIndex].y = uvY / (float)((modelHeight - 1));
                }
            }
        }
    }

    Mesh mesh = _pointCloudRenderer.GetPointCloudMesh();
    mesh.vertices = modelVertexList;
    mesh.SetIndices(Enumerable.Range(0, modelVertexList.Length).ToArray(), MeshTopology.Points, 0);
    mesh.uv = uvs;

результат неправильного кода.

1, 2, 3 overlap

4, 5, 6 overlap

7, 8, 9 overlap

Я хочу, чтобы у каждого 1fps был один. но по вертикали делится на три ..

Этот код хорошо работает для текстур, которые прикреплены только вертикально. Понравилась эта текстура. Vertically attached texture

Спасибо, что прочитали. если вам нужно больше информации. ответьте на этот пост! Хорошего дня.

...