Sign in to follow this  
Followers 0
Kazui

Моделирование для Cities: Skylines

18 posts in this topic

Доброго времени суток, друзья.

 

Я новенький на этом форуме, но имею несколько модификаций в steam и пришел я не с пустыми руками.Хотелось бы поделиться методом увеличения четкости текстур без увеличения разрешения.Также хотелось бы услышать мнение мододелов знакомых с алгоритмами игры/движка (Unity)на уровне кода по компрессии текстур

 

Как известно, с момента релиза игры мододелов преследует проблема встроенной компрессии текстур asset editor-ом из-за чего модели страдают чрезмерным блуром и снижением качества текстур.

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

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

 

Собственно метод прост, всего лишь нужно сохранить текстуры в формат .DDS с опредленным алгоритмом сжатия. Я испоьзую Paint.net и приведу настройки оттуда:

 

для диффуза: "DXT1 непрозрачная однобитная альфа"

для карты нормалей: "A8R8G8B8"

 

Для других карт  .DDS не использовал так как хватает результата встроенной компрессии.

 

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

Объекты на 266 полигонов и используются карты 1024*1536pix (diff; norm; alpha; spec) -  на  этапе теста созданы на базе ветрогенераторов, но growable версии выглядит также.

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

post-7393-0-10921800-1427926673_thumb.jpg

На втором скрине показано что колеса и планка крыши на более отдаленном объекте(DDS) четче чем даже на ближнем (PNG).

post-7393-0-02269800-1427926680_thumb.jpg

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

 

P.S если кто желает развития этого метода, можете перевести на английский и вбросить на симтрополис или форумы парадокса (мой английский слабоват для таких изысков)

3

Share this post


Link to post
Share on other sites

@Kazui, хмм, интересно. Я один раз пробовал .dds-текстуры закинуть, но они не подхватились почему-то. :D Надо будет попробовать ещё раз.

 

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

0

Share this post


Link to post
Share on other sites

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

 

1. Действительно DDS обеспечивает куда лучшее качество текстуры, чем внутриигровая компрессия. Но здесь важно не забыть отключить создание MipMaps, из-за которых при отдалении камеры текстура может размыливаться:

    — После выбора способа компрессии (для diffuse можно вплоть до DXT5) рекомендую отключить MipMaps для избежания "мыла" на ближних планах и высвобождения видеопамяти;

    — При выгрузке через компрессор NVIDIA для Cities Skylines следует выбрать чекбокс Save Flipped Vertically (перевернуть по вертикали);

    — На всякий случай можно сохранить профиль для будущих текстур;

99i1pt.jpg

 

2. При подготовке текстуры рекомендую использовать Ambient Occlusion, без которого модель будет засвечиваться на любом встроенном цветовом профиле Cities Skylines.

23t30wp.jpg 2w6895k.jpg

 

3. Особенно рекомендую обратить внимание на явные цвета в текстурах: голубой, салатовый, красный, желтый. Их лучше "притушить", чтобы в игре они отображались корректно (PS: На картинке "фуксией" выделен игровой элемент соединения с метро).

 

2qdbkfn.jpg 5c0jra.jpg

 

Изображения модели без Normal Map и Specular Map: в Asset Editor и в игровом освещении.

2

Share this post


Link to post
Share on other sites

    Я могу ошибаться, но без генерации mip-map мы будем терять в производительности,а именно в  расходе видеопамяти.В своих предыдущих  моделях я использовал авто создание мип уровней с разными фильтрами.Размытие конечно же будет,но выглядит по-другому нежели сжимает игра. Также выяснилось, что использование мип уровней при тайлинге участка текстурной карты ведет к появлению швов с определенных ракурсов. 

Сейчас, пока asset editor для меня закрыт из-за косяков с пропсами, разбираюсь в dds плагине для Gimp-а. В нем можно редактировать мип уровни как слои в ФШ, втч и изменение разрешения.

 

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

 

    Глюк проявляется в виде "волн" на геометрических узорах текстур при определенных ракурсах камеры.В игре такие модели смотрятся хуже чем с компрессией

post-7393-0-64549100-1428576715_thumb.jpg     

1

Share this post


Link to post
Share on other sites

Глюк проявляется в виде "волн" на геометрических узорах текстур при определенных ракурсах камеры.В игре такие модели смотрятся хуже чем с компрессией

Это не самая удачная настройка рендера Unity по анизотропной фильтрации, выставленная разработчиками или настройками игры (проверь разные настройки фильтра, чтобы точно понять в чем причина ряби). 

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

mipmapping-egz.png

 

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

 

Мой пример:

rk0n77.jpg bg5rpj.jpg

Без MipMaps и c MipMaps — разницы нет, ряби тоже (камера удалена, здесь увеличение).

 

v7r1wi.jpg 10rsv43.jpg

Без MipMaps и c MipMaps — разницы нет, значит двиг настроен на фильтрацию, ну и зато экономия видеопамяти.

 

Другое дело, в небоскребах и крупных объектах, которые будут на дальних планах. Но для LOD-модели текстуры либо генерятся игрой, либо рисуются вручную с суффиксом "_lod_d".

 

0

Share this post


Link to post
Share on other sites

Еще предлагаю поделиться опытом постройки Specular Map для Cities Skylines. Прикладываю из моей прошлой работы шпаргалку в процентах белого для деталей:

 

2ez75tk.jpg

 

00        -        Тусклый Камень, Дерево

05        -        Камень, Шлифованное Дерево, Элементы грязи/ржавчины

09        -        Камень

 

20        -        Блестящий камень, Полированное Дерево

25        -        Тусклый металл (Чугун)

29        -        Лакированное матовое дерево

 

50        -        Тусклая Бронза

55        -        Металл (Сталь)

59        -        Мокрый камень, негладкое стекло, кафель,

 

70        -        Серебро, бликующие нешлифованные металлы

75        -        Чистый металл, грани и царапины тусклого металла (25)

79        -        Пластиковое полотно

 

90        -        Мокрый гладкий камень, толстое стекло

94        -        Металл шлифованный (Сталь), стекло

97        -        Блеск глаз

99        -        Прочный гладкий пластик

 

100      -        В Cities Skylines движок рендерит в качестве окон.

0

Share this post


Link to post
Share on other sites

2. При подготовке текстуры рекомендую использовать Ambient Occlusion, без которого модель будет засвечиваться на любом встроенном цветовом профиле Cities Skylines. 23t30wp.jpg 2w6895k.jpg

Вот ты говоришь про Ambient Occlusion. Вопрос. В 3д максе по карте я раскинул полигоны. и как я смогу сделать такую карту теней, как у тебя на фото? Ведь полигоны по оригинальной карте лижат по разному. можешь дать совет? Просто в прошлой игре я ее использовал очень часто. и мне это нравилось. Но там я используя модификатор Unwrap UVW (для того что бы раскидать полигоны по текстурам) я использовал 2 канал. но тут вроде как не поддерживает его. потому проблема встала.



2. При подготовке текстуры рекомендую использовать Ambient Occlusion, без которого модель будет засвечиваться на любом встроенном цветовом профиле Cities Skylines. 23t30wp.jpg 2w6895k.jpg
А где изменять в паинте процент белого?
0

Share this post


Link to post
Share on other sites

@Клерри, Для Ambient Occlusion в diffuse-текстуре требуется UV-развертка без нахлестов, ровно и с минимумом пустых мест разложенная в пространстве UV 0-1. Допускаются overlaps (наложения) и mirrored-shells (зеркальные шеллы). По имеющейся UV-развертке делается запекание карты lightmaps или Ambient Occluison. 

 

На примере ниже имеется отхождение от правила — наличие overlap одной группы UV-шеллов поверх другой в правой части карты. В фотошопе (или любом другом редакторе) в дальнейшем данный участок выравнивается единым светлым цветом (бордюры). В момент запекания в зависимости от возможностей рендера накладываемые UV-шеллы необходимо переместить в пространство UV -1-0.

 

33mlob5.jpg 28009xv.jpg

Что касается конкретных шагов, то в Интернете есть масса уроков и инструкций о процессе запекания карт Ambient Occlusion. Лично я работаю в Maya (благо в CS и Unity в частности из нее прямой экспорт), поэтому могу подсказать лишь по этому инструменту, в 3dsMax никогда не работал и не испытывал в том потребности.

 

Так вот в Maya для AO baking предусмотрено масса инструментов. В частности есть специальные шейдеры mib_amb_occlusion, который связывается нодой с Surface Shader и рендерится в текстуру либо в Mental Ray Baking, либо в TURTLE Render Baker с вариативными настройками запекания.

 

 

 

А где изменять в паинте процент белого?

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

0

Share this post


Link to post
Share on other sites

Огромная благодарность за разъяснения механики рендеринга и отдельно за шпаргалку по Spec картам.

 

 

 

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

Получается именно это и происходит на моем скриншоте из прошлого поста.Камера отдалена и смотрит параллельно плоскости.

 

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

 при сохранении dds фильтрация вроде относится только к мип,Sharpening не знаю для чего используется.

 внутриигровых опций у нас нет кроме вкл/выкл, конфигурационные файлы для модов и дебаггер еще даже не смотрел.(хотя вряд ли мне это что даст без знаний c# и специфики рендеринга)

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

 

Может ли быть дело в моей раскладке текстур?

post-7393-0-70079500-1428672300_thumb.jpg

0

Share this post


Link to post
Share on other sites

Соник ты когда свое метро выставишь на расхват? Я тут на текстуры смотрю и облизываюсь )))

Качество хорошее, охота в игру загрузить. А то в стиме один мододел сделал метро 2 на 2 с 4тысячами треугольников. жесть

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

0

Share this post


Link to post
Share on other sites

Похоже на то,что забыли отразить по вертикали перед сохранением.

0

Share this post


Link to post
Share on other sites
Соник ты когда свое метро выставишь на расхват? Я тут на текстуры смотрю и облизываюсь )))
Занятость высокая, метро выставлю обязательно, на нем пока экспериментирую с экспортом. За отзыв спасибо, потороплюсь.

Может ли быть дело в моей раскладке текстур?
Раскладка замечательная (хотя я бы посоветовал саму color-текстуру помягче по цветам, менее контрастную без бликов дневного света — инструмент Healing brush в фотошоп в режиме смешивания multiply), но и она здесь ни при чём. :) Попробую еще попытать экспорт, чтобы разобраться.
0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

 

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

 

 

P.S думаю тему пора переименовать на "моделирование для CSL"

2

Share this post


Link to post
Share on other sites

@Kazui, Суть в том что при создании ЛОДа создается иная основная карта. На основной модели у меня есть все нужные карты. На фото:

af66cc648578f148e7ac2d42e30bdf55.jpg

 

Но во 2 ЛОДе у меня использована только основная карта. Как вы видите( видно их внутреннее содержание) они разные. Так как ЛОД здание я генерировал с основного с помощью упрощенной проекции. что бы на дальних расстояних сохранить хорошее качество изображения.

38d72a29249d428e6cb6ced5eeda9cbd.jpg

Хоть убейте но сама игра не хочет автоматически сгенерировать цветовую карту с основной модели. может это глюк я не знаю. А может потому что сами Diffuse карты разные.

Не вижу сложности сделать цветовую карту размером 128/128 в 2кб и не много изменить название. да и не думаю что игра от этого начнет сильно проседать или мы сожрем лишние мегабайты ))))

 

 

 

 

@Sonik, А вот к тебе у меня очень интересный вопрос. Я так понял по комментариям к станции метро ты создал икону в меню интерфейса, вместо обычной какой то фигни.

Можно по подробнее как это делается. Там надо ли с бубном бегать или же обойдется обычной картинкой в n-колличество пикселей и в конце с суффиксом "_thumb" ?

Просто тоже хотелось бы что бы свои здания имелу рисунок в панели а не одинаковую со всеми фигню ).

0

Share this post


Link to post
Share on other sites

@Клерри, но здания ж и так имеют иконки обычно. Они подхватываются при импорте .fbx-файла

0

Share this post


Link to post
Share on other sites
А вот к тебе у меня очень интересный вопрос. Я так понял по комментариям к станции метро ты создал икону в меню интерфейса, вместо обычной какой то фигни. Можно по подробнее как это делается. Там надо ли с бубном бегать или же обойдется обычной картинкой в n-колличество пикселей и в конце с суффиксом "_thumb" ? Просто тоже хотелось бы что бы свои здания имелу рисунок в панели а не одинаковую со всеми фигню ).

Вообще, как отметил Alex иконки создаются автоматически на основе импортируемой 3D-модели. Однако если появляются белые кирпичи или вы хотите кастомную иконку, то делается это просто:

 

1. Создаете изображение модели 109x100 пикселей с поворотом камеры на 45 градусов по горизонтали и 45 градусов по вертикали с прозрачным фоном

2. Сохраняем в формате PNG (с прозрачностью) в папке Import, где вы разместили импортируемую модель ("C:\Users\Имя_Пользователя\AppData\Local\Colossal Order\Cities_Skylines\Addons\Import"), с именем вашей модели .fbx и суффиксом "_thumb.png"

 

Пример: имя модели "Subway_Entrance1.fbx", тогда имя thumb-иконки будет: "Subway_Entrance1_thumb.png"

21d38ro.jpg

 

 

Внимание: кастомная thumb-иконка подхватывается только при импорте модели во время создания asset. Если вы загрузите модель из "Default from Template", то иконка будет создана движком вместо выбора вашей.

 

10hkjtl.jpg

1

Share this post


Link to post
Share on other sites

Возможно, я слишком поздно пишу, но mip-уровни нужны (и придумали их не просто так). Требуется на 1/3 больше памяти (1/4 + 1/16 + 1/64... = 1/3), но это должно дать прирост к производительности. При рисовании далеко расположенного объекта игра будет брать цвета из маленькой версии текстуры, читая близко расположенные в памяти данные, что хорошо для кэша. Шум вдали иначе не убрать, повышение настроек анизотропной фильтрации - это костыль: если читать из "шумной" текстуры по 16-32 значения на пиксель, в сумме получится что-то усреднённое, но вырастет нагрузка на видеокарту.

В скриншоте программы из третьего сообщения есть кнопочка "mip map filtering". По-идее, можно сделать так, чтобы при удалении использовались более маленькие уровни, но при максимальном приближении текстура не мылилась и рисовалась чёткими квадратиками (как в minecraft).

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.