В 3D-файле obj + mtl + jpg как получить 3D-координату, в которой будет применен определенный пиксель в jpg-файле? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть 3 файла: .obj, .mtl и .jpg.

Есть ли способ получить для каждого (соответствующего) пикселя в файле .jpg 3D-точку, в которой цвет "проецируется"?

Я имею в виду, это должно быть вычислено где-то в процессе применения текстуры к модели, верно?

Идея состоит в том, чтобы иметь массив такой же высоты и ширины, что и файл jpg, но с трехмерной координатой внутри него.

Я работаю в Python, я уже импортировал файл obj с текстурой, используя PyWavefront (+ pyglet.gl) и пример, который они предоставили здесь: https://github.com/greenmoss/PyWavefront/blob/master/pywavefront/texture.py

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

1 Ответ

0 голосов
/ 04 июля 2018

Это не совсем то, как текстура применяется. То, что дает объект, - это UV координаты для каждой из ваших вершин. UV-координаты - это 2D-векторы, которые сообщают вам, где на картинке находится определенная вершина. Все эти координаты составляют то, что называется УФ-картой.

Это визуальное представление:

enter image description here

Эта информация находится в файле .obj. Каждая строка, начинающаяся с vt, описывает вектор. И каждая строка, начинающаяся с f, описывает многоугольник. Каждая группа 3/4/5 описывает 3dcoord / TextureCoord / normal.

В вашем фрагментном шейдере вы сэмплируете текстуру, используя интерполированную UV-координату для этого фрагмента.

...