Вершинное освещение OpenGL ES 2.0

Я пытаюсь получить плавный эффект освещения на твердом теле с помощью openGLES 2.0. Я экспортировал тело .obj из блендера и преобразовал файл obj в массив C вершин и нормалей (с obj2openGL - http://heikobehrens.net/2009/08/27/obj2opengl/). Затем я рисую эти данные в своем приложении openGL ES на iPhone. Проблема в том, что грани солида имеют плоское освещение (один и тот же цвет для каждой грани). Я хочу сглаженный эффект без использования освещения для каждого фрагмента. Я пытался увеличить количество лиц, но безрезультатно.

Есть ли в openGLES2.0 функция, управляющая этим эффектом (плавное или плоское освещение)?


person Alex79    schedule 12.06.2012    source источник
comment
И не может быть, чтобы файл .obj, экспортированный из Blender, изначально имел нормали для каждого лица? У меня нет большого опыта работы с Blender, но программы моделирования обычно не умеют экспортировать в простые и широко распространенные форматы (хотя природа Blender с открытым исходным кодом может в этом отношении отличаться).   -  person Christian Rau    schedule 12.06.2012
comment
Спасибо, Кристиан, тем временем я пытался сделать молнию для каждого фрагмента, получая такой же плоский эффект. Вместо этого сфера, которую я создал вручную в том же приложении, выглядит идеально гладкой. Итак, я создал с помощью того же метода простой куб с центром в 0,0,0, и сгенерированные нормали, похоже, являются нормалями граней! (например, 1,0,0...).   -  person Alex79    schedule 12.06.2012
comment
Как только SO позволит вам, можете ли вы опубликовать свое решение как полный ответ, а затем принять его? Это сделало бы нас, завершителей, счастливыми :-)   -  person    schedule 12.06.2012


Ответы (1)


Я решил проблему. Чтобы экспортировать нормали вершин в .obj с помощью Blender 2.62, необходимо выбрать «сглаживание затенения» (находясь в режиме редактирования ctrl-F и выбрав режим затенения). Надеюсь, это может помочь кому-то! Большое спасибо, Кристиан, это было самое простое решение.

person Alex79    schedule 21.06.2012