Я могу ответить на часть этого, я верю. После того, как вы разделите вашу сетку на крошечные треугольники, вы хотите вычислить проекцию этого крошечного треугольника на прямоугольник, который является видом, который соответствует вашей фотографии. Итак, вам нужно:
- расположение и направление камеры
- расположение и ориентация объекта
- для каждого треугольника, рассчитать перспективную проекцию на основе вышеуказанных координат
В качестве альтернативы для расчета этих точек в программном обеспечении, возможно, вы могли бы использовать специальное цветовое отображение, в котором у вас есть определенный цвет для каждого треугольника, выполнить проекцию в opengl с правильными параметрами (без наложения) и затем получить растровое изображение из OpenGL. Тогда цвета в растровом изображении будут отображаться в треугольник, чтобы вы могли сопоставить местоположение на рисунке с отдельными треугольниками.
Я понимаю, что это только частичный ответ, но, надеюсь, он полезен!
- РЕДАКТИРОВАТЬ -
Ну, OpenGL может сделать снимок экрана с классом снимков экрана Если он настроен на отсутствие освещения, просто используйте glColor3f и установите для каждого мини-треугольника свой цвет, тогда скриншот будет проекцией на камеру 3D-объекта. Вы используете отдельный отдельный цвет для каждого треугольника в вашей сетке. Затем вы ищите этот цвет на скриншоте.
Итак:
1. Подсветка выключена (настраивает цвета)
2. Для каждой треугольной сетки:
- установите этот треугольник в произвольный, но уникальный цвет
3. сделать снимок экрана
4. Для каждой треугольной сетки:
- найти координаты x, y для его цвета на скриншоте.
- используйте координаты x, y, чтобы посмотреть на фотографию и выбрать цвет для этой сетки
- установите цвет треугольника на цвет, который вы нашли
Я не знаю, будет ли это работать достаточно хорошо - очевидно, это будет зависеть от размера меша. Если он слишком маленький, некоторые цвета не будут отображаться на скриншоте. Если он слишком большой, вы бы не находили отдельные пиксельные цвета, а скорее нашли бы часть фотографии, поэтому вам пришлось бы затем использовать вектор нормали для этого треугольника, чтобы преобразовать этот патч в текстуру и применить его к этому треугольнику. .