profiter.info
Главная

Что такое диод, стабилитрон, варикап, тиристор, светодиод

Что такое диод, стабилитрон, варикап, тиристор, светодиод

В данной статье дан краткий обзор программы для создания 3D персонажей, показан процесс создания низкополигонального и высокополигонального персонажей, а также описан процесс запекания карты нормалей и карты затенения (ambient occlusion map) в Blender’е для использования получившегося low poly персонажа в игровом ддвижке Unity3D.

Знакомство с MakeHuman и моделирование персонажа.

Зачем нужен makehuman, если можно взять готовую болванку, созданную в том же Блендере или 3DS MAX и используя инструменты моделирования и цифрового скульптинга получить желаемый результат? А для того, чтобы сократить время, затрачиваемое на на моделирование базовых low poly и high poly моделей, соответствующих друг другу. Кроме того, на освоение основ моделирования, создания UV-развертки и скульптинга в 3d-редакторах требуется время, а makehuman упрощает создание, как низкополигональных (low poly), так и высокополигональных персонажей (high poly), особенно на этапах становления на путь игродела. Если взять, к примеру, того же зомби или первобытного человека, то MakeHuman отлично справляется с этой задачей, особенно если подкорректировать стандартную диффузнуя карту/текстуру и, по желанию, создать карту нормалей. MakeHuman также отлично подойдет для создания Адама или Евы, Амазонки, различных персонажей с минимумом одежды: наемников с обнаженным торсом и в плавках, персонажей для игр с элементами выживания (Survival-игр), девушек в бикини, обтягивающих костюмах, киборгов, как из матового или блестящего пластика, так и хромированных модификаций и т.д. Если включить фантазию, то можно придумать еще много персонажей, которых можно создать с минимальным количеством потраченного времени. Немного освоив моделирование и скульптинг, в том же самом Блендере, Sculptris’е (Обзор программы цифрового скульптинга) или ZBrush’e, вы сможете создавать уже более серьезные модели, например, наемников, не только в плавках, но и в штанах, куртке и ботинках, а также добавлять им отличительные элементы, такие, как шрамы, родинки, макияж и т.д. И не стоит забывать, что MakeHuman и Blender могут быть связаны посредством соответствующих плагинов, позволяющих создавать в Blender’е одежду и обувь и импортировать ее обратно в MakeHuman.

Итак, приступим к созданию 3D модели нашего первого персонажа.

После запуска «MakeHuman» (в данной статье рассматривается версия 1.0.2) приложение создает персонажа с усредненными параметрами по полу, возрасту, телосложению, весу, росту и т.д.

startscreen

На рисунке показан стартовый экран программы для создания персонажей MakeHuman с персонажем с настройками по умолчанию.

Используя вкладки «Main», «Gender», «Face», «Torso», «Arms and Legs», «Custom», «Measure» вкладки «Modelling»,  расположенной в строке вкладок сразу под главным меню, вы можете изменить параметры своего будущего персонажа.

tabs

На рисунке показаны основные “менюшки” MakeHuman.

Вкладка «Main» отвечает за макро-параметры, такие как придание персонажу женских или мужских черт (посредством ползунка «Gender»), возраст («Age»), мышечная масса («Muscle»), вес («Weight»), рост («Height») и так далее.

Вкладка «Gender» (справа от вкладки Main, не путать с ползунком во вкладке Main) позволяет вам манипулировать формой груди персонажа.

Вкладка «Torso» отвечает за пропорции торса персонажа.

Пропорции рук и ног вы можете настроить в соответствующей вкладке «Arms and Legs».

Останавливаться на каких-либо отдельных особенностях моделирования персонажа я не буду, интерфейс MakeHuman интуитивно понятен. За что отвечает тот или иной ползунок догадаться не сложно, а если возникли сомнения, то всегда можно попробовать изменить положение ползунка, который не известно за что отвечает, и посмотреть, как это отразится на персонаже. В любой момент вы можете отменить последнее действие, нажав комбинацию клавиш Ctrl+Z. Стоит обратить внимание, что иконка контура головы со знаком «равно» (=) вместо мозга позволяет вам создавать симметричного персонажа, т.е. то, что будет применено на левой руке или ноге, будет, соответственно применено на правой руке или ноге. Однако некоторые параметры персонажа, например, Trans Horiz в настройках туловища (Torso) и Trans влево-вправо в настройках лица (Face) исключены для зеркалирования, поскольку созданы специально для того, чтобы добавить асиметричности вашему персонажу. И второе: не забывайте посматривать в правую часть экрана, ведь в ней содержатся дополнительные настройки вашего персонажа, а также много чего полезного, включая параметры импорта модели и тонкой настройки той или иной части вашего персонажа.

Если вы уже прошлись по вкладкам (особенно нажав вкладку «Arms and Legs», которая автоматически позиционирует камеру к кистям рук), то вернуться к виду по умолчанию‚ вам поможет иконка человека с разведенными в сторону руками, которая отвечает за сброс параметров камеры к значениям по умолчанию (Reset camera).

Ели вы хотите сбросить параметры своего персонажа на параметры по умолчанию, то выберите в главном меню иконку Reset (две изогнутые стрелки, замкнутые в круг и похожие на иконку синхронизации приложений) и подтвердите сброс параметров. Вы также можете перезапустить MakeHuman, чтобы загрузить MakeHuman с созданием персонажа с параметрами по умолчанию.

Выберите иконку «Wireframe»  в главном меню, чтобы посмотреть сетку персонажа.

topologynone

На рисунке показана созданная 3D модель персонажа с включенной сеткой.

Чтобы вращать 3D модель вашего персонажа, переместите мышь, удерживая Левую КнопкУ Мыши. За приближение и удаление камеры отвечает колесико мыши или зажатая Правая Кнопка Мыши в совокупности с ее перемещением. Переместить камеру влево-вправо вверх-вниз вам поможет перемещение мыши с зажатой Средней Кнопкой Мыши или колесиком мыши. Такое перемещение камеры работает только при достаточном приближении камеры к модели. Если вы максимально удалите камеру от модели, то перемещать камеру в стороны (можно назвать это стрейфом) вы не сможете.

Итак, вернемся к сетке. MakeHuman поддерживает несколько видов сетки и, соответственно, топологий моделей. При старте MakeHuman персонажу назначается топология по умолчанию. Для того чтобы выбрать другую топологию, откройте вкладку Геометрия (Geometries), расположенную под главным меню в первой строке вкладок справа от вкладки “Modelling” и выберите вкладку Топологии (Topologies) во второй строке вкладок, относящихся к геометрии.

geometries_topologies

На рисунке показана выбранная вкладка “Topologies” в меню “Geometries”, позволяющая сменить сетку/топологию вашей 3D модели.

Теперь в правой части экрана вы можете видеть, что текущая топология персонажа соответствует топологии «None«, которая больше подходит для женских персонажей, чем мужских (из-за выраженных особенностей сетки в грудном отделе).

none topology

На рисунке показана модель мужского персонажа с выбранной топологией по умолчанию «None».

womantopologynone

На рисунке показана модель женского персонажа с выбранной топологией по умолчанию «None».

Топология female1605.proxy является топологией женского низкополигонального персонажа.

woman1605topology

На рисунке показана модель женского персонажа с выбранной топологией female1605.

А вот male1591.proxy – отлично подходит для использования на мужском персонаже.

man1591 topology

На рисунке показана модель мужского персонажа с топологией “man1591topology”.

proxy741.proxy также является топологией мужского персонажа, но крайне низкополигонального: у него даже пальцы рук (кроме большого) не разделены (кстати, данная топология отлично подойдет в качестве low poly модели для мобильных платформ, ведь модель с данной топологией состоит всего из 1460 треугольников, если не считать треугольников глаз).

man741topology

На рисунке показана модель мужского персонажа с топологией “man741topology”.

Модель с топологией по умолчанию «None» состоит из 26756 треугольников без учета глаз. Высокополигональный вариант глаз состоит из 2080 треугольников на оба глаза, т.е. на каждый приходится по 1040 трисов (от tris — треугольный полигон), причем каждый глаз состоит из двух мешей.

highpolyeyes

На рисунке показаны составные части высокополигональных 3D моделей глаз.

Низкополигональные глаза, о выборе которых будет сказано чуть позже, состоят из 344 полигонов каждый и имеют геометрию усеченных UV-сфер.

У топологии «None» есть полость рта, но нет языка. Количество треугольников меша языка вы всегда можете узнать после экспорта 3D модели в Blender. А вот у топологии male1591.proxy язык есть, но полость рта ему заменяет внутренняя поверхность головы, а значит, что при использовании одностороннего шейдера в Unity, когда персонаж откроет рот, то через ротовое отверстие (конечно, если возникнет желание  заглянуть ему в рот), можно будет увидеть все, что происходит позади головы персонажа. Все что происходит позади персонажа особенно будет заметно в 3D шутерах, когда вы встанете напротив персонажа, и он ответит на ваше приветствие. Для того чтобы этого избежать дополнительной нагрузки на GPU (а двусторонний шейдер все таки нагружает графический процессор больше, чем односторонний) и/или CPU, потребуется создать полость рта в Blender’е, сделать персонажа немым или устанавливать камеру в такое положение, чтобы камера не смотрела в лицо персонажа, когда тот открывает рот. У модели с этой топологией (male1591.proxy) количество треугольников насчитывает 3140 штук с языком и 3052 — без языка. Вполне себе рабочее количество треугольников согласно странице справки Unity Modeling Characters for Optimal Performance, где сказано, что количество полигонов, которое вам стоит использовать, конечно же, зависит от требуемого качества и платформы, под которую пишется приложение, но для модели, созданной для игры под мобильные устройства, рекомендуется использовать от 300 до 1500 полигонов. Для десктопных приложений количество полигонов 3D модели следует уложить в диапазон от 1500 до 4000 полигонов.

Поскольку мы создаем мужского персонажа, давайте остановим свой выбор на топологии male1591.proxy. Выберите данную топологию, щелкнув на ней левой кнопкой мыши.

topology selection 1591proxy

На рисунке показана выбранная вкладка топологии male1591.

В этой же вкладке (“Geometries”) вы можете выбрать наличие языка (для топологии 1591 язык добавлять не нужно, он включен в топологию), ресниц, волос, форму и кучность бровей, наличие зубов, низкополигональную или высокополигональную модель глаз, а также можете одеть своего персонажа. В этой вкладке (“Geometries”) я хочу обратить ваше внимание не необходимость выбрать персонажу low poly модель глаз, которая доступна в подменю “Eyes”. Цвет глаз мы выберем чуть ниже.

Ваш первый персонаж почти готов. Именно его мы и будем использовать в качестве низкополигональной модели в Blender’е и Unity 3D.

Для использования данного персонажа в игровых движках, таких как Unity 3D или Unreal Engine не только в качестве статую, хотелось бы, чтобы у него был скелет/арматура. И в MakeHuman’е уже есть несколько готовых вариантов скелетов. Скелет будет использоваться нами для создания анимации персонажа, и который также будет использоваться в Unity для применения к нему уже существующих анимаций, например, созданных для другого персонажа (Unity 3D позволяет использовать уже готовые анимации, созданные для других моделей). Посмотреть набор предоставляемых MakeHuman’ом скелетов, и выбрать один из них для своего персонажа вы можете во вкладке Поза/Анимирование (Pose/Animate), расположенной под главным меню, во втором ряду вкладок, как раз между Materials и Rendering. Изначально модели не назначен скелет (выделенный пункт меню “None”).

nonearmature

На рисунке показан контур вашего персонажа без скелета/арматуры.

Скелеты basic и humanik отличаются наличием у первого костей для манипуляции нижней челюстью и языком, что позволит создавать анимацию разговора, зевков и т.д., т.е. всего того, что связано с открыванием рта. Также в скелете basic присутствуют кости для век. Название еще одного скелета muscles говорит само за себя. Этот скелет отлично подойдет в том случае, если вы хотите, чтобы мышцы персонажа вели себя приближенно к мышцам реального человека, однако 107 костей побольше нагрузят игровой движок, чем предыдущие варианты скелетов, не говоря уже про скелет second_life_bones, который отлично подойдет для мобильных игр или для модели зомби, поскольку состоит всего из 19 костей, а гибкость – не самая сильная сторона зомби. Особенностью скелета game является минимум костей для пальцев на руках. Скелет Xonotic отлично подойдет для одноименного проекта с открытым исходным кодом,  да и не только для него, однако данный скелет отличается отсутствием костей для глаз, век, языка и подбородка, но персонажам в шлеме эти кости совсем не обязательны. ///вставить скрин из Ксонотик

Остановимся на скелете humanik. Выберите соответствующий скелет в правой части экрана.

humanicsceleton

На рисунке показан контур персонажа с выбранным скелетом humanik.

Теперь давайте займемся текстурой персонажа (кожей/skin). Makehuman предоставляет некоторый набор текстур для различных рас обеих полов. Текстуры доступны во вкладке Materials. В левой части экрана для изменения текстуры персонажа доступны Кожа (Skin) и Глаза (Eyes).  Для Skin я выберу young_asian_male.

young_asian_male

На рисунке показана Low poly модель персонажа с выбранной кожей young_asian_male.

Закончив с цветом кожи, вы можете перейти у цвету глаз. Выбрав в левой части экрана «Eyes», в правой части экрана вы сможете выбрать цвет глаз вашего персонажа.

eyes

На рисунке показано меню выбора цвета/текстуры глаз.

hair and eyes

На рисунке показан зеленоглазый персонаж (слева) Справа показана 3D модель персонажа уже с волосами, но в рамках данной статьи не будут рассматриваться «прически». Конечно, вы можете выбрать ту, что вам нравится в соответствующем разделе в меню «Geometries», однако это создаст некоторые сложности при запекании карты нормалей с высокополигональной модели на низкополигональную и возможные артефакты при анимации вашего персонажа, которые не рассматриваются в данной статье. Вы же всегда можете поэкспериметировать позже, как только освоитесь в MakeHuman и Blender’е, верно?

Итак, настройка нашего персонажа закончена и осталось его экспортировать в Blender. Перед экспортом сохраните созданную модель, выбрав “Files” в главном меню и соответствующую вкладку “Save”.

save model

Выберите имя и путь для сохраняемого файла и нажмите кнопку “Save” справа от окна ввода имени файла.

save

Обязательно сохранитесь, поскольку от скачков напряжения, ошибок в работе ПО и т.д. и т.п. никто не застрахован, а данная модель нам еще понадобится.

Настройки экспорта 3D модели из MakeHuman для Blender’а.

Стоит отметить, что модели, созданные в MakeHuman, можно открывать в Blender’е минуя процедуру экспорта-импорта, лишь установив для Blender соответствующий add-on, но мы воспользуемся старым добрым экспортом модели с последующим импортом в Blebder. Чтобы импортировать созданного персонажа, выберите «File» в главном меню и в среди появившихся вкладок выберите Export”, чтобы открыть список форматов, в которые MakeHuman умеет экспортировать готовые модели. Я выбрал для себя формат dae. Здесь также стоит отметить, что помимо текстур, MakeHuman умеет экспортировать карты развертки (uv-maps) и скелет вместе с назначенными весами вершинам 3D модели (ригом персонажа).

Конечно, хотелось бы сразу экспортировать 3D модель в FBX формат для редактирования в Blender’е, однако по некоторым причинам Blender не поддерживает FBX модели, сериализованные в текст (именно этот тип формата имеют экспортированные MakeHuman’ом модели в формате FBX).

not supported serialized fbx

На рисунке показан текст ошибки при импорте в Blender 3D объекта из файла, сохраненного в MakeHuman в формате ASCII FBX.

Чтобы экспортировать 3D модель в формате Collada, выберите соответствующую radio-button “Collada (dae)”. В правой части вам станут доступны настройки экспорта для данного формата, например, “Feet on ground” совмещает самую нижнюю точку модели с нулем по оси z в Blender’е, т.е. “ставит ноги персонажа на землю”.

Также в окне опций можно выбрать ориентацию модели в пространстве, а точнее направление осей при экспорте модели.

options axes

На рисунке показаны верные настройки для импорта в Blender.

В Unreal Engine4 направленной вверх осью является ось z, а осью, указывающей лицо/перед/модели, является ось x. В Blender’e направленной вверх осью, также как и в UE4, является ось z, а вот осью, определяющей «перед» модели, является ось –y (минус игрек).

В свою очередь, в Unity вертикальной осью является ось y, а “передом“ модели – ось z, т.е., если вы хотите импортировать свою модель сразу в Unity, то вам стоит выбрать “Y up, face Z”. Проверить верность направления осей в Blender’е или Unity 3D вы можете, если переключитесь с глобальных осей модели на локальные оси. Если они не изменились, значит, локальные оси модели совпадают с глобальными осями, и модель не была повернута в процессе экспорта-импорта.

importedzy

На рисунке показаны оси импортированной модели с установками “Z up, face —Y” в режиме работы/отображения глобальных (слева) и локальных (справа) осей объектов.

importedyz

На рисунке показаны оси импортированной модели с установками осей для экспорта “Z up, face —Y”  (настройками MakeHuman по умолчанию) в режиме работы/отображения глобальных (слева) и локальных (справа) осей объектов .

Такие настройки экспорта из MakeHuman отлично подходят для использования модели непосредственно в Unity без промежуточного этапа в Blender’е, описанного в данной статье.

Переключение между “Global” и “Local” осями модели в Blender’е осуществляется при помощи кнопки панели, расположенной под каждым окном 3D вида, слева от инструмента выбора видимых слоев.

toolbar blender

На рисунке показана кнопка переключения между режимом отображения локальных и глобальных осей. Нашли? Та самая, с надписью «Local».

Здесь также стоит отметить, что при экспорте модели из Blender’а, например, в fbx-формат, существует возможность изменить оси экспортированной модели.

axes unity

На рисунке показано направление глобальных осей в Unity 3D в соответствующем режиме отображения осей активного объекта.

Если же вы экспортируете модель с настройками “Z up, face -Y” из MakeHuman, а затем импортируете ее в Unity и переключите режим отображения осей в Unity с глобальных на локальные, то вы сразу увидите, что локальные оси модели не совпадают с глобальными (оси глобальной системы координат Unity отображаются в правом верхнем углу экрана).

axes global unity

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

axes local unity

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

axes local

Направление осей на данном рисунке может относиться, как a) к неверному заданию осей при экспорте модели из Makehuman, Blender’а или любого другого 3D-редактора, так и b) к багу, наблюдаемому при экспорте модели из Blender’а с правильными настройками.

Увидеть, что модель импортировалась с перевернутыми осями в Unity 3D можно и во вкладке Assets окна Project, если посмотреть на составные части импортированной модели.

imported object

На рисунке видно, что импортированный меш 3D модели повернут в окне Assets.

Дополнительную информацию про позиционирование объектов в Unity 3D можно почитать на сайте Unity3D.

Вернемся к параметрам экспорта объектов из MakeHuman в Blender. “Scale units” позволяет выбрать масштаб экспортируемой модели. Выбрав посредством radio-button “meter” равенство одного юнита MakeHuman’а одному метру, мы тем самым получим требуемый масштаб в Blender’е, где один unit Blender’а будет равен одному юниту MakeHuman’а и равен одному метру.

options meter

На рисунке показаны настройки Scale units для экспортируемого персонажа. Вы можете выбрать Британскую Имперскую систему мер или метрическую в окне Units вкладки Settings, расположенной под главным меню в первой строке вкладок.

Введите имя файла (в который будет произведен экспорт модели) в текстовом поле, расположенном справа от иконки с многоточием и, если вы хотите экспортировать модель в папку по умолчанию, то  выберите кнопку Export справа от текстового поля (text-box’а). По умолчанию MakeHuman экспортирует модели в папку ../Documents/makehuman/v1/exports/ (../Документы/makehuman/v1/exports/). Данный путь может отличаться в зависимости от выбранного пути для установки Makehuman, установленной у вас операционной системы, конфигурационного файла Makehuman и т.д.

Если вы хотите выбрать путь для экспорта файлов модели, то нажмите на иконку выбора пути для экспорта файла (упомянутая выше иконка с многоточием). В открывшемся в стандартном диалоговом окне Windows выберите директорию, в которую хотите экспортировать модель, и нажмите кнопку “Сохранить /Save”.

Лирическое отступление. У меня в версии MakeHuman 1.0.2 при изменении имени файла в стандартном окне Windows сохранение все равно происходит в файл с именем, которое я ввожу в текстовом поле makeHuman (которое находится справа от иконки многоточия). Если же не ввести имя файла перед открытием окна выбора директории, то, какое бы имя я не вписывал в открывшемся диалоговом окне, сохранение все равно происходит в файл exports.

Для рассматриваемого примера экспорта модели в выбранной папке будет создан файл с расширением dae, а также папка textures, в которую сохранятся выбранные вами текстуры для персонажа.

Как мы увидим позже, модель экспортировалась вместе с выбранным нами скелетом и UV-разверткой. Также отдельными файлами экспортировались текстуры модели и глаз.

Итак, мы сохранили low poly модель персонажа. Теперь осталось сохранить высокополигональную модель. Выберите в главном меню MakeHuman кнопку Wireframe (иконка сетки слева от иконки «шахматной доски») чтобы перейти в режим отображения сетки персонажа. Слева от этой кнопки находится кнопка Smoth (иконка с двумя линиями: одной сглаженной и другой — нет), позволяющая добавить модели сглаженности путем подразделения каждого полигона 3D модели. Данная кнопка похожа по принципу работы на применение инструмента  Subdivision, Subdivide Smooth или модификатора Multiresolution в Blender’е. Нажмите данную кнопку и посмотрите, что получилось. Даже после применения сглаживания наша модель не особо похожа на ту, что мы создавали, верно? Перейдите во вкладку “Topologies” меню “Geometries” и выберите топологию “None”, которая была установлена по умолчанию в тот момент, как только вы начали создавать своего персонажа. Вот так гораздо лучше!

smoothunsmooth

На рисунке слева направо: топология 1591, сглаженная топология 1591, топология “None”, сглаженная топология ‘None” и сглаженная топология ‘None”с включенным отображением текстуры (кнопка “Wireframe” отжата).

Теперь сохраните данную высокополигональную модель, желательно под другим именем, и экспортируйте ее (также желательно под другим именем).

Импорт моделей в Blender

Теперь давайте откроем low poly и high poly экспортированные модели в Blender’e, а точнее импортируем их на сцену. После того как вы удалите все созданные по умолчанию или вами ранее объекты, или хотя бы дефолтный куб (нажмите клавишу ‘A’, чтобы выбрать все объекты на сцене, либо щелкните Правой Кнопкой Мыши на объекте, который хотите удалить, чтобы выбрать его, и нажмите клавишу ‘X’, чтобы открыть меню обязательного в таких случаях подтверждения удаления), выберите в меню File->Import->Collada(Default) (.dae) и выберите экспортированный ранее файл low poly модели, чтобы импортировать из него своего персонажа в Blender.

import dae

На рисунке показано меню импорта 3D модели в Blender из dae-файла.

В некоторых случаях модель может импортироваться в режиме постоянного затенения (Flat Shading, Flat) вместо затенения методом Гуро (плавное затенение, Gouraud Shading, Smooth shading). Чтобы сгладить модель, необходимо выбрать ее, перейти в режим редактирования меша (клавиша ‘Tab’), выделить все элементы меша (клавиша ‘A’) и выбрать вкладку Shading/UVs в левой части активного окна 3D вида в меню инструментов (клавиша ‘T’), после чего выбрать метод затенения Smooth для поверхностей/полигонов (Faces:).

 

fromflattosmooth

На рисунке показана модель с постоянным затенением (слева), модель в режиме редактирования меша со всеми выбранными элементами меша и меню выбора затенения для выбранных элементов меша (в центре) и “сглаженная” модель методом затенения Гуро (справа).

Сохраните файл Blender с импортированной моделью. Хотя в Blender’е и есть автосохранение, не забывайте сохранять свои наработки.

Теперь точно так же импортируйте в Blender high poly (высокополигональную) 3D модель вашего персонажа.

importedlowpolyandhighpoly

На рисунке показаны импортированные низкополигональная и высокополигональная модели персонажа. Как видно, они импортировались в точку с одинаковыми координатами (в данном случае в центр сцены), поскольку Origin модели у Low poly и у high poly моделей совпадают. Также на рисунке видно, что в некоторых местах высокополигональная модель просматривается поверх низкополигональной, это поможет нам чуть далее для выбора обеих моделей, когда мы будем запекать карту нормалей с «хайполи» модели на «лоуполи» модель.

Сохраните файл с обеими импортированными на сцену моделями, лучше в файл с другим именем. В Blender существует функция последовательной нумерации сохраняемых файлов. Если после нажатия комбинации клавиш Ctrl+Shift+S (Save as…) нажать клавишу “+” (плюс) на дополнительной (цифровой) клавиатуре, ничего до этого не нажимая в окне сохранения файла, то к существующему имени файла добавится следующая цифра, т.е. если вы изначально сохранили файл с именем “mymodel.blend”, то после нажатия “плюсика” на клавиатуре имя файла для сохранения изменится на “mymodel1.blend”, во время второго сохранения тем же способом и нажатия «плюсика» — на mymodel2.blend и так далее.

Теперь перейдем непосредственно к запеканию карты нормалей с высокополигональной модели (high poly model, хайполи модели) на низкополигональную модель (low poly model, лоуполи модель). Для того чтобы запечь карту гормалей с одной модели на другую, необходимо, чтобы они перекрывали друг друга, для low poly модели должна быть создана uv-развертка (автоматически создается в MakeHuman и экспортируется в файл вместе с моделью) и создано изображение, в которое будет запекаться карта нормалей.

Для того чтобы открыть просмотр uv-развертки вашего персонажа и создания изображения для запекания карты нормалей, необходимо открыть окно Редактора UV-развертки/Изображения (UV/Image Editor), для чего выберите под одним из окон 3D вида самую левую иконку текущего типа редактора для текущей области и выберите в выпадающем вертикальном меню вкладку UV/Image Editor.

uvimageeditor

На рисунке показан процесс открытия редактора UV-развертки/Изображений в одном из окон 3D вида.

Теперь выберите в режиме объекта (именно объекта, а не редактирования меша) Правой Кнопкой Мыши высокополиональную модель (у нее сетка плотней), а затем, зажав клавишу ‘Shift’, добавьте лоуполи модель к выбранной хайполи модели при помощи все той же Правой Кнопки Мыши. Перейдя в режим редактирования меша (клавиша ‘Tab’) и выбрав все составляющие элемента меша (в данном случае вершины) путем нажатия клавиши ‘A’, вы увидите развертку своей модели в окне редактирования uv-развертки.

uvbeforeimagecreation

На рисунке показана uv-развертка в окне Редактора UV/Изображения для выбранных полигонов 3D модели в окне 3D вида до создания изображения, на которое будет запекаться карта нормалей.

Приколите (от английского pin – приколоть) uv-развертку своей модели. Также используются выражения “запинить”/закрепить развертку. Чтобы запинить развертку, в окне Редактора UV-развертки выберите все вершины uv-развертки нажмите клавишу ‘A’ (или используйте инструмент прямоугольного выделения – клавиша ‘B’, или выделения окружностью – клавиша ‘C’) и нажмите клавишу ‘P’. Вершины uv-развертки окрасятся красным.

pinuv

Для того, чтобы запечь карту нормалей необходимо в меню Свойств “Properties” выбрать вкладку “Render” в нижней части которой открыть панель “Bake”. В панели Bake поставьте флажок напротив опции “Selected to Active” (с выбранного на активный), а для Режима запекания (”Bake Mode”) выберите пункт “Normals” в раскрывающемся списке.

bakemenu

На рисунке показано меню выбора Нормалей (Normals) в качестве режима для запекания с одной модели на другую (флажок напротив Selected to Active).

Если сейчас вы попробуете запечь карту нормалей с одной модели на другую, нажав кнопку “Bake” (длинная такая кнопка с фотоаппаратом, сразу над выбором Режима запекания) то получите сообщение об ошибке в верхней части окна Blender’а и в позиции курсора “No objects or images found to bake to”.

bakingerror

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

Как было сказано выше, необходимо создать изображение, в которое будет запечена карта нормалей, карта смещений/displacement map, ambient occlusion и т.д.), для чего под окном Редактора UV/Изображений нажать на кнопку “New”, задать имя создаваемого изображения и его разрешение (размер в пикселях по высоте и ширине) и нажать “OK”. Для нашего примера давайте оставим значения по умолчанию 1024 на 1024 пикселей, а в поле имени для изображения введем “characternormalmap”.

createnormalmap

На рисунке показано меню создания изображения для запекания в него карты нормалей, диффузной карты, карты высот/смещения, затенения и так далее.

Чтобы подстроить uv-развертку под размер окна редактора uv-развертки, покрутите колесико мыши или, пока курсор мыши находится в данном окне, нажмите клавишу ‘A’, чтобы выбрать все вершины вашей развертки и затем клавишу ‘Del’ (она же “.”) на дополнительной/цифровой клавиатуре, чтобы отцентрировать выбранные элементы по центру экрана.

Теперь вы можете запечь карту нормалей, нажав кнопку “Bake”.

bakednormalmap

На рисунке показана запеченная в Blender’е карта нормалей с высокополигональной модели на низкополигональную.

Сохраните карту нормалей, выбрав пункт “Image” в меню UV/Image Editor и в раскрывающемся списке выбрав “Save Image”. В меню сохранения файла выберите название для файла с картой нормалей и нажмите кнопку “Save As Image”. Помните, что Blender не сохраняет нарисованные или запеченные карты (диффузную, карту нормалей, карту смещения и т.д.) автоматически, так что если вы просто сохраните файл через Ctrl+S или Ctrl+Shift+S и позже откроете данный файл, то вы не увидите запеченную карту или нарисованную текстуру.

saveuv

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

characternormalmap

На рисунке показана запеченная карта нормалей во всей своей «красе».

Как вы можете видеть, карта нормалей запеклась хорошо, за исключением пальцев ног (это вызвано значительным отличием в геометрии пальцев ног у high poly и low poly 3D модели), области рта (обусловлено в отсутствии ротовой полости у низкополигональной модели и разной формой языков у моделей), а также за исключением элемента в правом нижнем углу экрана. В этой части uv-развертки (такой разноцветный остров uv-развертки) расположен остров uv-развертки языка персонажа, карта нормалей для которого запеклась с артефактами. Почему? Все дело в том, что для низкополигональной модели персонажа мы использовали одну топологию, которая по умолчанию содержала язык, а высокополигональная топология модели не содержала язык. Но даже если бы мы добавили язык высокополигональной модели в MakeHuman через соответствующую функцию, нас бы это не спасло, поскольку добавленный язык имел бы геометрию, отличную от геометрии языка lowpoly  модели, так что карта нормалей запеклась бы так же “криво”. Что же делать в этом случае? Можно, создать копию языка low poly модели и добавить эту копию high poly модели (опционально добавив языку каких-либо индивидуальных особенностей), после чего запечь карту нормалей. Если не добавлять индивидуальных особенностей добавленному языку highpoly модели и запечь карту нормалей с клонированного языка на оригинальный, то смысла в таком запекании не будет.

characternormalmaptongue

На рисунке показана та же карта нормалей, но с запеченным языком, скопированным с low poly модели и добавленным high poly модели. Нормали данного острова ничем не отличаются от цвета фона, что видно на рисунке ниже.

Вторым способом является редактирование запеченной карты нормалей, на котором мы и остановимся. Откройте сохраненный файл карты нормалей, например, в GIMP, и задайте цвет заливки равным RGB (128, 128, 256), создайте новый слой из слоя фона или превратите фон в слой. Теперь создайте новый слой и поместите его под слоем с запеченной картой нормалей. Залейте пустой слой выбранным цветом.  Теперь сделайте активным слой с запеченной картой нормалей и при помощи инструмента прямоугольного выделения обведите остров развертки, соответствующий языку, после чего нажмите клавишу ‘Delete’, чтобы удалить данный остров. Теперь сохраните файл (в Photoshop’e нажмите комбинацию клавиш Ctrl+Shift+S, а в GIMP’е процесс сохранения в формате отличном от нативного GIMP’овского называется экспортированием и открывается по нажатию комбинации клавиш Ctrl+Shift+E) в том же формате, который изначально имел файл развертки, например, png.

 

nmedited

На рисунке показана та же карта нормалей, но с исправленным островом карты нормалей для языка в редакторе GIMP. Если сравнить этот рисунок с предыдущим, то можно увидеть, что они ничем не отличаются, кроме как цветом фона.

Кроме карты нормалей вы также можете запечь ambient occlusion map, достаточно лишь в меню Режима запекания вместо карты нормалей выбрать Ambient Occlusion и запечь ее, сохранив по готовности. Поскольку язык находится внутри 3D модели, для него запечется темный фон. По-хорошему, его необходимо запекать отдельно, либо залить цветом фона, как это было сделано для карты нормалей, только здесь цвет заливки черного участка необходимо выбрать серый.

ambient

На рисунке показана запеченная карта затенения, созданная с использованием метода глобального/непрямого затенения объектов Ambient occlusion.

Как видно на рисунке, на запеченной карте затенений заметен сильный шум, уменьшить который можно путем добавления сэмплов (Samples) в меню Свойств “Properties” во вкладке “Gather”, предварительно поставив выше флажок для вкладки «Ambient Occlusion».

Импорт 3D модели в Unity

Вы можете импортировать в Unity 3D низкополигональную модель, которую вы экспортировали из MakeHumen’а, в формате dae.

Также вы можете  импортировать модель из Blender’а, например, в формате fbx (или нативном формате Blender’а). Чтобы экспортировать модель из Blender’а в формате fbx, выберите ее правой кнопкой в режиме объекта, добавьте к выбранной модели глаза (Shift+ Правая Кнопка Мыши на модели глаз), затем выберите в Главном меню “File”, затем “Export”и желаемый формат, например, FBX (.fbx), который рассматривается в данной статье. В диалоговом окне сохранения файла выберите настройки и имя будущего файла и папку, в которую хотите сохранить файл с экспортированной 3D-моделью.

export

На рисунке показаны основные настройки в меню экспорта модели из Blender’а для Unity3D в формате FBX.

Более подробно про экспорт из Blender в игровые движки вы можете прочитать в статье Экспорт 3D моделей из Blender в игровые движки Unity3D и Unreal Engine и подготовка моделей к экспорту.

Теперь, когда вы готовы импортировать свою low poly модель в Unity 3D с диффузной картой и картой нормалей, откройте свой проект Unity3D или создайте новый и перетащите low poly 3D модель из папки, в которую вы ее экспортировали, в одну из папок своего проекта в Unity 3D. Теперь откройте папку ../Documents/makehuman/v1/exports/textures/ (../Документы/makehuman/v1/exports/textures/) и перетащите в свой проект Unity текстуру глаз и тела персонажа. Перетащите туда же карту нормалей.

Перетащите свою модель из папки ассетов (куда вы ее импортировали в Unity 3D) на сцену или в Окно Иерархии (Hierarchy).

При импорте модели будет создана папка Materials, в которой будет создан материал young_lightskinned_male_diffuse для тела персонажа и материал brown_eye для глаз персонажа.

Перетащите материал для тела на модель персонажа (у меня python_boosternative3-male1591) на сцене или на соответствующий пункт в окне иерархии, а материал для глаз перетащите на модель глаз (у меня — python_boosternative3-low_poly). Имя файла, в который я экспортировал свою модель в MakeHuman’е, называется “boosternative3”, которое, как вы можете видеть, и фигурирует в Unity3D. Родителем для модели тела, глаз и арматуры (“python”) является автоматически создаваемая пустышка с названием файла, из которого были импортированы модели.

Перетащив материал для тела на модель тела персонажа, находящуюся на сцене, выберите ее, дважды щелкнув на ней Левой Кнопкой Мыши, или щелкните Левой Кнопкой Мыши на “ python_boosternative3-male1591” в окне Иерархии. Откройте вкладку материала и перетащите диффузную карту young_lightskinned_male_diffuse и карту нормалей в соответствующие слоты.

Добавьте текстуру в соответствующий слот материала глаз.

assignunity

На рисунке показаны импортированные модели персонажа в Unity 3D. Стрелками показан процесс перетаскивания элементов на соответствующие модели и в соответствующие слоты.

Вот и все.

importedunity

На рисунке показан импортированный lowpoly персонаж без карты нормалей (слева) и с назначенной картой нормалей в слот Normal Map (справа).

ambientocclusion

На этом рисунке показана модель персонажа без (слева) и с использованием запеченной карты Ambient occlusion (справа).

Теперь вы можете использовать данного персонажа в своем проекте, например, для создания Survival игры. Вы также можете изменить геометрию низкополигонального и высокополигонального персонажей (создав брюки и ботинки), перезапечь карту нормалей, нарисовать новые текстуры для тех же штанов и футболки, нарисовать персонажу перчатки.

Как было сказано выше, освоив Blender и цифровой скульптинг можно из моделей MakeHuman создавать различных персонажей для игр.

3Dcharacter

character

P.S. голые ноги превращать в штаны удобней, если они не слишком «раскачаны», особенно в икрах. Если захотите одеть персонажа в футболку, придется сгладить, как минимум, пупок, а на руках добавить вены и «заскульптить» мышцы.

Автор: Максим Голдобин (aka MANMANA)

goldmaxval@gmail.com

Post Views: 34 632

Как сделать горшки из гипса своими руками 734
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Что такое диод, стабилитрон, варикап, тиристор, светодиод
Теги:

Как из гирлянд сделать сердце  Ижевский котельный завод схемы котлов  Как сшить рюкзак рыбака  Дизайн гостиной с имитацией камня  Печь в мультиварке на пергаментной бумаге  Открытки прикольные любимому спокойной ночи  Макияж знаков зодиака козерог  Дизайн маленькой спальни икеа  Встраиваемые потолочные светильники своими руками  Подарки на месяц встречи с парнем  Мужская сумка в подарок при покупке  Сделать отцеп своими руками  Звукоизоляция 2107 своими руками  Подарок из картона на папу дне рождения  Схемы плетения бус стеклярусом  Макияж для синих глаз и рыжеволосых  Как из баночки детского питания сделать игольницу  Брюггское кружево схемы журнал мод  Скумбрия соленая в домашних условиях рецепт рассол  Как сшить сапог из ткани  Лучшая прическа года мужчина  Как красиво сделать губы красными  Варианты поздравления с днем рождения другу  Привод кроко установка своими руками  Как сделать домашний соус гуще  Схема стеллажа для гаража  Музыкальная открытка на день рождения мальчику  Сортеры своими руками из коробок  Как сделать шов между кирпичами белым  

 Карта сайта