2013-03-11 4 views
4

Мне нужно сделать человека 2D лицом к 3D лицу. Я использовал this link для загрузки файла «.obj» и для отображения текстур. Этот пример предназначен только для куба и пирамиды. Я загрузил файл человеческого лица «.obj».opengles дисплей человеческое лицо в iphone

Это загружает файл .obj и может получить человеческое лицо должным образом, как показано ниже. enter image description here

Но моя проблема здесь в том, что мне нужно отображать разные человеческие лица без изменения файла «.obj». просто путем сопоставления текстур.

Но текстура не отображается правильно, так как файл obj имеет разную модель. Я просто попытался изменить файл «.png», который используется как текстура, а ниже - результат, в котором отображается текстура, но не совсем то, что я ожидал, как показано ниже.

enter image description here

Ниже приведены мои несколько вопросов по нему:

1) Мне нужно загрузить текстуру на той же модели (с той же файл .obj) с различными изображениями. Возможно ли это в opengles?

2) Если решение проблемы выше «соответствие формы», как я могу это сделать с помощью opengles?

3) И, наконец, основной вопрос, мне нужно отобразить изображение в большой области, как сделать область отображения больше?

+0

Вы можете приложить оригинальную текстуру OBJ, которую используете? это текстура, которая отображается в вашем первом изображении. – talkol

+0

Может ли кто-нибудь добавить еще несколько пунктов? – 2vision2

ответ

9

mtl2opengl на самом деле мой проект, поэтому благодарим за его использование!

1) Единственный способ добиться идеальной замены текстур без искажений - это то, что обе текстуры отображаются на УФ-вершинах точно так же. Посмотрите на изображение ниже:

Texture Swapping with misaligned vertices

Как вы можете видеть, текстуры сделаны, чтобы соответствовать модели. Таким образом, любое переключение на другую цель геометрии приведет к искажению. Упрощенные человеческие головы/лица имеют два компонента: Интерьер (Кость/Геометрия) и Экстерьер (Кожа/Текстура). Внутренний аспект, очевидно, определяет внешний вид, поэтому идеальная замена текстуры на том же файле .obj не будет работать, если вы не измените геометрию модели с помощью swap.

2) Это возможно с помощью метода displacement mapping, который может быть реализован в OpenGL ES, хотя с ожидаемой трудностью для нескольких головок и граней. Для этого потребуется, чтобы ваша целевая геометрия .obj начиналась с довольно общей модели, например манекена, а затем использовала каждую текстуру для сдвига положения вершин модели. Я думаю, вам нужно быть очень комфортно с Modeling, Graphics, Shaders и Math, чтобы вытащить это!

enter image description here

3) Я добавлю еще преобразовать параметры (масштаб & транслируют) в следующем обновлении. Проект Xcode был фактически сделан, чтобы показать сценарий PERL, а не как учебник для OpenGL ES на iOS. В настоящее время, найти modelViewMatrix и поиграться с этим немного:

GLKMatrix4Scale(_modelViewMatrix, 0.30, 0.33, 0.30); 

Надежда, которая отвечает на все ваши вопросы!

+0

спасибо за ваш ответ! Стоит бой! – 2vision2

+0

Спасибо! Надеюсь, вы хорошо продвинетесь в своем проекте, поскольку это выглядит очень интересно. Я также попытаюсь расширить 'mtl2opengl' и включить doc в будущее –

+0

Да. Большое спасибо. До сих пор это хорошо. Я пошатнулся в оппонах. И я еще не исправил эту проблему http://stackoverflow.com/questions/15384079/texture-mapping-not-working-in-glkit-only-in-devices. И вы всегда можете просмотреть раздел моих вопросов, я добавил несколько вопросов сейчас! Образец здесь http://stackoverflow.com/questions/15432468/make-a-layer-over-an-image-and-adjust-its-co-ordinates-by-touch – 2vision2

Смежные вопросы