Создание предмета с нуля — различия между версиями
RedPython (обсуждение | вклад) (Новая страница: «А давайте попробуем создать какой-нибудь простой предмет совсем-совсем с нуля. Например…») |
RedPython (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | А давайте попробуем создать какой-нибудь простой предмет совсем-совсем с нуля. Например | + | А давайте попробуем создать какой-нибудь простой предмет совсем-совсем с нуля. Например, банку сгущёнки, её все видели и все понимают, как она выглядит и что с ней делают. Замоделим высоко- и низкополигональные модели, создадим развёртку, запечём карту нормалей (normalmap), нарисуем фототекстуру, обработаем в сталкерском СДК и добавим всё это в игру. |
+ | |||
+ | В этом руководстве используются: | ||
+ | * Maya 2019 и плагин [[X-Ray Maya tools]] | ||
+ | * Photoshop CC | ||
+ | * текстовый редактор с подсветкой синтаксиса, например, [[SciTE]] | ||
+ | * [[:Категория:X-Ray SDK | и собственно сам сталкерский SDK]] | ||
+ | |||
+ | Майю предварительно нужно настроить так, как описано в [[Maya:_предварительная_настройка | этой статье]]. | ||
== Шаг 1: моделирование == | == Шаг 1: моделирование == | ||
Строка 32: | Строка 40: | ||
[[Файл:first-item-05.PNG|640px]] | [[Файл:first-item-05.PNG|640px]] | ||
− | Некоторые лупы после выдавливания получились мягкими, хотя углы между полигонами в районе 90 градусов. Нужно сразу исправить их, выделив двойным щелчком ЛКМ и применив операцию Shift+ | + | Некоторые лупы после выдавливания получились мягкими, хотя углы между полигонами в районе 90 градусов. Нужно сразу исправить их, выделив двойным щелчком ЛКМ и применив операцию Shift+RMB -> Soften/Harden Edges -> Harden Edge. |
[[Файл:first-item-06.PNG|480px]] | [[Файл:first-item-06.PNG|480px]] | ||
Строка 40: | Строка 48: | ||
[[Файл:first-item-07.jpg|640px]] | [[Файл:first-item-07.jpg|640px]] | ||
− | Сохраняем картинку рядом со сценой, смотрим на её разрешение: 512х512 пикселей. Создаём плоскость размером 512х512мм, назначаем ей новый материал типа lambert ( | + | Сохраняем картинку рядом со сценой, смотрим на её разрешение: 512х512 пикселей. Создаём плоскость размером 512х512мм, назначаем ей новый материал типа lambert (RMB - > Assign New Material). Материал назначен, но к его файл-ноде не привязана текстура. Чтобы исправить это, жмём RMB -> Material Attributes, и в свитке Common Material Attributes клацаем по кнопке-шахматке напротив параметра Color: |
[[Файл:first-item-08.PNG|480px]] | [[Файл:first-item-08.PNG|480px]] | ||
Строка 52: | Строка 60: | ||
[[Файл:first-item-10.png|640px]] | [[Файл:first-item-10.png|640px]] | ||
− | Смещаем плоскость вниз, чтобы она не перекрывала банку, затем, не снимая выделения, открываем панель Channel Box/Layer Editor и добавляем её в новый слой. Слою ставим тип отрисовки Reference | + | Смещаем плоскость вниз, чтобы она не перекрывала банку, затем, не снимая выделения, открываем панель Channel Box/Layer Editor и добавляем её в новый слой, который можно назвать REF. Слою ставим тип отрисовки Reference ? он будет отображаться во вьюпорте, но плоскость невозможно будет случайно выделить. |
[[Файл:first-item-11.png|480px]] | [[Файл:first-item-11.png|480px]] | ||
Строка 60: | Строка 68: | ||
[[Файл:first-item-12.PNG|640px]] | [[Файл:first-item-12.PNG|640px]] | ||
− | Оставшееся отверстие закроем операцией Shift+ | + | Оставшееся отверстие закроем операцией Shift+RMB -> Fill Hole. Затем выберем лупы, расположенные по центру выпуклостей, переключимся в перспективу и сместим выделенные рёбра вверх: |
[[Файл:first-item-13.PNG|640px]] | [[Файл:first-item-13.PNG|640px]] | ||
Строка 74: | Строка 82: | ||
В этом режиме тоже можно редактировать геометрию. | В этом режиме тоже можно редактировать геометрию. | ||
− | Итак, верхняя крышка высокополигональной модели полностью готова. Но как быть с нижней крышкой, не моделить же её заново? Удобнее всего выделить полигоны крышки и воспользоваться операцией Shift+ | + | Итак, верхняя крышка высокополигональной модели полностью готова. Но как быть с нижней крышкой, не моделить же её заново? Удобнее всего выделить полигоны крышки и воспользоваться операцией Shift+RMB -> Duplicate Faces. В результате выделенные полигоны будут продублированы отдельным мешем. Нам остаётся только отзеркалить его по оси Y на панельке Channel Box'а, а затем удалить полигоны нижней крышки, операцией Shift+RMB -> Combine объединить дублированную крышку в один объект с остальной банкой, проверить, совпадают ли вертексы на границе разрезов, подвинуть их, если они не совпадают, и сшить вершины операцией Shift+RMB -> Merge Vertices. |
[[Файл:first-item-16.png|640px]] | [[Файл:first-item-16.png|640px]] | ||
Строка 82: | Строка 90: | ||
[[Файл:first-item-17.PNG|640px]] | [[Файл:first-item-17.PNG|640px]] | ||
− | + | Высокополигональная модель закончена, переходим к низкополигональной. | |
+ | |||
+ | Сцену на текущей стадии (формат Maya 2019) можно скачать с нашего сервера. | ||
+ | |||
+ | === Низкополигональная (low-poly) модель === | ||
+ | Есть два способа получить низкополигональную модель: | ||
+ | * вернуться в прошлое и продублировать заготовку цилиндра на отдельный слой | ||
+ | * продублировать существующую высокополигональную банку и убрать с неё детализацию | ||
+ | В нашем случае удобнее будет убрать детализацию. Для этого: | ||
+ | * нажатием Ctrl+D дублируем существующую банку и добавляем её на новый слой, который назовём HI_GEO. Этот слой пока скроем, нажав на кнопочку V, и не будем трогать до тех пор, пока не перейдём к запеканию нормалмап. | ||
+ | * на оставшейся банке при зажатой клавише Shift кликом ЛКМ выделим каждое второе ребро по диаметру и нажмём Ctrl+Del ? этим сочетанием клавиш удалятся и рёбра, и вертексы на пересечениях удаляемого ребра со всеми прочими. Так же поступим с поддерживающими рёбрами на буртиках, а крышки вовсе удалим и закроем образовавшиеся дыры операцией Fill Hole. | ||
+ | |||
+ | [[Файл:first-item-18.PNG|640px|слева высокополигональная банка с выделенными под удаление рёбрами, справа - результат удаления ненужных компонентов]] | ||
+ | |||
+ | * Добавим получившуюся низкополигональную банку на новый слой, который назовём LO_GEO. | ||
+ | |||
+ | [[Файл:first-item-19.PNG|320px]] | ||
+ | |||
+ | Низкополигональная модель готова, переходим к процессу создания её развёртки. | ||
+ | |||
+ | Сцену на текущей стадии (формат Maya 2019) можно скачать с нашего сервера. | ||
+ | |||
+ | === Создание UV-развёртки для низкополигональной модели === | ||
+ | Выделяем банку и в основном вьюпорте нажатием Shift+RMB -> Mapping -> Automatic Map накидываем на неё автоматическую развёртку, а в UV Editor'е для большего удобства включаем режим Shaded UV: | ||
+ | |||
+ | [[Файл:first-item-20.PNG|640px]] | ||
+ | |||
+ | Автоматика сделал половину работы за нас, и осталось лишь подправить полученные куски по своему вкусу. Для этого понадобятся лишь два инструмента: Cut и Move and Sew Edges. К ним можно получить доступ в режиме редактирования рёбер, удерживая Shift+RMB. | ||
+ | |||
+ | Сначала сошьём боковину банки в один лоскут: | ||
+ | |||
+ | [[Файл:first-item-21.png|640px]] | ||
+ | |||
+ | Затем разделим буртики на отдельные полигоны, выделив их граничные рёбра: | ||
+ | |||
+ | [[Файл:first-item-22.png|640px]] | ||
+ | |||
+ | После чего двойным кликом выделим по окружности рёбра крышки и выполним Move and Sew: | ||
+ | |||
+ | [[Файл:first-item-23.png|640px]] | ||
+ | |||
+ | Получаем эдакую розочку с лепестками наружу. Критически важно, чтобы куски развёртки не пересекались и не накладывались друг на друга, иначе впоследствии не получится запечь карту нормалей. | ||
+ | |||
+ | [[Файл:first-item-24.png|640px]] | ||
+ | |||
+ | Аналогичные манипуляции проделиываем и с остальными кусками развёртки: | ||
+ | |||
+ | [[Файл:first-item-25.png|640px]] | ||
+ | |||
+ | {| style="background-color: #fffdee;" width="100%" | ||
+ | |<span style="color:#172172;">'''Подсказка'''</span> | ||
+ | Вовсе необязательно выделять каждое ребро крышки вручную. Можно кликом LMB выбрать все рёбра нужного куска развёртки, а затем при зажатой Ctrl прокликать лупы - с них снимется выделение, и выделенными останутся только нужные рёбра. | ||
+ | |} | ||
+ | ---- | ||
+ | |||
+ | К полученным кускам применяем операцию Unfold, чтобы дополнительно разгладить их: | ||
+ | |||
+ | [[Файл:first-item-26.png|640px]] | ||
+ | |||
+ | А затем выполняем операцию Layout UV, чтобы куски получили одинаковый масштаб и равномерно расположились в UV-пространстве от 0 до 1: | ||
+ | |||
+ | [[Файл:first-item-27.png|640px]] | ||
+ | |||
+ | После чего их можно немного раздвинуть, чтобы они не касались друг друга вплотную. | ||
+ | |||
+ | На этом создание развёртки можно считать оконченным. | ||
+ | |||
+ | Сцену на текущей стадии (формат Maya 2019) можно скачать с нашего сервера. |
Версия 22:15, 20 января 2019
А давайте попробуем создать какой-нибудь простой предмет совсем-совсем с нуля. Например, банку сгущёнки, её все видели и все понимают, как она выглядит и что с ней делают. Замоделим высоко- и низкополигональные модели, создадим развёртку, запечём карту нормалей (normalmap), нарисуем фототекстуру, обработаем в сталкерском СДК и добавим всё это в игру.
В этом руководстве используются:
- Maya 2019 и плагин X-Ray Maya tools
- Photoshop CC
- текстовый редактор с подсветкой синтаксиса, например, SciTE
- и собственно сам сталкерский SDK
Майю предварительно нужно настроить так, как описано в этой статье.
Содержание
Шаг 1: моделирование
Нам нужны две модели: одна высокополигональная, очень детализированная, но без UV-развёртки. С неё мы будем снимать карту нормалей, и запечём её на вторую, низкополигональную модель.
Размеры
Стандартная банка сгущёнки имеет диаметр 73мм (75мм по буртику) и высоту 80мм.
Заходим в настройки сцены Windows -> Settings/Preferences -> Preferences, по вкладке Settings переключаем Working Units в миллиметры, сохраняем.
Высокополигональная (high-poly) модель
Создаём примитив типа "цилиндр", задаём ему радиус 36,5мм и высоту 80мм, число разбиений увеличим до 40:
Это базовая заготовка. Подобный метод создания модели так и называется - моделинг от примитива.
Далее создаём два буртика, расположенных на равных расстояниях друг от друга. Для этого открываем свойства инструмента Mesh Tools -> Insert Edge Loop, включаем режим Multiple edge loops, и задаём количество лупов: 2.
Кликаем по любому вертикальному ребру цилиндра, получаем две петли. Переключившись на инструмент маштабирования клавишей R, смещаем лупы вертикально.
Далее нужно выделить полигоны будущих буртиков и выдавить их наружу. Для этого нажатием клавиши Пробел переключаемся на вид сбоку, выделяем нужные полигоны, и применяем к ним операцию Edit Mesh -> Extrude, и доводим буртики манипуляторами инструмента масштабирования до нужного вида:
Тем же методом формируем бурты сверху и снизу:
Некоторые лупы после выдавливания получились мягкими, хотя углы между полигонами в районе 90 градусов. Нужно сразу исправить их, выделив двойным щелчком ЛКМ и применив операцию Shift+RMB -> Soften/Harden Edges -> Harden Edge.
Теперь нужно как-то создать кольцевые рёбра жёсткости на крышках. Если бы мы собирались рисовать текстуру без использования фото или сканов, то рёбра жёсткости можно было бы сделать на глаз, но у нас уже есть готовый скан крышки банки, поэтому мы будем использовать её как референс.
Сохраняем картинку рядом со сценой, смотрим на её разрешение: 512х512 пикселей. Создаём плоскость размером 512х512мм, назначаем ей новый материал типа lambert (RMB - > Assign New Material). Материал назначен, но к его файл-ноде не привязана текстура. Чтобы исправить это, жмём RMB -> Material Attributes, и в свитке Common Material Attributes клацаем по кнопке-шахматке напротив параметра Color:
В открывшемся окошке из списка справа выбираем кнопку File. Теперь в редакторе атрибутов в свитке File Attributes в поле Image Name указываем нашу текстуру. Получается что-то такое:
Поскольку и текстура, и плоскость, на которой она лежит, являются квадратными, то никаких действий с развёрткой предпринимать не нужно. Требуется лишь переключиться на вид сверху, включить режим X-Ray на панели над вьюпортом и отмасштабировать изображение донца под размер банки.
Смещаем плоскость вниз, чтобы она не перекрывала банку, затем, не снимая выделения, открываем панель Channel Box/Layer Editor и добавляем её в новый слой, который можно назвать REF. Слою ставим тип отрисовки Reference ? он будет отображаться во вьюпорте, но плоскость невозможно будет случайно выделить.
Наконец-то переходим к созданию рёбер жёсткости. Будем делать их по-старинке, выдавливанием. Для этого в том же виде сверху удаляем полигоны крышки, выбираем рёбра по краям, и, выполняя операцию Extrude, последовательно выдавливаем их по ширине выпуклостей, но не пользуемся манипуляторами Extrude, а каждый раз переключаемся на инструмент масштабирования. Это нужно для того, чтобы рёбра выдавливались в одной плоскости, а не по какой-нибудь дуге.
Оставшееся отверстие закроем операцией Shift+RMB -> Fill Hole. Затем выберем лупы, расположенные по центру выпуклостей, переключимся в перспективу и сместим выделенные рёбра вверх:
Форма задана, теперь нужно её детализировать, заодно добавив поддерживающие рёбра буртикам. Делается это тем же инструментов Insert Edge Loop с включенным параметром Insert with edge flow. Числовое значение этого параметра подбирается экспериментально.
Проконтролировать результат можно нажатием кнопки 3, она включит режим сглаженного отображения:
В этом режиме тоже можно редактировать геометрию.
Итак, верхняя крышка высокополигональной модели полностью готова. Но как быть с нижней крышкой, не моделить же её заново? Удобнее всего выделить полигоны крышки и воспользоваться операцией Shift+RMB -> Duplicate Faces. В результате выделенные полигоны будут продублированы отдельным мешем. Нам остаётся только отзеркалить его по оси Y на панельке Channel Box'а, а затем удалить полигоны нижней крышки, операцией Shift+RMB -> Combine объединить дублированную крышку в один объект с остальной банкой, проверить, совпадают ли вертексы на границе разрезов, подвинуть их, если они не совпадают, и сшить вершины операцией Shift+RMB -> Merge Vertices.
Вот какая получилась модель:
Высокополигональная модель закончена, переходим к низкополигональной.
Сцену на текущей стадии (формат Maya 2019) можно скачать с нашего сервера.
Низкополигональная (low-poly) модель
Есть два способа получить низкополигональную модель:
- вернуться в прошлое и продублировать заготовку цилиндра на отдельный слой
- продублировать существующую высокополигональную банку и убрать с неё детализацию
В нашем случае удобнее будет убрать детализацию. Для этого:
- нажатием Ctrl+D дублируем существующую банку и добавляем её на новый слой, который назовём HI_GEO. Этот слой пока скроем, нажав на кнопочку V, и не будем трогать до тех пор, пока не перейдём к запеканию нормалмап.
- на оставшейся банке при зажатой клавише Shift кликом ЛКМ выделим каждое второе ребро по диаметру и нажмём Ctrl+Del ? этим сочетанием клавиш удалятся и рёбра, и вертексы на пересечениях удаляемого ребра со всеми прочими. Так же поступим с поддерживающими рёбрами на буртиках, а крышки вовсе удалим и закроем образовавшиеся дыры операцией Fill Hole.
- Добавим получившуюся низкополигональную банку на новый слой, который назовём LO_GEO.
Низкополигональная модель готова, переходим к процессу создания её развёртки.
Сцену на текущей стадии (формат Maya 2019) можно скачать с нашего сервера.
Создание UV-развёртки для низкополигональной модели
Выделяем банку и в основном вьюпорте нажатием Shift+RMB -> Mapping -> Automatic Map накидываем на неё автоматическую развёртку, а в UV Editor'е для большего удобства включаем режим Shaded UV:
Автоматика сделал половину работы за нас, и осталось лишь подправить полученные куски по своему вкусу. Для этого понадобятся лишь два инструмента: Cut и Move and Sew Edges. К ним можно получить доступ в режиме редактирования рёбер, удерживая Shift+RMB.
Сначала сошьём боковину банки в один лоскут:
Затем разделим буртики на отдельные полигоны, выделив их граничные рёбра:
После чего двойным кликом выделим по окружности рёбра крышки и выполним Move and Sew:
Получаем эдакую розочку с лепестками наружу. Критически важно, чтобы куски развёртки не пересекались и не накладывались друг на друга, иначе впоследствии не получится запечь карту нормалей.
Аналогичные манипуляции проделиываем и с остальными кусками развёртки:
Подсказка
Вовсе необязательно выделять каждое ребро крышки вручную. Можно кликом LMB выбрать все рёбра нужного куска развёртки, а затем при зажатой Ctrl прокликать лупы - с них снимется выделение, и выделенными останутся только нужные рёбра. |
К полученным кускам применяем операцию Unfold, чтобы дополнительно разгладить их:
А затем выполняем операцию Layout UV, чтобы куски получили одинаковый масштаб и равномерно расположились в UV-пространстве от 0 до 1:
После чего их можно немного раздвинуть, чтобы они не касались друг друга вплотную.
На этом создание развёртки можно считать оконченным.
Сцену на текущей стадии (формат Maya 2019) можно скачать с нашего сервера.