Цикл Games в Maya, автор: Юрий Рогач (Ursus) Статьи взяты с сайта dlight.ru Данные туториалы актуальны для программы Maya 8.5
Наибольший объём работ 3D-художника при производстве игр связан с изготовлением игровых уровней. В данном уроке мною будет показан один из разработанных способов создания сложного террейна на примере небольшой реальной игровой локации. Представленный принцип моделирования подходит и для более масштабных игровых уровней, детализация и бюджет полигонов которых определяется как и возможностью игрового движка, так и требованиями дизайн-документа.
Перед этапом создания лучше всего иметь скетч, план, или хотя бы просто набросок создаваемого уровня:
Возьмем для примера часть морского скалистого побережья с заранее продуманным рельефом и планом расположения элементов сцены.
Зная размер и пропорции локации, изготавливаем Polygon Plane с нужной тесселяцией. Располагаем его на уровне, где примерно должно быть расположена видимая подводная часть острова, а затем, выделяя инструментом Paint Selection Tool и удаляя лишние полигоны, придаём плоскости нужный контур дна. Далее, снова выделив Paint Selection Tool нужные полигоны, чтобы форма выделения приняла вид необходимой конфигурации подводной части побережья, произведём Extrude этого выделения до 2/3 высоты к уровню линии моря, создав контур основания суши:
Используя инструмент Insert Edge Loop Tool[Polygons] Edit Mesh->Insert Edge Loop Tool одним кликом вставляем протяженный edge через всё основание острова, параллельно линии дна, а затем, используя инструмент Select Shortest Edge Path Tool[Polygons] Select->Select Shortest Edge Path Tool выделяем границу между плоским дном и отвесными полигонами. И, после того, нажав CTRL+F9, превращаем это выделение в выделенный массив вертексов:
К выделенному массиву вертексов применяем действие функции Average[Polygons] Mesh->Average Vertices, (настройки которой можно подобрать для достижения наиболее подходящего вам результата), делая видимое сглаживание границы перехода между плоским дном и отвесными полигонами. Причем, без добавления лишнего количества полигонов:
Выделив весь mesh будущего террейна, активизируем инструмент Sculpt Geometry Tool[Polygons] Mesh->Sculpt Geometry Tool вместе с вкладышем его настроек:
Экспериментируя со стандартными профилями кистей, и профилями, подгружаемыми через кнопку Browse[b], придаем "дну" нужную конфигурацию и рельеф:
Далее, снова выделив [b]Paint Selection Tool нужные полигоны, чтобы форма выделения приняла вид необходимой конфигурации уже надводной части побережья, произведём Extrude этого выделения до высоты уровня линии моря, создав контур кромки суши:
Дальше придется поимпровизировать побольше. Используя вышеописанные приемы с использованием Paint Selection Tool, Extrude и, в некоторых случаях, Average постараемся получить состоящую из четырехугольников форму надводной части берега и массива скал над берегом. Размеры квадратных элементов "поверхности" и степень (длину) Extrude желательно сохранять с одинаковыми пропорциями, и, желательно, выдерживая форму квадрата. Extrude делаем послойно, выделяя перед этим каждый раз [/b]Paint Selection Tool-ом[/b] только те участки, которые будут выдавлены:
На следующем этапе, поработав Sculpt Geometry Tool[Polygons] Mesh->Sculpt Geometry Tool закруглим острые участки, примяв их кистью, и сделаем более объемными некоторые участки скал, немного выдавив Sculpt Geometry Tool-ом одни места, и углубив кистью другие:
Далее на весь mesh делаем Smooth[Polygons] Mesh->Smooth с любым понравившимся вам значением, но с Division levels желательно не более 1. Сетка объекта приобретает более детальный вид, имея в виде компонентов поверхности четырёхугольники меньших значений. На этой поверхности уже можно более тонко работать Sculpt Geometry Tool-ом с разными профильными кистями (подгружаемыми через кнопку Browse), в том числе и собственных конфигураций. На данном этапе требуется завершить работу над формой и выдавленными элементами береговой локации:
Следующим этапом работы требуется установить в нужных местах mesh-а полигональные рёбра и поверхности с нужным значением жесткости нормалей, используя Soften Edge[Polygons] Normals->Soften Edge и Harden Edge[Polygons] Normals->Harden Edge. (В предыдущих версиях Maya эти функции находятся в другом месте). Также, в моем случае, внизу берегового дна потребовалось сделать "юбку", уходящую в темноту глубины моря в игровом движке. Чтобы сделать ее, достаточно выделить край (border) модели, щелкнув по одному из border edge с помощью инструмента Select Border Edge Tool[Polygons] Select->Select Border Edge Tool, используя затем Extrude:
Далее придется провести наиболее трудоемкую и тщательную работу по текстурированию модели. Раскладка UV-set-а (или UV-set-ов) - целая наука, поэтому подробности этого процесса придется здесь пропустить. Тем более, что у каждого 3D-художника есть свои наработки, а у каждого игрового проекта - технические требования. В моем случае можно было использовать колорные тайловые текстуры на первый UV-set и lightmap (или occlusion) на второй. Тайлы текстур требуется заготовить заранее (урок по их созданию я попытаюсь написать в следующий раз). После раскладки маппинга и укладки колорных тайлов часть берега приобретает вид:
При работе с маппингом и тайлами на ландшафтной локации приходится постараться, чтобы спрятать резкие переходы между разными типами текстур. Для этого можно воспользоваться специально подготовленными тайлами текстур, на которых переходы между рисунками уже заранее прорисованы. Поэтому и при раскладке их на mesh не будет больших проблем:
Для данной конкретной локации необходимо домоделлить определенное количество объектов ландшафта, о работе над которыми в этой статье не будет рассказано, однако остановимся на одном из способов неравномерной расстановки однотипных объектов на поверхности модели. В данном случае, на расстановке валунов по поверхности каменного берега:
Сперва замоделливаем, замапливаем и затекстуриваем валун нужного размера, клоны которого будут расставляться позже, помещаем его в центр мира, применяем к нему Freeze TransformationsModify->Freeze Transformations и переименовываем в Stone01. Далее делаем дубликат объекта, на котором будем расставлять валуны, и прячем оригинальный. Теперь будем расставлять валуны на дубликате, так как скрипт, поставляемый с пакетом Maya, работает на объектах, дефолтный UV-set которых расположен в координатах от 0 до 1. Поэтому на дубликате в дефолтном UV-set-е делаем Planar Mapping[Polygons] Create UVs->Planar Mapping, чтобы привести его к координатам от 0 до 1. А затем запускаем Paint Scripts ToolModify->Paint Scripts Tool, чтобы потом из него вызвать встроенный скрипт geometryPaint, который, в свою очередь, открывает окно с настройками. В окне Paint Scripts Tool-а находим раздел Setup, в котором в строку Tool setup cmd вводим команду geometryPaint и нажимаем на клавиатуре Enter. Сразу же разделы Setup автоматически заполняются и вызывают окно инструмента geometryPaint (Geometry Paint Settings), который способом выкрашивания цели (в нашем случае дубликата поверхности берега) может расставлять на ней заданные объекты путем копирования и модифицирования последних:
В поле Geometry вводим имя нашего объекта, который будем клонировать (в нашем случае, это Stone01), подбираем другие настройки и "красим" кистью по нашему дубликату поверхности, наблюдая "рост" на ней клонов валуна. Выкрашенные поверхности можно редактировать, выкрашивая снова, изменив настройки окна Geometry Paint Settings, пока оно не было закрыто.
Альтернативные способы запуска geometryPaint:
Через меню установленного комплекта бесплатного дополнения к Maya – Maya Bonus Tools, которое можно скачать с официального сайта http://area.autodesk.com/ (требуется обычная регистрация) - раздел меню: Paint Geometry Tool.
Через установленную на любой Shelf кнопку, содержащую команду: ScriptPaintTool; artUserPaintCtx -e -tsc "geometryPaint" `currentCtx`;
Выкраску поверхности можно проводить в несколько этапов, выбирая каждый раз разнообразные подготовленные для этого объекты клонирования.
На этапе завершения выделяем все отклонированные валуны и удаляем на них History Edit->Delete by Type->History, затем удаляем отдублированный берег и открываем скрытый оригинальный mesh берега.
На этом все.
Демонстрирую реальные игровые скриншоты террейна из этого урока (локация в режиме тестирования - временный интерфейс, отсутствие пены у берега, временная настройка погоды):
Данный урок посвящен текстурированию трёхмерных игровых локаций, а также даны некоторые советы и рекомендации подготовки непосредственно самой текстуры-тайла в программе Adobe Photoshop.
Определение текстурного Тайла имеет огромное множество значений, также, как и способов его применения. Данный урок посвящен в большей степени способу высокодетального текстурирования трёхмерных игровых локаций, создаваемых в Maya, с разделом, в котором даны некоторые советы и рекомендации подготовки непосредственно самой текстуры-тайла в программе Adobe Photoshop. Поэтому для конкретного случая воспользуемся определением: Тайл (Tile) - текстура изображения поверхности 3D-объекта, предназначенная для заполнения областей с помощью укладки способом "черепица", т. е. размещая копии текстуры бок о бок, как керамическую плитку. Текстура называется тайленной, если её края копий соединяются без видимых швов (левые с правыми и верхние с нижними) . Наиболее удобно иметь тайлы в виде квадратной текстуры. И, для игрового моделирования, обязательное условие: размер сторон Тайла в пикселях должен быть кратен степени два: 128, 256, 512, 1024, и д.р.
Tiles и Photoshop
Прежде, чем загрузить текстурный тайл в Maya, и продолжить работать там с ним в ней, попробуем расширить область данного урока, исследовав несколько способов подготовки его в Photoshop-е. Существует огромное множество библиотек готовых тайленных текстур, а также специальных сетевых ресурсов, обзоры которых можно найти и на данном сайте. Также, существуют специальные программы и приложения, которые могут алгоритмически генерить готовые тайлы. Но сейчас рассмотрим несколько способов создания тайла, используя в виде исходного материала растровое изображение нужной нам фактуры, изготовленное или с помощью цифровой аппаратуры, или же взятое из внешних источников.
Сперва опробуем несколько способов изготовления регулярных тайловых текстур, которые при наложении на объекты при удаленном просмотре не позволяют различить на их поверхности повторяющихся рисунков, рождённых фактурой тайла. Для примера возьмём фото страницы старой книги. В моем случае оно было размера 1716 х 2332 пикселей. Всегда работает правило - чем больше размер исходника, и чем выше его качество, тем лучше может быть качество самого конечного тайла, и тем больший размер его может быть изготовлен.
Поэтому можно было предположить, что из этого образца вполне неплохо может быть изготовлен тайл 1024 х 1024, а тайл размером 512 х 512 будет полностью соответствовать всем нормам.
С помощью рамки выделения Marquee Tool в режиме Fixed Aspect Ratio, Width: 1 Height: 1 выберем на фото участок бумаги, наименее отмеченный характерными пятнами или бросающимися в глаза деталями.
А затем, используя Crop(Image > Crop), удаляем всё не вошедшее в выделение. Полученный размер картинки после Crop имеем 1428 х 1428. Чтобы далее было удобнее работать с ней, округляем ее размер до 1400 х 1400. А затем, с помощью инструмента Healing Brush Tool замазываем наиболее заметные пятна на текстуре, чтобы при тайлинге они не повторялись синхронным рисунком. Ниже приведён пример до (слева) и после (справа) использования Healing Brush Tool-а:
Способ первый: применим к измененной текстуре "фильтр" Offset(Filter>Other>Offset...), не забывая про возможно созданные новые слои (Используя Healing Brush Tool, как и другие инструменты в Photoshop-е, желательно все изменения и добавления вносить в отдельный слой, сохраняя снизу орининальный). В окне Offset, зная размер текстуры (у нас он 1400 х 1400), вносим в строку Horizontal +700, оставляя остальные настройки по умолчанию. Получаем сдвиг текстуры ровно наполовину, который производит видимый вертикальны шов по центру, но с гарантией того, что левый и правый края совпадают своим рисунком абсолютно. Поэтому далее, используя Healing Brush Tool аккуратно замазываем центральный шов, добиваясь равномерности рисунка или фактуры по всему центральному полю текстуры. Всякие более темные или более светлые участки придётся разделить на неравномерные пятна, или же даже вообще сравнять с оттенком основной площади. Иногда для ускорения процесса приходится также воспользоваться и Clone Stamp Tool, но им надо работать довольно осторожно, чтобы не оставлять заметными границы работы кисти этого инструмента.
По завершении сокрытия шва, надо повторить работу "фильтра" Offset(Filter>Other>Offset...), но уже по вертикальному направлению, после чего также придется замазать образовавшийся шов, правда на сей раз горизонтальный.
В конце этой операции мы при определенной аккуратности уже сможем получить вполне пригодный для работы Тайл бумаги размером 1400 х 1400 пикселей. Теперь, уменьшив его размеры до технологически подходящего разрешения 1024 х 1024 пикселей, мы увеличим его качество, хотя бы частично убрав неизбежные искажения, полученные при фотографировании или же компрессии, если вы пользовались клипартами, или же фотографиями из какой-нибудь базы. Уменьшив же тайл до 512 х 512 пикселей, вы еще больше усилите качество вашей текстуры. Для последующего сохранения его стоит пользоваться только форматами, не приводящими к потерям достигнутого вами качества, избежав компрессию. Рекомендуется, например, формат TGA. В финале тайл будет выглядеть подобно ниже приведенной текстуре, края которой при соединении с её же копиями не должны образовывать видимых швов:
Способ второй: выделим всю область первоначальной заготовки тайла (без заметных пятен) и применим к ней "фильтр" Pattern Maker(Filter > Pattern Maker...). В открывшемся окне настроек можно долго экспериментировать со значениями, и пробовать заново генерацию тайла. Причем, даже при одинаковых значениях новые генерации дают новые рисунки тайла. Для данного примера я воспользовался настройками:
Получившийся при данном быстром способе тайл выглядит следующим образом:
Его также можно отредактировать Healing Brush Tool, при условии, что не будут затронуты полученные границы рисунка. Теперь, и его уменьшив до технологически подходящего разрешения 1024 х 1024 пикселей, мы снова увеличим его качество. Ничто не мешает и этот тайл уменьшить до 512 х 512 пикселей.
Изготовление нерегулярных тайловых текстур выглядит несколько сложнее, хотя при определенном навыке также не должно вызывать каких-то особых затруднений. Для примера возьмём фото скальной породы, при изготовлении тайла которой важно сохранить детали и формы минеральных вкраплений и выпуклостей. Размер исходника был 3591 х 2426 пикселей:
Сперва с помощью рамки выделения Marquee Tool в режиме Fixed Aspect Ratio, Width: 1 Height: 1 выберем на фото наиболее подходящий участок с наименьшей потерей площади. Из выделения с последующим изменением размера получаем первую заготовку с размером, который должен быть кратный цифре 1,5, при последующем делении на которую, мы бы могли потом для удобства получить округленное значение размера текстуры, из которой потом придётся делать тайл. В нашем случае получилась заготовка 2400 х 2400 пикселей. При делении значения 2400 на 1,5 впоследствии мы сможем получить текстуру 1600 х 1600 пикселей. Заготовку сохраняем новым слоем в формате PSD, так как нам придётся делать несколько слоев при изготовлении тайла:
Далее слой с заготовкой разделяем на два, причем один из них (основной) должен иметь размер по горизонтали такой, каким мы изначально предполагали размер конечной текстуры. В нашем примере: 1600 пикселей. Второй слой будет в размере по ширине в 1/2 от 1600: 800 пикселей:
Затем организуем наш PSD файл так, чтобы размер образа был выровнен под размер нижнего основного слоя (в нашем случае 1600 х 2400 пикселей), а верхний, дополнительный, был приснаплен к правому краю :
Далее, применим к нижнему основному слою "фильтр" Offset(Filter>Other>Offset...), с опцией Horizontal относительно 1/2 ширины этого слоя (1600 пикселей) в +800. А к верхнему применим маску Add layer mask, которую по правому краю наполовину ширины уже этого дополнительного слоя (в нашем случае на 200 пикселей в ширину) зальём черным цветом, получив на этом участке прозрачность верхнего слоя (Пользоваться Eraser Tool настоятельно не рекомендуется не только для данной цели, но для многих других при работе над текстурами в Photoshop-е, так как тогда всегда теряется возможность обратного редактирования удалённых зон):
Затем, редактируя маску, и используя топологию рисунка верхнего слоя, стараемся наиболее логично совместить рисунки верхнего и нижнего слоев:
В конце процедуры получаем подобное видимое совмещение верхнего слоя с нижним:
На данном этапе мы уже получим тайлинг этой текстуры по левому и правому краям. Теперь повторим все вышеописанные процедуры для того, чтобы сделать тайлинг по верхнему и нижнему краям, завершив, по сути, изготовление нормального четырёхстороннего тайла. На сей раз повторное описание я пропущу, ограничившись лишь картинками, иллюстрирующими последовательные шаги работы, очень похожие на те, что уже были описаны выше:
При редактировании маски на сей раз придется следить за тем, чтобы не изменились ее правая и левая границы, чтобы при составлении тайла они совпадали и не вызывали в дальнейшем видимого шва.
В финале получаем готовый тайл размером 1400 х 1400 пикселей. Теперь, уменьшив его размеры до технологически подходящего разрешения 1024 х 1024 пикселей, мы увеличим его качество, также убирая неизбежные искажения, полученные при фотографировании или же компрессии. Уменьшив же и этот тайл до 512 х 512 пикселей, мы еще больше усилим качество нашей текстуры:
Применение данного тайла бывает ограничено тем, что при частой его укладке довольно заметен рисунок (или вернее его повторение) фактуры самого тайла, особенно при удаленном просмотре объекта с этой текстурой. Возможности обхождения этой проблемы будут затронуты во второй части урока Tiles & Maya.
Вернёмся к нашей Maya, раз уж весь цикл уроков завязан на ней, и рассмотрим различные способы и приёмы использования Тайлов в Игростроении, опираясь на средства, предоставляемые этим 3D пакетом.
Возьмём для примера упрощённую часть замоделленной стены (для облегчения понимания в виде обычного параллелепипеда) и тайленную текстуру классической кирпичной кладки:
В Maya имеется два способа назначения ее на объект для достижения требуемого результата. Первый способ подходит в том случае, когда UV-координаты не должны выходить за пределы UV-поля от 0 до 1, или же ограничены другими условиями. При обычном назначении материала с тайлом модель и ее UV-раскладка будут выглядеть следующим образом:
Теперь, чтобы установить рисунок кирпичной кладки на модели в нужном соотношении количества кирпичей в кладке к их длине, устранив возникшие в данном примере искажения, в Maya есть способ управления наложения текстур без изменения UV-координат. Заходим с свойства материала, или же текстурной ноды через Attribute Editor, и находим вкладыш, относящийся к атрибутам 2d Texture Placement-а:
Атрибут RepeatUV как раз и отвечает за то, в каком соотношении в высоту и ширину ляжет текстура на предложенные ей UV-координаты без редактирования последних:
2d Texture Placement так же позволяет делать и другие модификации над наложением текстуры, не изменяя исходный UV-set. Достаточно поэкспериментировать над всеми атрибутами и понаблюдать за результатами отображения текстуры на модели непосредственно во вьюпорте.
К недостаткам этого способа относится то, что не все плагины выгрузок в игровые движки поддерживают данный способ наложения текстур, а также и то, что иногда приходится или подбирать, или вычислять заранее значения, вбиваемые в ноду 2d Texture Placement-а.
Вторым способом является обычное скалирование UV-координат объекта, которое надо производить, наблюдая за достижением необходимого результата непосредственно во вьюпорте:
Далее рассмотрим пару приёмов, как избежать слишком заметного повторения одинаковой затайленной текстуры на протяжении большого участка модели. Первый способ, если позволяют технологические требования на игровую сцену - это ввести несколько уникальных копий используемого тайла, в которые заранее внесены заметные, бросающиеся в глаза, отличия от основного тайла. В нашем примере, в дополнение к обычной кирпичной кладке (1), было изготовлено несколько копий её с внесенными заметными повреждениями кирпича (2), (3):
1. 2. 3.
Чтобы воспользоваться этими текстурами, естественно придется внести дополнительные разбиения объекта в тех местах, где будут назначены измененнные дубликаты тайла, если топология модели не позволяет прямого их назначения непосредственно на отдельные полигоны или полигональные участки. В Maya без проблем возможно назначать на модели любые дополнительные материалы, всего лишь выделив нужные полигоны, и присвоив на них требуемые текстуры, точно так же, как присваиваются материалы на выделения самих моделей.
На рисунке внизу слева показан наш участок стены с полем обычного тайла, а справа на эту модель уже добавлено два измененных тайла по рассечениям объекта, видимым на центральной картинке:
Чтобы нагляднее увидеть разницу, которая на этих картинках почти не заметна, ниже представляю две полоски текстур с тайлами: вверху - только с обычными, внизу с дополнительными вставками:
Следующим приёмом, прячущим видимую затайленность моделей, является создание многослойного материала, в котором на первый слой кладётся тайл с колором, а на второй можно или положить второй тайл, или же уточняющую (детальную) текстуру, или же, как будет показано ниже - грязевую текстуру. При всем этом должно будет выполняться условие, чтобы текстура второго слоя не совпадала по топологии или повторяемости с тайлом первого слоя, внося видимое рассогласование рисунка тайленной текстуры. Поэтому для этого необходимо создание второго UV-set-а, независимого от первого. Все современные движки должны поддерживать как и многослойные материалы, так и несколько UV-set-ов на полигон. Хотя есть и редкие исключения. Поэтому перед применением данного способа необходимо уточнить технологические требования на игровой движок. Для примера рассмотрим нанесение грязевой текстуры на нашу упрощенную модель стены:
Для этого на канал Color в материале, нанесенном на стену, вместо ноды File, ссылающейся на нашу тайленную текстуру, назначаем созданную ноду Layered Texture, на которую, в свою очередь, подаем две ноды File, одна из которых - наша с тайлом кирпичной кладки, а вторая - с текстурой загрязнения:
Внутри Layered Texture эти две текстуры будут смешиваться между собой, наподобие слоёв в Photoshop-е, причем ноды, находящиеся слева, будут соответствовать более верхним слоям при смешивании. Поэтому если слева будет нода грязевой текстуры и ей будет назначен Blend Mode - Multiply, то в результате на выходе мы получим материал с тайлом загрязненной кирпичной кладки, где грязевая текстура, в свою очередь, может также быть затайлена:
Способы смешивания текстур в Maya и в игровом движке могут не совпадать, поэтому тип использования Blend Mode и характеристики текстур для второго слоя уточняйте у людей, владеющих спецификациями игрового движка. Не исключено, что можно будет использовать количество слоёв, более чем два. С ними принципы работы в Maya те же, что и с двумя слоями.
Теперь, чтобы получить нужный нам рисунок загрязнения относительно тайла кирпичной кладки, да и вообще, чтобы это всё работало, необходимо на модели создать новый UV-set (в нашем примере мы обзовём его map2), относительно которого будет наложена грязевая текстура. Этот UV-set можно на данном этапе сделать или пустым, не содержащим UV-вершин, или можно просто скопировать имеющийся map1 в новый map2. Затем его необходимо связать с той текстурой, для которой он будет предназначен, так как Maya, имея на полигонах несколько слоёв текстур и несколько разных UV-set-ов, не в состоянии определить замысел 3D-художника относительно того, какой слой предназначен для какого UV-set-а. Поэтому до этой процедуры придется наблюдать на модели полную неразбериху с рисунком текстур и их наложением. Чтобы устранить это, выделяем нашу модель и вызываем необходимый нам Relationship Editor (Window->Relationship Editors->UV Linking->UV-Centric) и связываем map1 с нодой текстуры кирпичной кладки (у нас она имеет имя bricksFort2_1), а map2 связываем с нодой грязевой текстуры (у нас она имеет имя dirt1_1), просто выбирая слева и потом справа нужные строки с нужными именами:
Теперь мы увидим, что отображение текстур на нашей модели приобрело логический вид, и мы можем без проблем зайти в созданный нами UV-set map2 и отредактировать его так, как нам надо. В случае с использованием затайленной грязевой текстуры необходимо следить за тем, чтобы границы тайла грязи наименее совпадали с границами тайла кирпичной кладки, тогда мы вместо повторения рисунка будем видеть его неоднородность:
Если же комбинировать и дополнительные вставки тайлов, и использование грязевых и уточняющих текстур, то можно будет получать не только более разнообразные поверхности моделей, но и более реалистичные.
При работе с текстурными тайлами иногда приходится сталкиваться с оптимизацией загрузки или работы сцены в игровом движке. При этом возникает необходимость укладывать игровые тайлы в текстурные наборы, наподобие приведенного ниже:
При таком классическом и очень распространённом подходе возникают две проблемы: маленькая и большая. Маленькая проблема заключается в том, что моделлеру при точном позиционировании UV-координат при работе в UV Texture Editor-е часто очень тяжело установить окончание одного тайла и начало другого:
Большая проблема возникает тогда, когда и модель, и текстурный набор тайлов выгружены в движок с использованием DXT-компрессии (это практикуется почти повсеместно), и игроку предоставляется возможность наблюдать объект с тайлами на некотором расстоянии. При этом на полигональных моделях текстуры переключаются на последующие mip-ы, с более низким разрешением, и, из-за того, что антиальясинг в видеокарте строится с учетом соседних от UV-координат пикселей на текстурном листе, мы можем наблюдать хорошо заметные швы разного цвета между тайлами:
Это происходит оттого, что границы текстурных координат захватывают соседние тайлы, отличающиеся по цвету. И чем дальше от виртуального зрителя расположена модель, тем более крупные участки соседних тайлов будут попадать на тайлы, которые мы должны видеть. Чтобы этого избежать, во-первых, следует придерживаться правила составлять текстурные листы из тайлов, подобных по цвету и интенсивности, а, во-вторых, можно воспользоваться технологией разделения тайлов текстурными границами. При составлении листов из тайлов необходимо делать зазоры между ними и между тайлами и краями текстуры. Причём размер зазоров между тайлами должен быть ровно в два раза больше размера зазоров между тайлами и границами текстурного листа:
Потом уже по этим текстурам с разграниченными тайлами размаппить полигональные модели. Из-за наличия хорошо видимых швов делать это можно будет во многие разы легче:
Особенных проблем у моделлера с позиционированием UV-координат не должно быть еще и при использовани в окне UV Texture Editor-а функции Pixel Shap (Image > Pixel Shap, в меню UV Texture Editor-а), которой, впрочем, надо пользоваться осторожно, чтобы не схлопнуть все координаты в одну точку.
Но при таком способе, в игровой движок эти текстуры выгружать нельзя, так как границы между тайлами будут заметны уже с любого, даже довольно близкого расстояния. Для этого придется подготавливать два комплекта: и для моделлинга, и для движка. Для последнего надо будет заполнять швы между тайлами полосками, вырезанными с тех краёв тайла, которые примыкают к месту образования шва. Зато текстурные координаты модели на этих листах после переназначения, будут лежать не только по правильным границам тайлов, но и разделенные нужным цветом, интенсивностью и фактурой от соседних тайлов. И при антиальясинге видеокарта будет брать такие же пиксели на границах, как и на оригинальном тайле:
На этом раздел "Tiles & Maya" позвольте завершить.
Цикл же "Games в Maya", надеюсь, будет продолжен...
Mett, Отличные уроки. Спасибо за труды. - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Добавлено (29.03.2014, 12:54) --------------------------------------------- Одна просьба.. Не завалялась ли у кого-нибудь ссылка на Maya 5.0 или Maya 8.5 ? В интернете найти не могу.. Вообще... Буду очень признателен!
Отписал в ЛС... Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Мне один перец уперто заявляет, что в майе моделить с нуля лучше, тк получаются менее полигональные модели, чем в 3D Max. По моему бредок, тк полигональность модели - дело рук самого создателя, не зависимо от редактора. Интересно, что думаете об этом, камрады? - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
В максе же можно моделировать с помощью морфов, там чем больше полигонов, тем наверное лучше, а если сплайнами, или пользуясь не автоматическими инструментами, то чём умеешь в том и лучше.
Хотя может он с Z-Brush попутал. )) Там точно только Hi poly моделирование. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.
NikK, нет, он точно заявлял о максе. Видимо привык к морфингу. По мне так лучше растить пополигонно, экструзией ребер. Некоторым, сначала в Z-Brush хай-поли, а потом в топогане ретопологию вытворять, но моделить так под Корсаров это, имхо, как по комару - топором.)
Добавлено (30.05.2014, 01:26) --------------------------------------------- зы. Хотя с другой стороны, если уже есть хай-поли образец и топоган, то почему бы и не заморочиться с ретопологией. Сам недавно попробовал на персонаже, в опровержение своему выше сказанному, времени убил меньше, чем растил бы пополигонно, и результат удовлетворил. Так что дело желания, главное заморочиться. =)
Reboroda, надеюсь не против, прикрепил скрины прямо к сообщению, для удобства просмотра )
Очень не дурно. Стесняюсь спросить, откуда такие знания анатомии, или просто наблюдательность и умение моделировать по фото?
ЦитатаReboroda ()
Сам недавно попробовал на персонаже, в опровержение своему выше сказанному, времени убил меньше, чем растил бы пополигонно, и результат удовлетворил
Наверное я безнадёжно отстал от развития технологии, всегда был уверен, что уменьшать количество полигонов дело не благодарное, т.к. они далеко не всегда слипаются так как хотелось бы, очень много приходится вручную ковырять, а если это из ZBrush модель, где счёт идёт на десятки миллионов квадратов, то... О-ой Хотя надо бы попробовать как нибудь программу, может там это предусмотрено специальными примочками.
И ещё личный совет, перейти на майю 2012 или выше. Там очень много нововведений облегчающих моделирование, а инструменты для создание UV координат, вообще делают процесс практически автоматическим. в Майя 5 достаточно отправлять в последний момент перед привязкой к скелету и экспортом. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.
не против, прикрепил скрины прямо к сообщению, для удобства просмотра )
Спасибо, я это как-то упустил)
ЦитатаNikK ()
откуда такие знания анатомии, или просто наблюдательность и умение моделировать по фото?
Некоторый опыт наверное, я уже лет 5 как минимум грызу эту науку +просмотр уроков на ютубе, в редкую стежку. Ничего такого, особенного.)
ЦитатаNikK ()
совет, перейти на майю 2012 или выше. Там очень много нововведений облегчающих моделирование, а инструменты для создание UV координат, вообще делают процесс практически автоматическим
Попробую как-нибудь освоить если так. - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
у меня вот например Майка 12 стоит, но я ей практически не пользую, там надо многие инструменты настраивать, а мне попросту лень да и потом глючек есть с размерами при экспорте из 12-ой в 5-ую (а может просто руки кривые ) так что лично я все делаю в 5-ой, а 12-ая для коллекции и на будущее) Что толку, если не можешь сделать мир лучше.
Да, и не подскажите, где можно скачать какую-нибудь программу, в которой можно 3D модельки создавать, чтобы простая была (для новичка), например сабельку какую, бочку ? А то я тут насмотрелся, как люди проект поддерживают ... Может что у меня и выйдет .
Если вы хотите только для серии "Корсары" модельки создавать, то лучше всего подойдут 3ds Max любой версии и Maya 5.0 с плагинами. Если для чего-то более продвинутого, то набираете в Google нужный запрос и получаете, к примеру, вот такой источник!.. Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Если вы хотите только для серии "Корсары" модельки создавать, то лучше всего подойдут 3ds Max любой версии и Maya 5.0 с плагинами. Если для чего-то более продвинутого, то набираете в Google нужный запрос и получаете, к примеру, вот такой источник!..
Спасибо ! Сейчас попробую Maya 5.0 с плагинами скачать .
Натолкнулся на проблемы после экспорта своей первой модели в игру (это индеец-рейдер, новый энкаунтер в джунглях). Отображается нормально, адекватно реагирует на стандартные анимации, но...
1. Случается, что не стартует диалог, хотя со стандартными моделями такого не случается. Тупо стоит и молчит. 2. Оружие не покидает напоясного локатора "suber_belt", так и висит на нем в бою. Хотя проигрывается анима доставания оружия - дерется пустой рукой. С пистолями не пробовал, тк индейцам их не раздавал, но думаю будет та же петрушка.
Может кто знает в чем подвох? Сталкивался с подобными проблемами поначалу. - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Не обращайте внимание на корявую позицию оружия на поясе, я потом поправлю позицию локаторов.
Да. И еще странная штука, ладони модели иногда слишком ярко засвечиваются, неужели экспорт модели из майки конфликтует с освещением игры? Или это всегда так? Может нужно как-то особо настраивать материал? Я пока не заморачивался, экспортил с настройками по умолчанию.
Ну я уже в ЛС написал, тут процитирую, так как уже третий человек меня спрашивает. Всем на будущее:
ЦитатаReboroda ()
Оружие не покидает напоясного локатора "suber_belt", так и висит на нем в бою. Хотя проигрывается анима доставания оружия - дерется пустой рукой. С пистолями не пробовал, тк индейцам их не раздавал, но думаю будет та же петрушка.
Нарушена последовательность привязки. Когда создаётся центральный локатор на него нужно сажать модель и потом скелет, и только после этого начинать привязывать модель к костям.
Чтоб готовую модель теперь не переделывать, открываем любого перса в Туле, удаляем тушку и грузим мешем своего персонажа, (точно так же как привязываются кирасы через Тул) если анимация man конечно, с другими такое не катит.
ЦитатаReboroda ()
И еще странная штука, ладони модели иногда слишком ярко засвечиваются,
На дефолтных моделях та же фигня, если там светлая текстура, думаю можно с настройками сглаживания поэкспериментировать, материал точно не причём. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.
NikK, понятно, спасибо. p.s. Касательно диалогов тоже разобрался. Оказалось модель ни при чем. Дело было в коде энкаунтеров.
Добавлено (22.07.2014, 11:48) --------------------------------------------- Респект мастеру NikK-у! У меня все получилось, чекрыжатся теперь как надо
Напоследок еще вопросец к уважаемому NikK-у: Вот я создал напр, свой скелет с ноля. Хотелось бы узнать наперед, имеет ли значение когда насаживать локаторы оружия на поясе и к костям рук? Их аттачить до привязки модели к новому скелету или можно после, а может вообще во время создания нулевого скелета (когда дойдет черед связки джойнтов кистей рук)?
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Конечно до. )) Перед привязкой скелет должен быть полностью готов к употреблению, иначе сабли так и будут в коленках болтаться. Вот честно не знаю чём прикол, но есть такое ощущение, что во время скининга локаторы каким-то таинственным образом привязываются к полигонам. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.