Создание разрушаемых мешей. Продвинутый Создание объекта с нуля Создание меша

Как создать меш из любого хаоса
В Minecraft мы можем копать в любом направлении, убирая за раз по одному блоку с чётко заданными краями. Но в других играх разработчикам удаётся разрушать рельеф плавно, без кубичности Minecraft.

Аналогичная техника применяется для отображения изображений с МРТ , metaball-ов и для вокселизации рельефа.

В этой части я расскажу о технике создания разрушаемого рельефа Marching Cubes, а в более общем применении - для создания плавного граничного меша твёрдого объекта. В этой статье мы начнём с рассмотрения двухмерной техники, затем трёхмерной, а в третьей части рассмотрим Dual Contouring. Dual Contouring - это более совершенная техника, создающая тот же эффект.

Наша цель

Для начала определимся с тем, чего же мы хотим достичь. Предположим, у нас есть функция, которую можно дискретизировать на всём пространстве, и мы хотим нанести на график её границу. Другими словами, определить, где функция выполняет переход из положительной в отрицательную и наоборот. В примере с разрушаемым рельефом мы будем интерпретировать положительные области как сплошные, а отрицательные области - как пустые.

Функция - это отличный способ описания произвольной фигуры. но она не помогает нам отрисовать её.

Для отрисовки нам нужно знать её границу , например, точки между положительными и отрицательными значениями, где функция пересекает ноль. Алгоритм Marching Cubes берёт такую функцию и создаёт полигональную аппроксимацию её границы, которую можно использовать для рендеринга. В 2d эта граница будет непрерывной линией. При переходе в 3d она становится мешем.

Реализация двухмерных Marching Cubes

Примечание: код на python , в котором содержится откомментированный код со всем необходимым.

Для простоты давайте начнём с 2d, а позже перейдём к 3d. Я буду называть алгоритмы в 2d и в 3d «Marching Cubes», потому что по сути они являются одним алгоритмом.

Шаг 1

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

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

Шаг 2

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

В которой положительные значения находятся внутри, а отрицательные - снаружи.

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

Если соединить всё вместе, то это будет выглядеть так:

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

Часть 2. Трёхмерные Marching Cubes

Итак, в 2D мы разбиваем пространство на сетку, а затем для каждой вершины ячейки вычисляем, где находится эта точка - внутри или снаружи сплошной области. В 2d-сетке у каждого квадрата по 4 угла, и для каждого из них есть два варианта, то есть у каждой ячейки существует возможных комбинаций состояний углов.

Затем мы заполняем ячейку своим отрезком для каждого из 16 случаев, и все отрезки всех ячеек естественным образом соединяются вместе. Мы используем адаптивность , чтобы наилучшим образом подогнать эти отрезки под целевую поверхность.

Хорошая новость заключается в том, что в трёхмерном случае всё работает почти так же. Мы разбиваем пространство на сетку из кубов, рассматриваем их по отдельности, отрисовываем какие-то рёбра для каждого куба, а они соединяются, создавая нужный меш границы.

Плохая новость заключается в том, что у куба 8 углов, то есть существует рассматриваемых возможных случаев. И некоторые из этих случаев гораздо более сложны, чем в 2D.

Очень хорошая новость заключается в том, что нам совершенно не нужно в этом разбираться. Вы можете просто скопировать собранные мной случаи и перейти сразу к разделу с результатами («Соединяем всё вместе»), не задумываясь обо всех сложностях. А потом начать читать о dual contouring, если вам нужна более мощная техника.

Все сложности

Примечание: в этом туториале больше рассматриваются концепции и идеи, чем методы реализации и код. Если вам больше интересна реализация, то изучите реализацию в 3D на python , в которой содержится откомментированный код со всем необходимым.

Вы всё ещё читаете? Отлично, мне это нравится.

Секрет заключается в том, что мы на самом деле не обязаны собирать все 256 различных случаев. Многие из них являются зеркальными отражениями или поворотами друг друга.


Вот три разных случая ячеек. Красные углы являются сплошными, все другие - пустыми. В первом случае нижние углы сплошные, а верхние - пустые, поэтому для правильной отрисовки разделяющей границы необходимо разделить ячейку вертикально. Для удобства я раскрасил внешнюю сторону границы жёлтым, а внутреннюю - синим.

Остальные два случая можно найти простым поворотом первого случая.

Мы можем использовать ещё один трюк:



Эти два случая являются противоположными друг другу - сплошные углы одного являются пустыми другого, и наоборот. Мы можем с лёгкостью сгенерировать один случай из другого - у них одинаковая граница, только перевёрнутая.

С учётом всего этого на самом деле нам понадобится рассмотреть всего 18 случаев, из которых мы сможем сгенерировать все остальные.


Единственный разумный человек

Dual Contouring решает эти проблемы и при этом гораздо более расширяем. Его недостаток заключается в том, что нам потребуется ещё больше информации об , то есть о функции, определяющей, что является сплошным и пустым. Нам нужно знать не только значение , но и градиент . Эта дополнительная информация улучшит адаптивность по сравнению с marching cubes.

Dual Contouring помещает в каждую ячейку по одной вершине, а затем «соединяет точки», создавая полный меш. Точки соединяются вдоль каждого ребра, имеющего смену знака, как и в marching cubes.

Примечание: слово «dual» («двойственный») в названии появилось потому, что ячейки в сетки становятся вершинами меша, что связывает нас с двойственным графом .

В отличие от Marching Cubes, мы не можем вычислять ячейки по отдельности. Чтобы «соединять точки» и найти полный меш, мы должны рассматривать соседние ячейки. Но на самом деле это намного более простой алгоритм , чем Marching Cubes, потому что здесь нет множества отдельных случаев. Мы просто находим каждое ребро со сменой знака и соединяем вершины ячеек, соседних с этим ребром.

Получение градиента

В нашем простом примере с 2d-кругом радиуса 2,5 задаётся следующим образом:

(другими словами, 2,5 минус расстояние от центральной точки)

Воспользовавшись дифференциальным исчислением, мы можем вычислить градиент:

Градиент - это пара чисел для каждой точки, обозначающих, насколько изменяется функция при движении по оси x или y.

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

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

Адаптивность

Пока мы получили такой же ступенчатый вид, который был и у Marching Cubes. Нам нужно добавить адаптивности. В алгоритме Marching Cubes мы выбирали, где вдоль ребра будет находиться вершина. Теперь мы можем свободно выбирать любую точку внутренностей ячейки.

Мы хотим выбрать точку, наиболее близко соответствующую полученной нами информации, т.е. вычисленному значению

и градиенту. Заметьте, что мы сэмплировали градиент вдоль рёбер, а не в углах.

Выбирая показанную точку, мы гарантируем, что выводимые грани этой ячейки будут как можно больше соответствовать нормалям:

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

Переходим в 3d

Случаи в 2d и в 3d на самом деле не очень отличаются. Ячейка теперь является кубом, а не квадратом. Мы выводим грани, а не рёбра. Но на этом различия заканчиваются. Процедура выбора одной точки в ячейке выглядит так же. И мы по-прежнему находим рёбра со сменой знака, а затем соединяем точки соседних ячеек, но теперь уже четырёх ячеек, что даёт нам четырёхсторонний полигон:

Грань, связанная с отдельным ребром. У неё есть точки в каждой соседней ячейке.

Результаты

Dual contouring создаёт гораздо более естественные формы, чем marching cubes, что можно увидеть на примере созданной с его помощью сферы:

В 3d эта процедура достаточно надёжна, чтобы выбирать точки, находящиеся вдоль ребра острого участка и выбора углов при их возникновении.

Выбор местоположения вершины

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

В 3d проблема ещё более усугубляется, потому что здесь становится больше нормалей.

Способом решения является выбор точки, которая оказывается взаимно наилучшей для всех нормалей.

Сначала каждой нормали мы назначаем штраф для мест, удалённых от идеального. Затем мы суммируем все штрафные функции, что даёт нам штраф в виде эллипса. После этого мы выбираем точку с наименьшим штрафом.


С математической точки зрения отдельные штрафные функции являются квадратом расстояния от идеальной линии для текущей нормали. Сумма всех квадратных членов является квадратичной функцией , поэтому общая штрафная функция называется QEF (quadratic error function, функцией квадратичной ошибки). Нахождение минимальной точки квадратичной функции - это стандартная процедура, имеющаяся в большинстве библиотек работы с матрицами.

Проблемы

Колинеарные нормали

Большинство туториалов останавливается на этом, но у алгоритма есть небольшой грязный секрет - решение QEF в соответствии с описанием в оригинальной статье про Dual Contouring на самом деле работает не очень хорошо.

Решив QEF, мы можем найти точку, наиболее соответствующую нормалям функции. Но на самом деле нет никаких гарантий, что получившаяся точка находится внутри ячейки .

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

Я видел много советов по решению этой проблемы. Некоторые люди сдавались, отказываясь от информации градиента и используя вместо него центр ячейки или среднее позиций границ. Это называется Surface Nets, и в таком решении, по крайней мере, есть простота.

Техника 1: решение QEF с ограничениями

Не забывайте, что мы находили точку ячейки, находя точку, минимизирующую значение заданнйой функции, называемой QEF. Внеся небольшие изменения, мы можем найти минимизирующую точку внутри ячейки.

Техника 2: смещение QEF

Мы можем прибавить к QEF любую квадратичную функцию и получить другую квадратичную функцию, которая всё равно будет решаемой. Поэтому я прибавил квадратическую функцию, имеющую минимальную точку в центре ячейки.

Благодаря этому решение всего QEF стягивается к центру.

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

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

Подробнее обе техники показаны в коде .

Самопересечения

Ещё одна проблема dual contouring заключается в том, что иногда он может генерировать самопересекающуюся 3d-поверхность. В большинстве случаев на это не обращают внимания, так что я не решал эту проблему.

Существует статья, в которой рассказывается о её решении: «Intersection-free Contouring on An Octree Grid», Ju and Udeshi, 2006

Однородность

Хотя получаемый dual contouring меш всегда герметичен, поверхность не всегда является хорошо заданной. Так как на ячейку приходится всего одна точка, при прохождении через ячейку двух поверхностей она будет общей для них. Это называется «однородным» мешем и может вызывать проблемы у некоторых алгоритмов текстурирования. Проблема часто возникает, когда сплошные объекты тоньше, чем размер ячейки или несколько объектов почти касаются друг друга.

Обработка таких случаев является значительным расширением функционала базового Dual Contouring. Если вам нужна эта функция, то рекомендую изучить эту реализацию Dual Contouring или

Расширение алгоритма

Благодаря относительной простоте создания мешей Dual Contouring гораздо проще расширить до работы со схемами ячеек, отличающихся от рассмотренных выше стандартных сеток. Как правило, алгоритм можно выполнять для октодеревьев , чтобы получить различные размеры ячеек ровно там, где нужны подробности. В целом идея аналогична - выбираем по точке на ячейку с помощью сэмплированных нормалей, затем для каждого ребра со сменой знака находим соседние 4 ячейки и комбинируем их вершины в грань. В октодереве для нахождения этих рёбер и соседних ячеек можно использовать рекурсию. У Мэтта Китера есть об этом.

Другое интересное расширение заключается в том, что для Dual Contouring нам необходимы всего лишь определение того, что находится внутри/снаружи, и соответствующие нормали. Хотя я говорил, что у нас для этого есть функция, мы можем извлечь ту же самую информацию из другого меша. Это позволяет нам выполнить «ремеш», т.е. сгенерировать чистое множество вершин и граней, очищающих исходный меш. В качестве примера можно привести модификатор remesh из Blender.

Дополнительное чтение

  • Dual Contouring - это одна из множества похожих техник. См. другие подходы со своими плюсами и минусами в

Но несмотря на это, Unity поддерживает работу со многими пакетами трёхмерной графики. Unity также поддерживает работу с мешами, которые состоят как из трёхсторонних, так и из четырёхсторонних полигонов. Неоднородные рациональные безье-сплайны (Nurbs), неоднородные рационально сглаживаемые сетки (Nurms) а также высокополигональные поверхности должны быть конвертированы в полигоны.

3D форматы

Импортирование мешей в Unity может быть выполнено с помощью двух основных типов файлов:

  1. Экспортированные 3D форматы файлов , такие как.FBX или.OBJ
  2. Собственные файлы 3D приложений , например такие как.Max и.Blend файлы из 3D Studio Max и Blender.

Любой из этих типов позволит вам добавлять свои меши в Unity, но есть соображения относительно того типа, который вы выберите:

Экспортированные 3D файлы

Преимущества:

  • Экспортируйте только необходимые данные
  • Проверяемые данные (перед импортированием в Unity, переимпортируйте в 3D пакет)
  • Как правило файлы меньшего размера
  • Поддерживает модульный подход - к примеру разными компонентами для интерактивности и типов коллизий
  • Поддерживает другие 3D пакеты, чьи форматы не поддерживаются у нас напрямую

Недостатки:

  • Может замедлять процесс прототипирования и итераций
  • Легче потерять след между исходной (рабочий файл) и игровой версией данных (к примеру экспортированный FBX файл)

Собственные файлы 3D приложений

Unity также может импортировать, путём конвертации , файлы: Max , Maya , Blender , Cinema4D , Modo , Lightwave и Cheetah3D , например, .MAX , .MB , .MA и др.

Преимущества:

  • Быстрый процесс итерации (для повторного импортирования в Unity сохраните исходный файл)
  • Изначально просто

Недостатки:

  • На машинах, задействованных в работе над Unity проектом, должны быть установлены лицензионные копии данного программного обеспечения
  • Файлы, содержащие ненужные данные могут стать неоправданно большими
  • Большие файлы могут замедлить процесс автосохранения
  • Меньше проверяется, поэтому труднее устранить ошибки

Здесь находится перечень поддерживаемых пакетов трёхмерной графики, другие же чаще всего экспортируют вышеупомянутый тип файла.

Текстуры

При импорте меша, Unity попытается используя свой метод поиска, автоматически найти текстуры, используемые им. Сперва импортёр начнёт искать подпапку Textures, внутри папки с мешем или в папках уровнем выше. Если это не поможет, тогда по всей структуре проекта будет выполнен глобальный поиск всех имеющихся текстур. Конечно данный метод поиска значительно медленнее обычного и его главным недостатком является то, что в результатах поиска может появиться две и более текстур с одинаковым названием. В таком случае нет гарантий того, что нужная текстура будет найдена.

Doc-menu">Textures в или над уровнем с компонентами (ассетами)

Создание и присвоение материала

Для каждого импортированного материала, Unity применит следующие правила:-

Если генерация материала отменена (иначе говоря если галочка Import Materials не выставлена), тогда будет назначен материал по-умолчанию. Если же генерация была включена, тогда произойдёт следующее:

  • Unity будет использовать название для своего материала, основываясь на значении параметра Material Naming
  • Unity попытается найти существующий материал с таким именем. Область поиска для поиска материала задаётся при помощи параметра Material Search
  • Если Unity удастся найти существующий материал, тогда он будет использован в импортированной сцене, если же нет, тогда будет создан новый материал

Коллайдеры (Colliders)

В Unity используется два основных типа коллайдеров: Mesh Colliders и Primitive Colliders . Меш коллайдеры - это те компоненты, которые используют для себя данные импортированного меша и могут быть применены для создания столкновений с окружением. Когда вы в настройках импорта (Import Settings) активируете опцию Generate Colliders , меш коллайдер автоматически добавится в сцену вместе с импортированным мешем. Он будет рассматриваться как цельный до тех пор, пока он будет работать в контексте использования физической системой.

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

Анимации (Animations)

Анимации автоматически импортируются из сцены. Для более детального ознакомления с настройками импорта анимации посетите главу документации под названием подготовка компонентов и их импорт в системе анимации (Mecanim).

Карты нормалей и персонажи (Normal mapping and characters)

Если у вас есть модель персонажа с наложенной на него картой нормалей, взятой с высокополигональной модели, тогда вам необходимо будет импортировать в сцену версию модели для игры с Smoothing angle в 180 градусов. Таким образом можно предотвратить появление странно выглядящих швов в местах сочленения модели. Если же швы всё ещё останутся даже после применения данных настроек, тогда активируйте опцию Split tangents across UV seams .

Если вы конвертируете чёрно-белое изображение в карту нормалей, вам не следует об этом беспокоиться.

Формы смешивания (Blendshapes)

Unity поддерживает формы смешивания(Blendshapes) (которые ещё называют морфинговыми целями или вертексной анимацией). Unity может импортировать формы смешивания из таких форматов как .FBX (формы смешивания и контроль над анимацией) и .dae (только формы смешивания). Формы смешивания Unity также поддерживают вертексную анимацию на вершинах, нормалях и касательных. На меш одновременно может воздействовать как его его скин (Skin), так и формы смешивания. Все меши, которые были импортированы с формами смешивания будут использовать компонент SkinnedMeshRenderer (и не важно, был ли к нему применён до этого скин или нет). Анимация форм смешивания импортируются как часть обычной анимации - она попросту анимирует веса форм смешивания на компоненте SkinnedMeshRenderer.

Есть два способа импорта форм смешивания с нормалями:

  1. Если установить режим импорта Normals в положение Calculate , тогда для мешей будет использоваться та же последовательность просчёта нормалей что и для форм смешивания.
  2. Экспортируйте информацию о группах сглаживания в исходный файл. Таким образом Unity просчитает нормали из групп сглаживания как для меша, так и для форм смешивания.

Если вам нужны касательные на ваших формах смешивания, тогда выставите режим импорта Tangents в положение Calculate .

  • Слейте между собой как можно больше мешей в единое целое. И сделайте так, чтобы они использовали одни и те же материалы и текстуры. Это должно дать хороший прирост в производительности.
  • Если в процессе работы в Unity вам придётся довольно часто сталкиваться с настройкой своих объектов, (применяя к ним физику, скрипты и другие полезности) то, чтобы в дальнейшем избавить себя от лишней головной боли, вам следует заранее позаботиться о правильном именовании своих объектов в том трёхмерном приложении, в котором они изначально были созданы. Потому как работать с большим количеством объектов, имеющих названия вроде pCube17 или Box42 мягко говоря не очень удобно.
  • Работая в своём трёхмерном приложении старайтесь располагать свои модели в центре мировой системы координат. В дальнейшем это упростит их размещение в Unity.
  • Если вершины меша изначально не имеют своих цветов, то при первом рендере Unity автоматически назначит всем вершинам белый цвет.

Редактор Unity отображает гораздо больше вершин и треугольников (по сравнению с тем, что отображается в моём трёхмерном приложении).

Так и есть. На что вы действительно должны обратить внимание, так это на то, какое количество вершин/треугольников на самом деле было послано для просчёта на графический процессор (GPU). В отличие от случаев, где материал требует, чтобы эти данные посылались на GPU дважды, такие вещи как твёрдые-нормали (hard-normals) и несмежные UV развёртки(non-contiguous UVs) намеренно отображают гораздо большее количество вершин/треугольников, чем есть на самом деле. В контексте UV и 3D пространства треугольники должны располагаться смежно, чтобы сформировать собой границу, поэтому при уменьшении количества треугольников на UV-швах, которые и должны были образовать собой границу и возникает эффект мнимого увеличения их количества.

Этот урок научит тебя:

  • Создавать дефолтные меши
  • Экспортировать меш из игры и импортировать его в Milkshape
  • Научить игру распознавать отредактированные меши

Этот урок не научит тебя:

  • Изменять цвет или текстуру объекта
  • Как создавать меши досконально
  • Как создавать недефолтные меши - это означает, что вы не можете создавать свои меши, а лишь редактировать экспортированные из игры.

Этот урок предполагает, что вы знакомы с основами создания мешей и Milkshape.

В данный момент нет возможности добавлять вершины, можно только изменять.

Вот что мы будем делать в этом уроке:

Инструменты, которые нам понадобятся:

  • GEOM converter by CmarNYC
    Это конвертер мешей из формата TS4 в формат TS3, так как Milkshape пока понимает только формат TS3.
  • S4PE v0.1c by Kuree
    Должен быть для моддинга в The Sims 4
  • CASRecolor Tool
    Нужен для экспорта меша из файлов игры
  • Milkshape 1.8.5 (Триал версия)
    Нужен для изменения меша

  • Нужен для распознавания Milkshape меша в формате The Sims 3
  • 7-Zip
    Для извлечение файлов из zip-архивов
  • Терпение
  • Опционально: меш тела сима от Sintiklia: мужской , женский .

Вы также можете скачать всё это одним архивом .

Шаг первый: подготавливаем инструменты

  • Загрузите все инструменты. Установка требуется только для Milkshape.
  • После установки Milkshape, извлеките файлы из Wes Howe"s Sims 3 plug-ins for milkshape в C:/Program Files (x86)/MilkShape 3D 1.8.5/. Если у вас 32-х битная система, то путь будет таким C:/Program Files/MilkShape 3D 1.8.5.

Шаг второй: находим меш

  • Откройте Color Magic (CASRecolor Tool), нажмите Next, а после Select Package и откройте файл «CASDemoFullBuild.package», расположенный в C:\Program Files (x86)\Origin Games\The Sims 4 Create A Sim Demo\Data\Client. После этого вы увидите огромный список всей одежды, аксессуаров и других элементов демо-версии.
  • В этом уроке мы будем редактировать аксессуар, найти его можно введя в поле поиска (Search for) - yfAcc_EarHoopMid_gold. (Вы можете редактировать и волосы, но если это ваш первый раз, то сначала рекомендую попробовать отредактировать хотя бы аксессуар.)
  • В правой стороне окна, в разделе Resources (Ресурсы) вы увидите список файлов:

Шаг третий: экспортируем меш

  • В списке ресурсов, экземпляры, которые начинаются с "0x015A1849" являются GEOMs (мешами), а остальное либо текстуры, либо файлы данных. Здесь нам нужны 16 последних цифр меша (GEOMs), в данном случае это "A0C073DEE1ED6E76" - скопируйте эти цифры и затем можете закрывать Color Magic.

  • Теперь открываем S4PE, выбираем File > Open, и также, как в Color Magic, откройте файл «CASDemoFullBuild.package», расположенный в C:\Program Files (x86)\Origin Games\The Sims 4 Create A Sim Demo\Data\Client. После того, как он будет загружен, в нижней части окна программы вы увидите несколько текстовых полей и галочек. Установите галочку перед полем Tag и введите в него GEOM, также установите галочку перед полем Instance и введите туда ранее скопированные из Color Magic 16 цифр и добавьте перед ними еще две - "0x", получится так: 0x A0C073DEE1ED6E76. Также для удачного поиска должна стоять галочка перед Filter Active.

  • После этого должен появится список GEOM файлов. Эти файлы являются различными LODs (уровнями детализации) одного и того же меша. Они варьируются от высокого к низкому, но на данный момент демо CAS отображает только высокодетализированный меш, так что нам придется выяснить, какой из них является самым высокодетализированным. Экспортируйте все GEOM файлы, для этого на каждом из них нажмите правой кнопкой и выберите Export » To file...

  • После экспорта откройте в проводнике место, где лежат эти файлы. По размеру файла.SIMGEOM мы можем увидеть какой их них самый большой - он и будет самым высокодетализированным мешем, в данном случае это 30Кб. Вы можете удалить все остальные файлы меньшего размера, если хотите.

  • Откройте GEOM converter и под "Convert S4 to S3" нажмите "Select" и выберите самый высокодетализированный.SIMGEOM файл, который мы определили выше. Затем нажмите "Сonvert to S3" и сохраните файл. Причина, почему мы конвертировали файл в формат The Sims 3 такова, что в данный момент Milkshape распознает только TS3 меши.

Шаг четвертый: импортируем опорного сима и редактируем меш

  • Чтобы упростить процесс редактирования, мы импортируем опорного сима. Это является необязательным, но я предлагаю вам сделать это, так как это поможет легче маневрировать. Экспортируем опорного сима.
  • Откройте Milkshape. Выберите File » Import » Wavefront OBJ... и импортируйте мужское или женское тело.
  • После этого окно программы должно выглядеть таким образом:

  • Так как мы редактируем серьги, нам нужна лишь голова сима. Перейдите на вкладку "Groups" и удалите в этом списке всё, кроме fhead/head.

  • Теперь нам нужно импортировать серьги (то есть наш меш). Для этого нажмите File » Import » Q-Mesh Sims 3 GEOM importer V.0.16 - by Wesley Howe. Если появится такое всплывающее окно, то просто нажмите ОК.

  • Найдите сконвертированный нами ранее GEOM файл, и откройте его. У вас могут появится сообщения об ошибке, но просто нажимайте ОК, каждый раз, когда она выходит. После этого, вы увидите некий беспорядок в окне Milkshape, но не волнуйтесь - это поправимо.

  • Перейдите на вкладку "Joints" и снимите галочку перед "Show skeleton".

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

  • Голова сима может помешать редактированию, так что идем во вкладку "Groups" и скрываем fhead/head (нажимаем Hide).
  • Теперь приступим к редактированию. Чтобы изменить форму объекта, нужно двигать вершины (белые точки), для этого перейдите во вкладку "Model" и нажмите на кнопку "Select".

  • Примечание: перед редактированием вершин рекомендуется выбрать опцию "Vertex" в "Select Option", а также снять галочку возле "Ignore Backfaces".

  • Я хочу сделать серьги в форме коробки, для этого я выделяю нужные вершины, которые хочу передвинуть.

  • Теперь нажимаю кнопку "Move" и передвигаю выделенные вершины. Осталось добиться нужной формы.

  • Всё, готово. Теперь мы можем восстановить голову сима, чтобы посмотреть как наши серьги будут выглядеть.

  • После того, как вы закончили редактирование меша - удалите голову сима (перейдите в Groups, выберите fhead/head и нажмите Delete).

Шаг пятый: добавляем в игру

  • Экспортируйте отредактированный меш, выбрав File » Export » Q-Mesh Sims 3 GEOM importer V.0.16 - by Wesley Howe.
  • Снова откройте GEOM converter. В разделе "Convert S3 to S4" возле первого поля "S3 GEOM" нажмите "Select" и выберите.SIMGEOM файл, который мы только что экспортировали из Milkshape, ниже, у поля "Original S4 GEOM" также нажимаем "Select" и выбираем файл который мы экспортировали из S4PE (который самый высокодетализированный). Далее нажимаем "Сonvert to S4" и сохраняем полученный файл.

  • Открываем S4PE, нажимаем File > New, а после: Resource > Import > From file... и снова выберите.SIMGEOM файл, который мы еще в третьем шаге экспортировали из S4PE (да-да, файл той же самой высокодетализированной версии меша). После появится окно, в котором вам нужно нажать "Copy RK", а затем "Cancel".

  • Теперь снова Resource > Import > From file... и на этот раз импортируем файл отредактированного меша, который мы получили из Milkshape, а затем конвертировали. Если вы не видите этот файл, то попробуйте изменить тип файла в правой нижней части окна на "All Files (*.*)".

  • Появится уже знакомое нам окно, однако в этот раз нам нужно нажать "Paste RK", чтобы приставить к нему значения оригинального файла, который он потом заменит, после нажимаем ОК.

  • Последний и финальный шаг - сохранить файл (File » Save As...) в папке Mods, расположенной по пути C:\Users\*Ваше имя*\Documents\Electronic Arts\The Sims 4 Редактор создания персонажа.
  • Теперь заходим в игру и проверяем!
Меш (Mesh) или Градиентная сетка подходит и для EPS8 и для EPS10. Единственное, что Mesh лучше изначально рисовать в Adobe Illustrator, так как при сохранении в EPS из других программ (например, CorelDraw) меш может растрироваться. (А может и нет, тут уж сами проверяйте). Урок по основам меша представил мне Гринько Валерий, за что ему огромное спасибо, а так же честь и хвала. 🙂 Для отрисовки меша для стоков сначала необходимо выбрать фото. И фотография должна быть именно своя. Не пытайтесь искать хорошее фото в интернете в надежде, что автор его не узнает, что вы его отрисовали. И не пытайтесь изменять его. Лучше возьмите свое фото, пусть не такое красивое, но все же свое. Тем более, что для отрисовки Mesh вам не понадобится исключительное качество фотографии. Сам автор этого урока уже «погорел» на такой оплошности. Отрисовал чужую фотографию коктейля, за что удалили его аккаунт. И теперь он вынужден раскручивать свой аккаунт снова.

По поводу съемки фотографии. Снимайте в естественном свете, то есть без вспышки, и тогда блики и тени, которые вы будете отрисовывать с помощью Mesh, будут иметь красивый естественный вид. Фото необходимо вставить в Adobe Illustrator и заблокировать слой, на котором он находится. Саму градиентную сетку можно делать двумя способами. Мы рассмотрим только их принципы.

Первый способ.

1. Создать новый слой и на нем нарисовать фигуру по форме совпадающую с объектом. На примере мы нарисовали окружность, по форме близкой к вишне.
2. А затем эту фигуру нужно переделать в градиентную сетку инструментом Mesh (U), кликая им по середине. В результате чего появится сетка.
3. Слой с мешем следует поместить под слой с фотографией. В нашем случае это слой Layer2. 4. А после чего приступить к самому главному, к моделированию сетки по форме вишни. Добавление новых узлов сетки производим инструментом Mesh (U), а их перемещение и выделение белой стрелочкой Direst Selection (A). Сколько нужно создать узлов? Если создать слишком мало, форма получится слишком гладкой и только издали будет подходить на рисуемый объект. Если сразу создать слишком много, то можно запутаться с редактированием. Поэтому нужно стараться максимально минимальным количеством узлов сетки создать приемлемую форму. Ограничений здесь нет, речь только о целесообразности. Узлов должно быть больше там, где есть изменение цвета.
5. После того, как сетка создана, можно переходить раскрашиванию. Образцы цвета можно брать прямо с фотографии. Сначала активируем белую стрелочку (A), затем выбираем инструмент Пипетка Eyedropper (I). Для того, чтобы выбрать точку зажимаем , то есть временно активируем белую стрелочку, щелкаем по нужной точке на Mesh, которой хотим придать цвет, затем отпускаем и щелкаем на фотографии на то место, где нужно этот цвет получить. Для того, чтобы выделить несколько точек и задать им один цвет, дополнительно к нужно нажать еще и . Переключая видимость слоя с фотографией мы можем отслеживать изменение в нашем моделируемом объекте.
Сначала мы получаем нечто такое, а потом добавляя точки, перемещая их и задавая им цвет, мы доводим форму до совершенства. Тут не лишними были бы знания и чувство формы и цвета, но, думаю, что многое приходит с опытом.

Второй способ.

Иногда форма объекта бывает очень сложной и построение сетки Mesh может быть осложнено тем, что она будет вести себя непредсказуемо. Тогда Mesh можно сделать другими способом: сделать Mesh из прямоугольника, а затем применить к нему маску в виде искомой формы.

1. Создаем прямоугольник и делаем из него Mesh точно так же, то есть инструментом Mesh (U) щелкаем по прямоугольнику, чтобы появилась сетка. 2. Создаем форму объекта, в нашем примере это будет круг. Помещаем его поверх прямоугольника-меша и делаем из него маску, то есть выделяем эти два объекта из из контекстного меню, вызванного правой кнопкой мыши, выбираем Make Clipping Mask.
3. Далее раскраску производим таким же образом.

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

Вот, например, готовый рисунок, который предоставил мне Валерий. Если у вас есть чем дополнить этот урок, прошу написать об этом в комментариях. А так же огромная просьба, если у вас есть собственные наработки в стоковом векторе , поделитесь своими секретами. Уроки могут приниматься в любом виде, главное, чтобы рисунки были именно ваши.


Эта страница была показана 41007 раза.

Для создания сценария урока в Библиотеке ОЭМ необходимо нажать на кнопку «Добавить материал» и выбрать пункт меню «Интерактивный урок» в выпадающем списке выбора материалов.

В новой вкладке надо заполнить следующую информацию: название урока, тему урока, уровень образования, предмет, уровень изучения, выбрать КЭС и папку для сохранения урока. Параметры для используемого оборудования можно не менять. После заполнения всех полей необходимо нажать кнопку «Сохранить».

Откроется конструктор интерактивного урока, который разделен на три части:

  • конструктор интерактивного урока – для формирования структуры интерактивного урока и добавления материала;
  • настройка этапа – для формирования этапа интерактивного урока и добавления материала;
  • настройка материала – для настройки свойств добавленного материала.

Урок может содержать несколько этапов. Для добавления этапа существует кнопка «Добавить». Нажав на крестик можно удалить этап.

В этапе интерактивного урока расположены формы для экранов (слева-направо):

  • интерактивная панель;
  • планшет учителя;
  • планшет ученика.

Для заполнения области настройки этапа интерактивного урока надо выделить одну из форм, например, интерактивную доску. Область настройки содержит инструменты добавления материала: пользовательский текст или текстовый материал, изображение, видео, аудио, ссылку, тестовое задание, интерактивный объект и таблицу.

В области настройки этапа интерактивного урока можно добавить несколько полей с инструментами для заполнения содержания. Для этого необходимо воспользоваться навигационной панелью внизу экрана.

Для отключения/включения конструктора интерактивного урока (левая часть экрана) и настройки материала (правая часть экрана), а также для изменения масштаба отображения используйте навигационную панель внизу экрана.

  1. Выберите время этапа. Это необходимо для суммарного подсчета времени урока и контроля времени урока.
  2. Выберите тип деятельности: учебный материал, блиц, тест, виртуальная лаборатория.

В настройках этапа Вы можете переименовать этап. Для этого введите новое название в строку «Название этапа».

Если на экранах Вы планируете показывать одинаковую информацию, скопируйте содержание заполненного слайда в настройках этапа интерактивного урока. Для этого нажмите кнопку «Копировать» на изображении экрана, с которого необходимо снять копию на пустом слайде интерактивного урока.

При завершении работы необходимо нажать кнопку «Сохранить».