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

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Мультипорт - BuildGDX

Тема в разделе "Мастерская", создана пользователем M210, 16 мар 2019.

  1. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    Ладно, сам разобрался. Распаковал текстуры ещё раз, но уже через BAFEd v2.20.
    Там названия сохраняются. Однако текстуры с прозрачностью как-то странно сохраняются. Вроде и выглядят нормально, но если прогнать их через увеличивающие нейросети, то в том месте, где начинается прозрачность по всему контуру текстуры появляется кромка того самого цвета (какой-то оттенок зелёного), которым оригинальные текстуры изображают прозрачность.
    При этом если вытаскивать те же текстуры из art-файлов через Slade и пропускать их через ту же нейросеть, зелёных кромок не появляется.
    Вывод - BAFEd v2.20 как-то косячно подменяет зелёный цвет на прозрачность и в файле где-то сохраняется инфа о зелёном цвете на кромке. Хотя её и не видно на глаз в исходном файле. Странно всё это. Надоело удалять вручную эту кривую зелёную кромку, продолжу распаковывать текстуры через Slade. А BAFEd v2.20 никуда не годится. Разве что для просмотра номеров текстур.
     
    Yuriy_X нравится это.
  2. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Это называется линейная интерполяция, сохраняй файл в 32битном цвете с прозрачночностью
     
  3. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    А в этом порте есть консольные команды для загрузки определённого уровня?
    В том же Powerlave согласно этой странице -=CHE@TER=- online :: PowerSlave vs Exhumed
    был код HOLLY, который позволял вводить доп. коды, в том числе код перехода на разные уровни.
    В BuildGDX этого кода нет. А коды от других игр на этой движке видимо работают только при запуске других игр. Пока тестировал свой пак текстур, приходилось запускать определённые уровни чтобы проверить их отображение. А без кодов на выбор карты пришлось проходить игру с начала и до конца и делать 100500 файлов сохранения.
    Хорошо хоть есть функция сохранения в любом месте, а не одни контрольные точки.
     
    Последнее редактирование: 28 дек 2020
  4. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    Не знаю интересно ли кому, но выпустил свой upscale pack для порта BuildGDX (для игры Powerslave)
    Улучшил почти все текстуры в игре. На мой взгляд получилось заметно лучше того набора текстур, что выпускали ранее на Moddb. Тем более что я заморочился и нашёл исходники некоторых текстур в реальной жизни) Игра то про Египет и там часть текстур -это изображения барельфев из реальной жизни. Пересмотрел пару тысяч фотографий разных египетских барельефов в поисковиках по картинкам и нашёл некоторые места. Хотя ракурс и освещение были не те, пришлось поторчать в фотошопе, но много чего удалось сделать так, что чёткость теперь лучше даже чем у нейросетей. Хотя удалось найти далеко не все исходники. В некоторых местах получилось так себе. Но всё равно заметно лучше оригинальных текстур ничтожного разрешения и не бросается в глаза. Тем более что таких текстур меньшинство. А большинство получились хорошо.

    Alternate 4x upscale pack for BuildGDX addon - Powerslave
    вот мой.
    В будущем добавлю оставшиеся текстуры и возможно монстров.
    Пока что только текстуры всего и везде и оружие + несколько подбираемых предметов.

    ai.postimg.cc_CnwZXDPX_scr_map1_0000.png ai.postimg.cc_V5wbJQfg_scr_map1_0001.png
     
    Последнее редактирование: 28 дек 2020
    real vision, MrFlibble и Yuriy_X нравится это.
  5. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Впечатляет! А текстуры, у которых не нашлись исходники, как обрабатывались? В игре ведь полно всего от руки рисовалось (в том числе двери, интерьер кораблей пришельцев и пр.).
     
  6. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Иногда полезно вводить в консоли команду help, она должна вывести команду changemap или changelevel, не помню точно.
     
    Eyefinity нравится это.
  7. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    Нейросетями и обрабатывалось. Распаковал все 2500 с чем-то текстур и спрайтов. Затем через нейросеть Esrgan обработал.
    Использовал 10 разных моделей увеличения (для тех кто не в курсе - модель увеличения - это что-то вроде результатов обучения нейросети, выглядит как один большой файл с алгоритмом или что-то такое) и некоторые из них в разных комбинациях. Для каждой текстуры получалось где-то 5-6 разных увеличенных версий.
    Т.е. на выходе было где-то 2500*6=15 000 текстур. Какие-то были лучше в одних деталях, какие-то в других.
    Сравнивал на глаз каждую получившуюся текстуру друг с другом и выбирал для каждой самые лучшие версии. Многие текстуры приходилось вручную переделывать в фотошопе. Т.к. идеальных версий не было. Вырезал определённые элементы из одной версии текстуры, переносил на другую в фотошопе. Где-то пришлось стирать артефакты, где-то дорисовать несколько пикселей. У меня после этой возни несколько гигов картинок в компе. Многие текстуры получались со всякими шумами, которые приходилось удалять ещё и через доп. софт.
    Особо много проблем было с текстурами с прозрачностью. Нейросети после увеличения добавляют кромку цвета фона или если фона нет, то белую. Удалять пришлось вручную по пикселю. Т.к. там много мест толщиной в пару пикселей. Все спрайты оружия и предметов вырезал руками. Некоторые виды оружия вообще состоят из кусков от разных вариантов спрайта. У автомат, например, рукоятка из одного алгоритма увеличения, а сошки от другого. Задняя часть от третьего) И результат потом ещё и дополнительно обработан.
    На создание этого пака текстур ушёл примерно месяц до 8 часов работы в фотошопе почти каждый день. Ещё дня три торчал в гугле и яндексе в поиске по картинкам. Я за всю жизнь столько фоток Египта не видел, сколько увидел за эти дни) Реально больше 3000 фотографий просмотрел.
    Начиная от всяких статей о путешествиях людей по Египту с фотками, заканчивая сервисами стоковых фото с поиском по теме древний Египет.
    Сложнее всего было найти куски текстур с людьми с определённым положением рук и в определённом головном уборе. Также неделю искал фотку с определённым фрагментом египетских иероглифов. Найти было почти нереально, т.к. поисковики не умеют искать небольшой фрагмент, когда в интернете есть лишь целые фотки, из которых эти фрагменты вырезаны.

    Для сравнения
    1) Оригинальная текстура из игры
    2) Она же, слегка увеличена, чтобы вы поняли качество исходника
    3) Результат работы нейросети
    4) Доработка в фотошопе с наложением фрагментов от реальной фотки.
    ai.postimg.cc_0KYNYDSs_4.jpg

    ai.postimg.cc_3ykJLPG9_rea.jpg
    найденный в инете исходник из реальной жизни

    Второй пример

    ai.postimg.cc_VJKZdBsG_2.jpg
    1) Оригинальная текстура из игры
    2) Она же, слегка увеличена, чтобы вы поняли качество исходника
    3) Результат работы нейросети
    4) Доработка в фотошопе с наложением фрагментов от реальной фотки.

    Оригинал
    ai.postimg.cc_hhD46zVf_9.jpg
    (фрагмент слева сверху)

    Пример 3
    ai.postimg.cc_HjqZj53L_3.jpg

    1) Оригинальная текстура из игры
    2) Она же, слегка увеличена, чтобы вы поняли качество исходника
    3) Результат работы нейросети
    4) Доработка в спец. софте (убирание шумов и артефактов)

    Пример 4
    ai.postimg.cc_tn3hs1C1_4.jpg
    1) Оригинальная текстура из игры
    2) Она же, слегка увеличена, чтобы вы поняли качество исходника
    3) Результат работы нейросети
    4) Доработка в фотошопе с наложением фрагментов от реальной фотки.

    ai.postimg.cc_XpxCt6Z0_la_misteriosa_pintura_egipcia_151_studio.png
    фото из реальной жизни

    Пример 5

    ai.postimg.cc_MX3cYbgW_5.jpg
    1) Оригинальная текстура из игры
    2) Она же, слегка увеличена, чтобы вы поняли качество исходника
    3) Результат работы нейросети
    4) Доработка в фотошопе с наложением фрагментов от реальной фотки.

    ai.postimg.cc_McYHfyyJ_01.jpg
    фото из реальной жизни

    Что касается текстур дверей - с ними справились нейросети. Пришлось лишь немного доработать над убиранием шумов. Также большому количеству текстур пришлось возвращать или добавлять бесшовность. Т.е. чтобы они стыковались сами с собой со всех сторон. Оригинальные текстуры такие мелкие и пиксельные, что там часто не видно что они вообще никак не стыкуются друг с другом. А после увеличения появлялись стыки. Я после пары дней мучений придумал способ сохранения бесшовности. Брал оригинальную текстуру, копировал ещё 9 раз. Т.е. делал куб 3*3
    из одной и той же текстуры. Сохранял под другим названием. Потом увеличивал через нейросети уже этот большой кусок. После увеличения создавал маску выделения центрального куска текстуры и сохранял его. Получалась текстура с сохранением бесшовности. Пока додумался до этого, некоторые текстуры переделывал вручную по три раза. Некоторые текстуры не были бесшовны изначально вообще. Особенно текстуры земли. Даже в оригинальной игре они выглядели хреново и был заметен шов. Там я сделал некоторые текстуры бесшовными вручную в фотошопе. В результате местами игра даже стала выглядеть лучше. Хотя разрабы игры вообще не парились со стыковкой текстур. Поэтому в игре во многих местах всё равно видны стыки. Не потому что текстуры плохие, а потому что в игре многие стены состоят из 3-4 фрагментов, на каждый из которых нанесена своя копия текстуры со своим смещением по горизонтали. Игра в 1996 году с оригинальным разрешением 640x480 в досе была пиксельной и там никто не замечал этой фигни. А с нормальными текстурами стало очень заметно.

    + картинка-сравнение, что я выложил на Moddb
    ai.postimg.cc_06dg8n7D_test.jpg
     
    Последнее редактирование: 9 янв 2021
    warezeater, Grongy, real vision и ещё 1-му нравится это.
  8. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Объём проделанной работы правда очень впечатляет!
    Были ли какие-то модели, которые стабильно давали хороший результат? Из недавних очень интересные две модели ThiefGold.

    "в разных комбинациях" имеется в виду интерполяция через net_interp.py?

    Использовалась ли какая-либо предварительная обработка исходных изображений перед увеличением?
     
  9. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    Что касается комбинаций, да это была интерполяция. Использовал 75 на 25, 50 на 50, 30 на 70.
    !python main.py input/ output/ --device cuda --model models/4x_FatalPixels_340000_G.pth:25:models/4x_fatal_Anime_500000_G.pth:75

    Это google Colab, если что.

    Что касается результатов, я уже выше писал, что определённая часть текстур - это смесь нескольких версий одной текстуры от разных моделей, у которых я в фотошопе вырезал определённые фрагменты и переносил на другие. У всех моделей свои косяки. Одна модель добавляет зелёные артефакты, другая коричневую окантовку, третья мультяшный эффект, четвёрная теряет мелкие детали, пятая добавляет крупное зерно, четвёртая мелкие надписи превращает в кашу. Пятая размывает текстуры. Шестая текстуры с прозрачностью делает ужасными на границах, т.к. все наклонные линии меняет на прямые углы. Тупо квадратные стороны получаются везде. Ещё одна просто плохой результат выдаёт. Хуже чем у остальных. У одних моделей хорошо получаются сложные текстуры, у других спрайты с прозрачными местами.

    Про обработку... ну я пробовал увеличивать и сохраняя оригинальный зелёный фон и потом вырезать в фотошопе фон с выделением цветового диапазона, но кромка чаще всего оставалась. Также удалял фон вообще и увеличивал спрайты без фона, с прозрачностью. Там появлялась белая кромка. Её легче вычищать, чем зелёную. Использовал paint.net - там волшебная палочка с чувствительностью 50% удаляет все вокруг спрайта оставляя исключительно белую кромку, над которой я и возился в фотошопе. А волшебная палочка фотошопа и выделение цветового диапазона с любой чувствительностью оставляет миллион мелких пикселей по краям, которые нормально в фотошопе не удалить за вменяемое время. А белую кромку от оружия удалял вручную по пикселям. Т.к. спрайтов оружия мало и там не так много работы, как с персонажами. У меня уже есть много неплохо получившийся спрайтов для всех врагов, но как удалять из них кромку нормально я пока не придумал. Слишком много мест шириной в 1-2 пикселя, которые ни одним автоматизированным алгоритмом фотошопа нормально не удалить.
    Очевидно что надо как-то подготавливать спрайты. Я пока что пытаюсь придумать способ. Как придумаю, добавлю и спрайты монстров.

    Что касается моделей увеличения - у меня одни из лучших результатов выдавали 4x_FArtDIV3_UltraMix4 и 4x_BigFArt_Detail_300000_G.
    Некоторые спрайты нормально выдавал 4x_Fatality_MKII_90000_G. А модель 4x_Lady0101_v3_340000 выдала пару нормальных картинок между уровнями, а спрайты портит зелёными артефактами. Все модели связанные с мангой - обычно делают спрайты мультяшными. На обычных текстурах особо не проверял.
    reboutblend и reboutcx - вообще выдавали одни из худших результатов. Всякие spongebob и короли лвы, тоже.
    Самые лучшие результаты можно получить от интерполяции и то не всегда. Ещё есть сайт letsenhance.io - там тоже свои нейросети.
    Вот он выдаёт для текстур особо хорошие результаты, но на спрайтах теряет мелкие детали и добавляет сильные шумы. А на краях текстур дырявит их. Получаются ряды из кубиков 2x2 пикселя с частичной прозрачностью на расстоянии примерно 5 пикселей от края. А сами края получались кривыми и тоже частично прозрачными. Эти результаты пришлось долго исправлять в фотошопе. И дыры заделывать и шумы убирать в стороннем софте. Gigapixel studio неплохо убирает шумы при правильном подборе настроек. Кстати у меня там ещё десяток текстур и от Gigapixel ai, но эта программа обычно в 80% случаев выдавала результаты хуже, чем у нейросетей, зато идеально сохраняет прозрачность. без кромок.

    Вообще не спрашивайте у меня про нейросети. Я сам особо ещё ничего не понял. Только месяц назад начал изучать это всё.

    Что-то тут тема порта Buildgdx превращается в обсуждение нейросетей...
    ========



    Вот пример одного из спрайтов врагов, которые в будущем появятся у меня.
    ai.postimg.cc_PC2Jtjxm_3072_photos_v2_x4.png
     
    Последнее редактирование: 1 янв 2021
    MrFlibble нравится это.
  10. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Я придумал довольно неплохой рабочий способ делать маску для спрайтов с использованием только свободного ПО (никаких фотошопов).

    Сам спрайт увеличивается на чёрном фоне с помощью выбранной модели. Отдельно увеличивается маска: на тёмно-синем фоне версия того же спрайта, конвертированная в палитру из оттенков серого с помощью программы mtPaint.
    ai.imgur.com_szNlu2l.png ai.imgur.com_WHLOFDT.png

    Для теста я использовал модель Lollypop отсюда, она даёт хорошие результаты по краям:
    ai.imgur.com_095MyR7.png
    Затем увеличенная маска обрабатывается в mtPaint с помощю фильтра "размывание Kuwahara-Nagao" с радиусом 2 и конвертируется в восьмибитную палитру, полученную методом "точное соответствие" у исходного изображения маски:
    ai.imgur.com_8BFvfe8.png
    Открываем GIMP и с помощью Shift+O выделяем только синий фон, который копируется на увеличенное изображение собственно спрайта. Это изображение сохраняется, затем обрабатывается фильтром Kuwahara-Nagao так же, как маска (чтобы убрать остатки чёрных пикселов по краям) и конвертируется в 8 бит:
    ai.imgur.com_Gdy5aI4.png
    Открываем эту штуку в GIMP и снова выделяем синий фон, но теперь увеличиваем выделение на один пиксел. Копируем поверх увеличенного спрайта на чёрном фоне.

    Затем в GIMP добавляем по вкусу альфа-канал и убираем маску:
    ai.imgur.com_Ky6odpn.png
    Метод не идеален, но вполне работоспособен.
     
    Eyefinity нравится это.
  11. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    В этом mtpaint такой странный интерфейс...
    Нашёл там пункт меню Эффекты-Размывание Кувахары-Нагао. Поставил там 2.
    И галочку "Защитить детали", убрал галочку "Гамма коррекция".
    Получается так
    ai.postimg.cc_Hcx6mVY8_ts3.jpg
    слева - результат такого "размывания", справа то, что было изначально после увеличения нейросетями. Часть артефактов на границе остаётся.
    Проверил тоже самое на твоём примере, тоже после этого остаётся гораздо больше артефактов, чем на твоей картинке.

    Как перегнать в 8-битную палитру не понял. Не нашёл в mtpaint такого пункта ни в одном меню. Видимо это надо делать в других программах.
    Не понял ничего после действия с применением размытия. Где это "точное соответствие" выбирается и есть ли в mtpaint возможность перегнать в 8-битный режим... Просмотрел все меню в этой программе и ничего такого нет нигде. Может у тебя какая-то другая версия программы... Я проверял в версии 3.50

    Надо взять оригинальную картинку с синим фоном и черно-белым изображением, создать для неё палитру каким-то образом, потом открыть увеличенную версию этой картинки с применением размывания и применить к ней заранее сохранённую палитру, выбрав какой-то режим "точное соответствие"? Или нет? Как-то всё слишком запутано. Не говоря уже о том, что в этом mtpaint нет ничего такого.
    Какой-то совсем уж запутанный способ.
     
    Последнее редактирование: 3 янв 2021
  12. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Не надо было выставлять "защитить детали".

    "Изображение" -> "Преобразовать в индексированное...", дальше выбираем "точное соответствие".

    Сейчас поясню поподробнее.

    Сначала мы берём исходный спрайт/набор спрайтов. Я тупо собираю такую картинку в MSPaint.

    Потом эти изображения перегоняются в 8 бит в mtPaint так, как я указал выше.

    Чтобы конвертировать уже апскейл после размывания, нужно сделать так:

    Открыть апскейл в mtPaint и размыть Kuwahara Nagao. Радиус можно 1 или 2, здесь я взял 2, т.к. на исходных спрайтах по краям много недочищеных пикселов. "Защитить детали" нам тут не нужно совсем. Я не упомянул, т.к. по умолчанию эта опция выключена.

    Потом:

    "Палитра" -> "Загрузить", дальше выбираем исходное изображение, которое мы конвертировали в 8 бит в предыдущем шаге. Палитра загрузилась.

    Теперь снова "Изображение" -> "Преобразовать в индексированное...", выбираем "текущая палитра", ниже Dither "Нет", потом жмём "Настройки" и в этой вкладке, где "Цветовое пространство", ставим RGB -- я заметил, так программа точнее подбирает соответствия цветов, чем с вариантом по умолчанию.
     
    Последнее редактирование: 3 янв 2021
  13. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    ai.postimg.cc_jLymR7s9_34.jpg ai.postimg.cc_xXfwg3HQ_35.jpg

    Странно что пункт меню Точное соответствие есть только когда открываешь исходные картинки до увеличения.

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

    В связи с чем этот этап
    не выполним

    Пример
    1) Исходник с чёрным фоном
    ai.postimg.cc_GHFQ9043_1526.png
    2) Исходник сделанный чёрно-белым и добавлением после этого синего фона
    ai.postimg.cc_7b71QvM1_1526.png
    3) Картинка номер 1, увеличенная выбранной мной моделью нейросети
    ai.postimg.cc_hfcmyXGg_1526.png
    4) Картинка номер 2 после увеличения нейросетью с применением модели Lollypop
    ai.postimg.cc_649dvq29_1526.png

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

    Получается у нас куча версий одной картики.
    1) Оригинальный спрайт без фона, вытащенный из игры
    2) Он же с залитым чёрным цветом фоном
    3) Он же чёрно-белый с синий фоном
    4) Увеличенная нейросетями версия с чёрным фоном
    5) Увеличенная нейросетями версия с синим фоном
    6) Увеличенная синяя версия с размытием в нужных местах и преобразованием в нужную палитру.
    7) Увеличенная картинка из пункта 4 с наложением синего фона с картинки из пункта 6.
    8)Версия увеличенной цветной картинки с синим фоном из пункта 7 с ещё одним размытием
    9) Финальный результат

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

    Пока что получилась какая-то фигня со множеством синих пикселей по краям. Это придётся чистить вручную.
    ai.postimg.cc_SJpYvJDV_result.png
     
    Последнее редактирование: 4 янв 2021
  14. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Там должно быть "Текущая палитра". Это я по ошибке второй раз написал "точное соответствие". Исправлено.

    Точное соответствие делает палитру из ровно стольких цветов, сколько использует картинка, если их <256. На втором и последующих этапах конверсия в 8-битную палитру нужна только затем, чтобы у нас была "чистая" маска с относительно ровными краями, которую GIMP может без ошибок выделить по Shift+O.

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

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    Либо я что-то неправильно понял, либо метод подходит не всегда.
    Т.к. результат из сообщения выше выглядит так себе для затраченного времени и там всё надо исправлять руками.
    Специально брал пример с тонкими линиями вроде нижней части посоха и свисающего бинта мумии.
     
    Последнее редактирование: 3 янв 2021
  16. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Вообще метод лучше всего работает, если для основного изображения и маски использовать либо одну и ту же модель, либо модели, которые дают по контурам сходные результаты.

    Однако я обработал твой (ничего, что на "ты"?) пример и получил вот что:
    1526 (1)-mask-b.png
    Практически никаких синих размытий по краям.

    Повторяю по шагам, что я сделал:
    • синюю маску размыл KN (радиус 2 пиксела), конвертировал в исходные цвета изображения
      test2-g.png
    • открыл в GIMP размытую маску и увеличенный спрайт на чёрном фоне, выделил и скопировал только синий фон
    • сохранил увеличенный спрайт с синим фоном в отдельное изображение, размыл KN (2 пиксела), конвертировал в исходные цвета, но уже не маски, а цветного изображения на синем фоне
      test2-m.png
    • открыл в GIMP увеличенный спрайт на чёрном фоне и полученное изображение из предыдущего шага, выделил в нём синий фон, увеличил выделение на 1 пиксел, скопировал и наложил на увеличенный спрайт
    • перекрасил синий фон в итоговом результате наложения в чёрный, чтобы было видно, есть ли синее размытие по краям
    Кстати, для увеличения индивидуальных спрайтов крайне желательно добавлять по краям кромку в один пиксел в исходном изображении, чтобы границы спрайта не касались границ изображения.
    Если позволяют вычислительные мощности ПК, логично собрать все спрайты/кадры анимации в одно изображение и обрабатывать его.
     
  17. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28
    Если сохранить и приблизить, то синие пиксели на кромке легко находятся. В твоей версии из заметно меньше, чем вышло у меня, однако они всё равно есть.
    ai.postimg.cc_9rcC74dq_sinie.jpg


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

    Сверх запутанная инструкция, где множество неочевидных деталей надо угадывать.
    Я взял увеличенную черно-белую маску на синем фоне. Размыл её, загрузил для неё палитру из мелкой версии (которая была ранее переделана в индексированные цвета с точным соответствием количества цветов). Сохранил это как картинка 2.
    Затем взял эту картинку 2, открыл в gimp вместе с увеличенной картинкой с чёрным фоном. Вырезал синий фон из картинки 2 и наложил на чёрную увеличенную картинку. Получил картинку 3.
    Взял картинку 3, размыл её на 2 пикселя и тут надо якобы конвертировать в исходные цвета цветного изображения с синим фоном. Откуда оно берётся? Картинка 2 - это чёрно-белая увеличенная с размытием, из которой мы брали синий фон. Картинка 3 - это то, то у нас открыто на этом этапе. Это и есть увеличенный цветной спрайт с синим фоном. Но он только что размыт и ещё не сохранён. Или надо взять ещё и оригинальный мелкий цветной спрайт и к нему тоже добавить синий фон и потом из него брать исходные цвета? Так это никак не влияет на результат.

    Если пропускать этот странный этап, то как раз и остаётся куча синих пикселей.
    ai.postimg.cc_5jLkMnFw_pixel.jpg

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

    А вот об этом надо было говорить с самого начала. Я кстати когда пытался придумать свой способ тоже задумывался о том, что раз при увеличении возникают проблемы с кромкой, которую потом проще удалить, то лучше добавить эту кромку до увеличения и потом просто удалить её же вместе с фоном, оставив внутреннюю часть.
    Но зачем тогда вся эта возня с размытием фона и добавлением второй версии картинки с синим цветом, когда можно просто добавив дополнительную кромку до увеличения с любым фоном цвета, отличного от цвета кромки - взять инструмент типа волшебной палочки и выделить фон с артефактами до границы кромки? Эта кромка как раз и будет идеально разграничивать цвет фона и внутренности спрайта. А потом просто выделить фон и расширить выделение прихватив кромку. Хотят тут возникает большая проблема - размер самих спрайтов. Там чаще всего со всех сторон несколько пикселей упираются в границу самой картинки. Надо будет добавлять по 1 пикселю пустоты с каждой стороны и потом уже рисовать кромку. А потом после увеличения и удаления кромки возвращать оригинальный размер и центровку спрайта. Это ещё больше возни и лишней работы, особенно когда у тебя почти 500 спрайтов.
    А ещё на спрайтах персонажей полно мест, где расстояние между опущенной рукой и ногой не более 1 пикселя и обвести одновременно и руку и ногу не получится. Выйдет 1 пиксель на 2 части тела и при финальном увеличении будет ещё сложнее вырезать.
    Не говоря уже о необходимости выбрать подходящий цвет обводки. Чёрный не подойдёт, т.к. части спрайтов часто его содержат и при увеличении часть кромки может восприниматься как часть объекта и нейросеть её превратит не ясно во что.
    Короче говоря, добавление кромки подходит только для определённых спрайтов без мелких деталей и лишь усложняет всё.
     
    Последнее редактирование: 4 янв 2021
  18. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Вот так лучше?
    1526 (1)-p-t.png
    Тут я для маски использовал фиолетовый фон, чтобы было меньше пересечений с палитрой самого спрайта (у мумии набалдашник лазуритовый на посохе, поэтому есть оттенки синего). Второе размывание делалось с радиусом 1 пиксел.

    Я чётко прописал все шаги. Нужно ещё подробнее?

    Всё правильно.

    Да, палитра для этого шага берётся из изображения, которое не увеличивалось. Это сбило с толку?

    Что значит "не влияет на результат"?

    Я ещё раз повторяю: "возня" с преобразованием в 8-битную палитру нужна, чтобы у маски был ровный край и её правильно скопировал GIMP.

    Мы когда скопировали синий фон на сырой апскейл и получили картинку 3, у нас цветной спрайт на синем фоне. Вот для него и нужна палитра цветного спрайта на синем фоне.

    Размывание Кувахара-Нагао нужно затем, чтобы увеличить контрастность по краям спрайта и удалить полутона. Сначала это делается на маске, а второй раз -- чтобы убрать лишние полутона по стыку контуров увеличенного спрайта и маски. Что здесь непонятного?

    Если пропустить любой этап, искомого результата не будет. Разве не очевидно?

    Я имел в виду, по краям прямоугольника, в котором находится спрайт. Вот так:
    test2b-border.png
    Чтобы край спрайта не касался края "холста" изображения. Иначе там будут артефакты.
     
  19. Eyefinity

    Eyefinity

    Регистрация:
    20 июл 2011
    Сообщения:
    28

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

    Я попробовал пропустить этот шаг и сохранил результат. Потом взял неувеличенную картинку с чёрным фоном и заменил фон на такой же синий. И вот из него на указанном тобой этапе взял палитру. Потом уже выполнял прочие действия. И финальный результат на 100% совпал с результатом с пропуском этого шага. 100 оставшихся синих пикселей из варианта с пропуском шага остались на том же месте и выглядели так же.

    Что касается способа как такового- он всё же более менее действенен, но линии шириной в 1 пиксель после увеличения и применения почти любого способа обрезания кромок получаются так себе. Там появляются переходы одного цвета в другой или частичная прозрачность, что после попыток устранения кромок делает тонкие линии ещё тоньше и они теряют детали и часто цвет.
    Хотя учитывая что монстр в игре двигается и каждый отдельный кадр в игре можно увидеть лишь сделав скриншот, скорее всего такие мелочи будут не особо заметны. Разве что игрок будет использовать разрешение 4к без фильтрации текстур. Тогда эти мелкие пиксели по краям будут выглядеть ужасно.
     
    Последнее редактирование: 4 янв 2021
  20. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.334
    Стоп, нет. Увеличивается цветное с чёрным фоном и серое с синим фоном (маска). А цветное с синим фоном -- это исходное изображение, из которого делаются два других (потому что с чёрным фоном использовать по умолчанию нельзя: у некоторых спрайтов есть чёрные пикселы), а потом оно используется для палитры.

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