М.Двач / Gamedev

решил экспортнуть текстуры из игры titan quest. игра хранит текстуры в хуй пойми каком формате, это 18 авг, 10:54 1048292 В конец треда | Веб

112 Кб, 256x256107 Кб, 256x256126 Кб, 425x430122 Кб, 588x532

решил экспортнуть текстуры из игры titan quest. игра хранит текстуры в хуй пойми каком формате, это вроде DDS, но и не DDS (никакой dds viewer их не распознает), короче какой-то кастомный DDS похоже (хотя и отличий почти нихуя нет, кроме "битых" сигнатур), данные в изображения в данном случае хранятся без сжатия, просто в сыром виде, в формате BGRA. столкнулся с такой хуйней, если это карта нормалей, то при считывании текстуры "как есть", получаю пик 1. т.е. где-то альфа канал = 0. если альфа канал принудительно везде сделать 255, то получаю пик 2 (и это вроде как похоже на осмысленную текстуру/рисунок). первый же пик вроде и тоже похож.

есть кстати специальный tex viewer ("dds" запакованы внутрь tex) для этой игры, он импортирует и отображает текстуру словно без альфа канала (пик 3), но если ее экспортировать в tga формат, то превью у нее словно без альфа канала, но при открытие изображения nomacs'ом там альфа канал присутствует...

в общем, что это за хуйня может быть? и какой способ верный?

Ответы48300483424891450423

2 18 авг, 10:55 2 1048293

бамп

3 18 авг, 11:02 3 1048295

непонятно, что ты хочешь сделать

саму игру не видел, но альфа-канал они могут использовать для чего угодно, например, хранить в нём ещё и roughness map или какие-то другие данные, это не просто прозрачность

Ответы48297

4 18 авг, 11:10 4 1048297

>>1048295
>непонятно, что ты хочешь сделать
пишу свой конвертер из .tex в .png, чтобы экспортировать все файлы текстур из игры для удобного анализа и поиска конкретных текстур, чтобы потом их использовать для кое-чего.

данный инцидент - просто индикатор текущей верности в обработке данных. т.е. если я буду уверен, что правильно обрабатываю данные в этом случае, то можно будет идти дальше и начинать писать декодер для DXT1, DXT3 и тд сжатий.

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

Ответы48300

5 18 авг, 11:25 5 1048300

>>1048292 (OP)
не знаю что ты имеешь в виду под считыванием, вероятно всё пашет, просто то, чем ты смотришь текстуру, предумножает RGB на альфу. удали альфа-канал из текстуры или настрой софт так, чтобы он не применял альфу

>>1048297
>пишу свой конвертер из .tex в .png
прозрачность в png это не то же самое, что альфа-канал: png удаляет пиксели под прозрачностью. правильно будет конвертировать в tga, там сохраняются и пиксели RGB, и A

без потерь информации конвертацию в png можно применять только для текстур без альфа-канала
либо сохранять текстуру в 2 пнг файла: отдельно PNG RGB 24-bit и отдельно альфу в PNG G 8-bit

Ответы48303483054830749427

54 Кб, 1276x55
6 18 авг, 11:40 6 1048303

>>1048300
>png удаляет пиксели под прозрачностью
что значит "удаляет"? если я обратно декодирую IDAT чанк с данными о пикселях в png, то я получу абсолютно тот же буфер, который был до сжатия (deflate). и записываю я инфу о пикселе в 4 байта, т.е. все 4 канала записываю. или я тебя не понял

Ответы4830548308

7 18 авг, 11:46 7 1048305

>>1048300
>>1048303
>png удаляет пиксели под прозрачностью
или ты имеешь ввиду как он интерпретирует данные для отображения?

>правильно будет конвертировать в tga
но тга тоже отображается с прозрачностью. или это зависит от декодеров этих форматов?

вообще странно все как-то, данные то по сути и в первом и втором случае есть, просто они не видны...

Ответы48309

8 18 авг, 11:54 8 1048307

>>1048300
>не знаю что ты имеешь в виду под считыванием
это значит если инфа о пикселе идет в формате BGRA, например [120, 23, 56, 98] (4 байта), то я их беру все и записываю в PNG как они есть, без изменения, меняю только местами порядок B и R, т.е. получаю RGBA (этого требует PNG для корректного отображения).

а когда я менял принудительно А канал на 255, для примера выше я бы заменил 98 на 255.

9 18 авг, 11:54 9 1048308

121 Кб, 421x40415 Кб, 421x404129 Кб, 421x404

>>1048303
я возможно хуйню сморозил и это не обязательно так

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

пикрил пример, попробуй сам его разобрать на ргб и альфу

а tga точно хранит альфа-канал отдельно

Ответы483104831249427

10 18 авг, 12:00 10 1048309

>>1048305
>но тга тоже отображается с прозрачностью. или это зависит от декодеров этих форматов?
от софта зависит. например я пользуюсь XNview MP, тут можно произвольно смотреть отдельно альфу, отдельно ргб, всё вместе

11 18 авг, 12:01 11 1048310

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

12 18 авг, 12:20 12 1048312

138 Кб, 640x34349 Кб, 593x354

>>1048308
я короче поставил гимп (у меня ни фотошопа не было, ни гимпа... надо было сразу так сделать), так вот, если я правильно понимаю, в самой первой текстуре из шапки треда, которую я декодировал "как есть", данные остались (что по идее не удивительно, хотя отображается она во всех приложениях с учетом альфы, но остальные каналы под этой афльвой НЕ ПРОЕБАНЫ)

13 18 авг, 12:23 13 1048313

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

Ответы4836948371

14 18 авг, 12:38 14 1048315

156 Кб, 911x496152 Кб, 892x466

с твоей картинкой такая же ситуация

23 Кб, 550x230
15 18 авг, 17:19 15 1048342

>>1048292 (OP)
https://en.wikipedia.org/wiki/XY_problem
https://ru.wikipedia.org/wiki/Проблема_XY

16 18 авг, 22:05 16 1048369

>>1048313
да это нормально, когда в одну текстуру пакуют несколько одноканальных карт. это экономит семплеры в шейдере. один раз семплишь текстуру, получаешь 4 карты

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

17 18 авг, 22:09 17 1048371

>>1048313
>как и для чего движок использует это вообще не ясно
похоже на карту металлик или просто любую маску для смешения двух алгоритмов. глянь на саму модельку, которая использует эту текстуру, там скоре всего будет визуальная разница

Ответы4837248468

18 18 авг, 22:10 18 1048372

>>1048371
>глянь на саму модельку
в игре, в смысле. под шейдером

404 Кб, 311x844
19 19 авг, 18:49 19 1048468

>>1048371
модельку я в игре найти не могу (игра про дрочь и фарм), может она вообще из длц которого у меня нет. но нашел это. похоже на модельку лука. то что под альфу попадало на той текстуре - видимо его ручка

Ответы48473

20 19 авг, 19:12 20 1048473

>>1048468
да, явно маска-переключалка между блестящим металлизированным шейдингом и шершавым диффузным

Ответы48501

21 19 авг, 19:22 21 1048477

сейчас в нормалмапы, кстати, редко что-то лишнее пакуют, их в основном посредством BC5 сжимают, который хранит только каналы R и G (X и Y компоненты вектора), а Z воссоздается через векторное произведение этих двух осей. синий и альфа каналы удаляются

22 19 авг, 21:12 22 1048501

>>1048473
не совсем понял... типа когда в шейдер освещения все 4 канала попадают, там где альфа = 0, по другому освещение рассчитывается?

Ответы48502

23 19 авг, 21:16 23 1048502

>>1048501
в шейдере ты что угодно можешь делать. как напишешь - так и будет

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

24 21 авг, 12:40 24 1048914

>>1048292 (OP)
В альфе скорее всего хранится дополнительная информация, маска для чего-то.

25 25 авг, 06:46 25 1049427

Иксперд по моддингу в этом итт-треде.

Для начала разберемся с композингом альфа-канала, почему везде оно выглядит по разному: https://en.wikipedia.org/wiki/Alpha_compositing
https://learn.microsoft.com/en-us/windows/apps/develop/win2d/premultiplied-alpha

Если кратко: альфа-канал может быть как "предварительно перемножен", так и нет. Когда такую картинку, особенно в TGA, запихиваешь в профессиональный софт, то тебя спросят: а альфа у тебя премультиплаена, или нет? Могут спросить в отдельном диалоге, а могут просто галочку сделать. И от этой галочки будет зависеть, как картинка будет отображаться, причем зависеть сильно.

При этом, с точки зрения самого файла, в нем просто лежат какие-то данные. Может быть несжатые байтики, а может быть пожатые дефлейтом (PNG). Проблемы начинаются, когда ты эти байтики пытаешься интерпретировать. И еще больше проблем, когда какая-то либа, программа или двигло пытается "сделать заебись", исходя из своих представлений о прекрасном. Например, зачем сохранять пиксели, если они на 100% прозрачны? В результате появляются >>1048300 >>1048308, откуда мы узнаем чудеса:
>png удаляет пиксели под прозрачностью
>под 100% прозрачностью остаётся что-то вроде flood fill пикселей
Нет, никакого удаления сам по себе формат не вносит. Зато говнософт, вроде фотошопа, вполне способен это сделать. На протяжении долгих лет фотошоп некорректно справлялся с альфа-каналом в PNG, не удивлюсь, что они или другие, "самые умные" могли приделать и вырезание пикселей.

>>1048300
>отдельно PNG RGB 24-bit и отдельно альфу в PNG G 8-bit
А вот это правильно, но я бы все же попытался разобраться: что именно делает альфаканал? Оно просто "замазывает неиспользуемые области", или там какой-нибудь спекуляр закодирован? Если первое - логично просто распаковывать в png24 c вытеранием пикселей под маской, если второе - распаковывай в 2 отдельные карты, ибо у них разное назначение. Еще лучше сделай настройки, чтобы можно было оригинальные битмапы сдампать тоже.

26 25 авг, 22:03 26 1049543

up

6,2 Мб, mp4,
640x360, 1:32
27 29 авг, 14:18 27 1049987

Bump!

Ответы4999950183

28 29 авг, 14:59 28 1049999

>>1049987
на твой вопрос не ответили или что?

Ответы50027

5,2 Мб, mp4,
640x360, 5:33
29 29 авг, 17:15 29 1050027

>>1049999
Это не мой тред, просто я тут расписал детальки, хотел обкашлять нюансики, показать свою писечку в деле моддинга... А тут уже похоже ОП сыбал и забыл про тредик. Мне печально, что помогать некому

Ответы50183

30 30 авг, 17:37 30 1050183

>>1049987 >>1050027
>показать свою писечку в деле моддинга...
Это ты сам заставил Сидоджи летать? Молодец.

Помню, любил летать на машине как на самолёте...

Ответы50313

8,8 Мб, mp4,
640x360, 2:30
31 30 авг, 23:33 31 1050313

>>1050183
>Это ты сам заставил Сидоджи летать? Молодец.
Нет, это сделали за меня, а вот звуки - моя работа, я как раз пытаюсь понять где какой звук используется и сделал такую замену для отладки.

Ответы50838

32 1 сен, 00:48 32 1050423

>>1048292 (OP)
это карта нормалей для динамического освещения

33 4 сен, 03:56 33 1050838

>>1050313
>вот звуки - моя работа
А, сейчас послушал со звуком - теперь стало понятно.

>пытаюсь понять где какой звук используется и сделал такую замену для отладки
Игра 20 лет назад вышла, и, вроде бы, к ней уже были любительские озвучки...

Что за древний TTS ты откопал? Есть же новее, бесплатно и без регистрации.

Ответы50856

60 Кб, 351x245
34 4 сен, 11:08 34 1050856

>>1050838
>Игра 20 лет назад вышла, и, вроде бы, к ней уже были любительские озвучки...
Любительских озвучек - великое множество. Утилит для ковыряния звуков - еще больше. А вот какой звук за что отвечает - это надо долго пылесосить форумы, да и информация разрозненная. Как делают озвучки, какой софт и пайплайн при этом используется - непонятно, такое если и публикуют, то хуй найдешь ту страничку форума, где это опубликовано. Вот в результате я сам пишу свои утильки и сам ебусь со звуками. С нуля. Почти с нуля - есть некоторая информация на вики, где описываются принципы кодирования звуковых файлов, а дальше самому. Иногда информация не полная, иногда с ошибками. Иногда ты все сделал по инструкции, все работает, а вот ритм-игры почему-то вылетают. И надо разобраться почему.

>Что за древний TTS ты откопал? Есть же новее, бесплатно и без регистрации.
Это Екатерина и не менее древний Николай.
Эти движки можно скачать к себе на компьютер и засунуть в скрипт, сгенерив тысячи файлов.
А как быть с вашим модным нейродерьмом, которое работает в браузере? Мне ручками 5000 файлов сохранять?

Обновить тред
« /gd/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion