Gildor's Forums

Русскоязычный Форум => Unreal engine 4 (rus) => Topic started by: m0xf on June 17, 2018, 14:01



Title: Bravo Team (PS4)
Post by: m0xf on June 17, 2018, 14:01
Модели распаковываются нормально при выборе версии 4.16-4.17, но какая-то проблема с текстурами. Вот такие ошибки:
Code:

Reading ST_equipment_NM mip level 0 (1024x1024) from /SMG016/Content/Characters/
Models/Enemy/Body/ShockTrooper/Textures/ST_equipment_NM.ubulk
******** /SMG016/Content/Characters/Models/Enemy/Body/ShockTrooper/Textures/ST_e
quipment_NM.uasset:  Texture2D'ST_equipment_NM' ********
*** Failed to upload mip 6 of texture ST_equipment_NM in format 0x8DBD: error 0x
501

Reading ST_jacket_BC mip level 0 (1024x1024) from /SMG016/Content/Characters/Mod
els/Enemy/Body/ShockTrooper/Textures/ST_jacket_BC.ubulk
******** /SMG016/Content/Characters/Models/Enemy/Body/ShockTrooper/Textures/ST_j
acket_BC.uasset:  Texture2D'ST_jacket_BC' ********
*** Failed to upload mip 6 of texture ST_jacket_BC in format 0x83F1: error 0x501


Reading ST_jacket_FMAR mip level 0 (1024x1024) from /SMG016/Content/Characters/M
odels/Enemy/Body/ShockTrooper/Textures/ST_jacket_FMAR.ubulk
******** /SMG016/Content/Characters/Models/Enemy/Body/ShockTrooper/Textures/ST_j
acket_FMAR.uasset:  Texture2D'ST_jacket_FMAR' ********
*** Failed to upload mip 6 of texture ST_jacket_FMAR in format 0x83F3: error 0x501

Все ресурсы игры в одном файле (Image0\smg016\content\paks\pakchunk0-ps4.pak, 16Гб), экспортировал из него несколько пакетов:
https://yadi.sk/d/_ANh966C3XzuuC

Там-же eboot.bin и eboot.elf, который хоть и кривенько но загружается в IDA.


Title: Re: Bravo Team (PS4)
Post by: Gildor on June 17, 2018, 14:39
Я думаю, здесь проблема в том, что это PS4, и у неё свой формат текстур.


Title: Re: Bravo Team (PS4)
Post by: m0xf on June 17, 2018, 15:48
Глянул более детально на текстуры, которые экспортировались в .ubulk. Добавил dds заголовок, получилась мешанина из квадратов. И тут я вспомнил про скрипт "ps4ut.py", который я когда-то давно делал для другой PS4 игры  :)
Текстура собралась.

Если коротко, то там используется что-то похожее на Z-curve перестановку 3 раза.



Title: Re: Bravo Team (PS4)
Post by: Gildor on June 17, 2018, 15:55
Отлично. Может в ближайшем будущем встрою этот код в umodel. Ещё на очереди текстуры для Nintendo Switch, вроде там тоже только swizzle другой (по крайней мере для NS я нашёл хоть какую-то информацию в интернете).


Title: Re: Bravo Team (PS4)
Post by: Gildor on June 18, 2018, 21:09
Перенёс код на C++. Есть проблема: если текстура DXT5 (block_size_pixel=4), и её длина 16 или меньше, то в
Code:
map_block_position(mx, my, width//block_size_pixel, 8)
'w' получается меньше чем 'bx', 'block_count_x' будет 0, ну а потом делается деление на этот block_count_x (деление на ноль).

Есть ли какая-нибудь дополнительная информация по swizzle для ps4? Я искал в google и ничего не нашёл. Кода UE4 для PS4 у меня нет, так что нет возможности даже зацепиться за какое-то название, функцию и т.п. чтобы хотя бы поковырять PS4 SDK.


Title: Re: Bravo Team (PS4)
Post by: Gildor on June 18, 2018, 21:18
И вообще, если возможно, хотелось бы пример любой текстуры из представленных в первом посте, в декодированном виде - чтобы было видно что должно получиться на выходе. Я попробовал работать только с большими текстурами, и получил мусор - т.е. либо алгоритм не работает, либо я неправильно перенёс его с C++.


Title: Re: Bravo Team (PS4)
Post by: m0xf on June 18, 2018, 22:12
Вот несколько исправленных текстур: https://yadi.sk/d/V4H0qvSe3Y5f9u
По поводу деления, скорее всего нужно делить с округлением в большую сторону, как это принято для определения количества блоков DDS. То же скорее всего касается и деления "w // bx". Проверить это никак не могу, все текстуры с сжатием что я находил были кратны 8.

Пока искал "нестандартные" текстуры нашёл несколько пакетов: https://yadi.sk/d/ih6xgSc43Y5hS6
934x868_male_avatar_1 - возникает access violation внутри nvoglv32
FrontendButtonRight - экспортируется корректно, но отображается неверно


Title: Re: Bravo Team (PS4)
Post by: Gildor on June 18, 2018, 22:31
Спасибо, буду разбираться.


Title: Re: Bravo Team (PS4)
Post by: Gildor on June 19, 2018, 13:41
Всё сделал. Падения поправил. Текстуры работают.
Для запуска нужно указать новую опцию -ps4 (ну или выбрать PS4 в UI).
Спасибо за код расшифровщика текстур, он работает. Сделал только дополнение для маленьких текстур (меньше 32x32).