Пара текстур в одну в Blender

У меня есть модель в Blender. Я бы хотел:

  1. Соедините несколько разных текстур в одну и сохраните ее как растровое изображение.
  2. Сделайте UV-наложение для этих связанных текстур

Мне нужно решить эту проблему для текстурированных моделей в OpenGL. У меня есть структура данных, которая дает мне возможность связать одну текстуру в одну модель, поэтому я хотел бы иметь одну текстуру для одной модели. Я знаю, что могу использовать текстуру GL_TEXTURE_xD_ARRAY, но не хочу усложнять свой проект. Я знаю, как делать простые UV-карты в Blender.

Мои вопросы:

  • Могу ли я выполнять 1. и 2. фазы исключительно в Blender?
  • Я ищу технику Blender Bake?
  • Есть ли какие-нибудь учебники, в которых показано, как это сделать? (для этой конкретной проблемы)
  • Может быть, кто-нибудь посоветует мне другую технику Blender (или решение OpenGL)

person CppMonster    schedule 18.07.2013    source источник


Ответы (2)


  1. Соедините несколько разных текстур в одну и сохраните ее как растровое изображение.
  2. Сделайте UV-наложение для этих связанных текстур

Вы имеете в виду создание атласа текстур?

Могу ли я выполнять 1. и 2. фазы исключительно в Blender?

Нет. Но это наверняка будет хорошо принятая надстройка.

Я ищу технику Blender Bake?

Нет. Blender Bake генерирует текстуру, используя процесс рендеринга. Например, у вас может быть текстура статического объекта, в который вы запекаете глобальное освещение; затем, вместо пересчета GI для каждого кадра в пролете, текстура используется в качестве источника для условий освещения (она действует как кэш). Другие приложения генерируют текстуры для игрового движка из процедурных материалов Blender.

Может быть, кто-нибудь посоветует мне другую технику Blender (или решение OpenGL)

Я думаю, что массив текстур будет действительно лучшим решением, так как он также не создаст проблем для наложенных / повторяющихся текстур.

person datenwolf    schedule 18.07.2013
comment
Итак, лучшим решением будет массив текстур, и мне пришлось подготовить UV-отображение для каждой текстуры модели в Blender и загрузить все текстуры в приложение OpenGL с помощью метода GL_TEXTURE_3D_ARRAY? Должен ли я использовать glActiveTexture () для одной текстуры, а код шейдера будет более сложным (много сэмплеров текстур)? - person CppMonster; 18.07.2013
comment
@CppMonster: glActiveTexture делает что-то совершенно другое: он позволяет загружать несколько текстур в несколько объектов текстуры. Это не то же самое, что массив текстур, где у вас есть несколько 2D-изображений, доступных в одной текстуре (цели). Код шейдера на самом деле намного проще, чем при использовании нескольких текстур. Видите ли, вы просто выбираете, какой из срезов / слоев массива вы хотите использовать третьим компонентом координат текстуры. Итак, у вас есть ST (== UV из Blender) для местоположения в массиве, а третий компонент R обозначает индекс слоя. - person datenwolf; 18.07.2013
comment
Ваш ответ исчерпывающий. Я знаю все, что мне нужно для подготовки кода OpenGL и моих текстур (с этим постом и 5-й книгой SuperBible), похоже, что мой код не требует так много изменений, как я думал. Спасибо. - person CppMonster; 18.07.2013

Другая возможность - использовать проекционную живопись. Объект в блендере может иметь несколько uvmaps, если при импорте он не создает каждую uvmap, вам может потребоваться выровнять каждую вручную. Затем вы создаете новый uvmap, который накладывает всю модель на одно изображение.

В режиме рисования текстуры вы можете использовать рисование проекции, чтобы использовать материал из одного uvmap в качестве кисти для рисования на новом изображении.

введите описание изображения здесь

person sambler    schedule 16.08.2013