Базовый подход к сужению зрачка / расширению модели глаза в OpenGL
Я новичок в OpenGL-ES и ищу лучший подход для создания реалистичной модели глаза, чей зрачок может расширяться и сужаться, поэтому у меня есть план во время прохождения уроков.
Я сделал сетку в блендере, которая в основном представляет собой сферу с отверстием ("полюс" или центральная вершина удалены, а пара окружает края круга).
Я планирую добавить текстуру радужной оболочки непосредственно к полисам сферы, окружающей дыру.
Чтобы изменить размер зрачка, нужна ли мне просто функция для изменения вершин отверстия, чтобы отверстие расширялось или сжималось?
Я собираюсь использовать OpenGL в приложении Objective-C. У меня есть сценарий экспорта Джеффа Ламарша Objective C. Стандартно ли экспортировать только меш из блендера и добавлять текстуры в код позже в xcode? Или проще / лучше сначала настроить текстуры на сетках в blender и экспортировать более готовые данные продукта в xcode?
1 ответ
Ваш вопрос немного староват, поэтому я не уверен, насколько вы продвинулись, но, поскольку я сам поднимался по кривой обучения, я решил попробовать ответить.
Если вы хотите анимировать отдельные вершины вашей модели, я полагаю, что вам понадобится метод Skinning Vertex. Я не могу много говорить об этом, поскольку у меня еще не было причин экспериментировать с ним, хотя эта методика доступна только в OpenGL ES 2.0. (Скорее всего, именно с этого и нужно начинать, повышенная гибкость по сравнению с 1.1 более чем стоит какого-либо дополнительного уклона к кривой обучения.)
Ответ на ваш текстурный вопрос несколько смешанный. Вам нужно будет на самом деле применить текстуру в OpenGL. Но то, что Blender может сделать для вас, это определить координаты текстуры. Каждая вершина вашей сетки будет иметь координату текстуры, связанную с ней. Координаты текстуры будут координатами X, Y, которые сопоставляются с местоположением на изображении текстуры. Координаты находятся в диапазоне от 0,0 до 1,0, поэтому, поскольку текстура вашего изображения представляет собой прямоугольник, координата текстуры {0, 0} отображается в нижнем левом углу; {1, 1} отображается в верхнем правом углу; {0.5, 0.5} отображается в точный центр изображения.
Так что в Blender вы захотите пойти дальше и текстурировать объект с помощью UV-отображений. Когда вы экспортируете, хотя ваша экспортируемая сетка не будет содержать никакого содержимого изображения, она сохранит координаты текстуры, которые соответствуют вашему изображению. Это позволит вам применить текстуру в OpenGL так, чтобы текстура применялась так же, как в Blender.
У меня лично были некоторые проблемы с тем, чтобы сценарий Джеффа Ламарша выплевывал координаты текстуры, так как API Blender, похоже, значительно меняется с каждым выпуском. У меня был больше успех с конвертером.obj. Поэтому я экспортировал из blender в.obj и использовал инструмент командной строки для перехода из.obj в файл заголовка C.
Если вы столкнулись с похожими проблемами со сценарием Ламарша, этот пост может помочь решить его: http://38leinad.wordpress.com/2012/05/29/blender-2-6-exporting-uv-texture-coordinates/
И это хороший ресурс для сценария.obj to .h: http://heikobehrens.net/2009/08/27/obj2opengl/