Цикл 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", надеюсь, будет продолжен...
NikK, да?! Интересно... Спасибо! - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
А вот собственно и видос с получившимися моделями. Извиняюсь заранее за плохое качество ролика, он был раз 5 пережат, тк я нуб в этом деле. Не на пятерку прямо скажу они получились, и дело больше в некоторой корявости привязки, хотя и старался. Привязывал я это дело в одной позе, а уже потом пытался позиционировать до экспортной (с опущенными руками). Понятное дело, что точного совпадения не получилось. Другое дело, если бы у меня был полный набор анимаций, как у разрабов, тогда все было бы "без сучка", как говорится. Но увы, чего нет - того нет.
Reboroda, Что-то у меня заголовки над спойлерами не отображаются, там шрифт какой-то особенный?
ЦитатаReboroda ()
Привязывал я это дело в одной позе, а уже потом пытался позиционировать до экспортной
Так в скелете же есть экспортная поза, просто перед выставлением в позу "Т" нужно было поставить ключ на таймлайне и можно свободно перемещаться по линейке.
ЦитатаReboroda ()
Я NikK-у бы 3D памятник поставил за старания, вот у кого усидчивость наверное!..
Порой мне кажется, что я душевно болен, иначе как объяснить способность выполнять монотонную работу часами На самом деле у меня на привязку уходит 7-9 часов. Была бы анимация в Майя могло быть практически вдвое быстрее, не нужно каждый раз выгружать и проверять как персонаж работает.
ЦитатаReboroda ()
Само собой выдам их только для сурьезного и известного аддона,
Тогда мне или Мету, или мне и Мету, )) не знаю на сколько мы серьёзны, но других уже вовсе нет. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.
Что-то у меня заголовки над спойлерами не отображаются, там шрифт какой-то особенный?
Да, был, сейчас изменил.
ЦитатаNikK ()
Так в скелете же есть экспортная поза, просто перед выставлением в позу "Т" нужно было поставить ключ на таймлайне и можно свободно перемещаться по линейке.
Теперь я понял, что сделал наоборот . Как всегда вобщем. Опыт - шын осыбок трудный.
ЦитатаNikK ()
Была бы анимация в Майя могло быть практически вдвое быстрее, не нужно каждый раз выгружать и проверять как персонаж работает.
Абсолютно плюсую!
ЦитатаNikK ()
Тогда мне или Мету, или мне и Мету, )) не знаю на сколько мы серьёзны, но других уже вовсе нет.
Не вопрос. Сейчас залью архив.
Добавлено (24.07.2014, 14:47) --------------------------------------------- NikK, готово, ссылка в ЛС.
Mett, если нужны - пиши в ЛС. Имена индейцев. --------------------------------------------- Да, вот еще прикола ради гуглил имена индейцев разных племен. Прикола ради немного и сам по импровизировал. Поржал от души.))))))))) Вот что получилось: Имена ирокезов - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
Сообщение отредактировал Reboroda - Четверг, 24.07.2014, 15:06
имена зачётные, вот бы к ним ещё транскрипции, как они звучат на родном языка. Какой нибудь Улюлюк Попликеч, может и нормально бы звучало. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.
Джин-Бейн, возможны косяки: щели под подбородком, как например у Тичунгиту из КС, когда он голову запрокидывает, да и видно будет место стыка головы с шеей. Но если не принципиально качество - почему-бы и нет. Не Скайрим же. - Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
счас увлекся улучшением графона на Шторме оказывается в Шторме есть поддержка спекуляр мапа для это нужно gm модель экспортировать с материалом типа phong и наложить на модель технику рендера которая поддерживает включенный спекуляр у себя я накладывал технику DLightModel с дописанной туда строкой
Добавлено (28.09.2014, 00:02) --------------------------------------------- Mett, опа... А на модельки персов, интересно, можно ли наложить спекуляр-текстурку? Чтоб, например, кирасы поблескивали металлом. Сомневаюсь канеш, но хорошо бы попробовать...
- Бизнесмен убъет в вас зрителя, но ты... Билли... Неужели тебе это могло понравиться? - Да я вообще только одним глазком...
А на модельки персов, интересно, можно ли наложить спекуляр-текстурку? Чтоб, например, кирасы поблескивали металлом.
можно, если дописать сами техники, которые наложены на персов через двигло ЕМНИП эти техники лежат в modules\techniques\animations.sha там их 4 штуки должно быть Что толку, если не можешь сделать мир лучше.
korsary4, фишка в том, что можно делать с альфой, но она работать не будет в игре, во вьювере все показывает с альфой, а в игре нет сейчас над тенями парюсь, чтоб при наложение цвет не смешивался и не становился более черным, и да, уже тени к альфе на персах адаптировал, но тут одно за другое цепляется, не получается пока сделать чтоб все идеально было
Цитата
чтоб при наложение цвет не смешивался и не становился более черным
Вот тогда Ваня что-то в таком духе вроде и говорил.
У нас там модель типа <цензура> такое было, ну вроде бы, что-то типа альфы у нее есть..в общем, надо Никка сюда зазывать, я в этом вообще далек) А автор модели уже не в активе у нас. Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
Без понятия, я его ни разу не видел Пытался альфой сделать перья у Чани по типу испанского офицера в паке 1.3.2, думал секрет кроется в дополнительном мэше, но у меня ничего не вышло. Цитатами пользуются те, кто не в состоянии формулировать собственные мысли.