Логотип PSone и где он обитает
Знакомая картинка? Думаю, что знакома она многим. Дети 90-х (ух, что тогда творилось, в песне Монеточки это всё описано), видели этот логотип при старте приставки PS1. И оказалось, что
Оказалось, что это 3D объект. И содержится он на каждом диске с игрой. Содержится он там естественно в проприетарном формате.
Когда-то мне стал интересен процесс программирования под эту консоль, и я наткнулся на сайт psxdev.net, где в разделе загрузок можно найти как официальные средства разработок, так и официальную документацию. В числе этой документации есть и описание применяемых типов файлом. Одним из таких типов оказался формат TMD. Поняв как устроен его заголовок, я начал искать по нему файлы в различных образах игр. И каково было моё удивление, что в самом начале диска, ещё до объявления реквизитов игры, была найдена подобная сигнатура. Ради интереса было проверено ещё несколько образов. И всё повторилось. TMD файл лежал в несжатом виде в самом начале образа. Это 5 сектор диска. А к примеру само представление игры происходит на 16 секторе. Где описывается платформа и название игры
Ну обо всём по порядку. Сигнатурой данного типа файлов является значение 0х00000041. И далее идут служебные данные. Вот на представленном скриншоте это отлично видно. Если открыть документацию, а она очень легко гуглится, файл называется «fileformat47», и немного почитать. Становится понятно, что модель состоит из одного объекта, имеет 337 вершин (0х00000151), 153 нормали (0х00000099), 560 полигонов (0х00000230), и значение масштаба = 7, вернее это степень в которую надо возвести 2, чтобы получить масштаб.

Сразу стал вопрос, а как это отобразить, как посмотреть, что там за фигура. Да. Можно было пойти каким-то незамысловатым путём, и найти какой-нибудь конвертер в DXF или RSD, чтобы открыть в каком-либо 3d вьюере. Но хотелось своего опыта. Поэтому было принято решение самому написать, что-то, что позволило бы его отобразить. Тем более, что посмотрев структуру файла, я понял, что сам объект не тяжелый, без текстур с одноцветными полигонами без градиентов, про это говорят заголовки полигонов 0х2000304.

Я начал копать в сторону opengl, и быстренько (за неделю так, примерно) накидал программку, которая бы позволила отобразить это. И оно отобразилось. Я увидел логотип, но так как мои знания в программировании равноценны знаниям третьеклассника по математике. То через какое-то время (полтора года), я решил, что неплохо бы было перегнать файл во, что-то общеизвестное, что позволяло бы его открывать в известных программах, например стандартный 3D viewer из Windows 10. Я начал смотреть какие форматы он способен открыть. И вот один из них мне понравился, это был формат OBJ. Я погуглил, что он из себя представляет, и мне показалось, что это вполне реализуемо.
Имея какие-то навыки работы с Си, благо уже были наработки, я, уже действительно быстро, накидал программку по трансформации данных в файл OBJ. На самом деле, сначала, я это сделал на python, но не осилил процедуры создания файлов, а в Си, как по мне, это проще. Да, получилось, но оказалось, что в этих файлах нет информации о цвете полигонов. Пришлось так же гуглить как передать информацию о цвете. Оказалось, что надо создавать ещё один файлик с раширением MTL (сокращение от «материал»). Оба файла должны быть вместе, как Бонни и Клайд.
Получилось. Да код не идеален. Можно сгруппировать полигоны по цветам, а не присваивать каждому полигону свой цвет, как это делаю я. Но оно получилось.
А если кому интересно то я оставлю ссылку на каталог с исходниками: https://disk.yandex.ru/d/Kwk8tYfHonyl6g
BioWare пытаются спасти от «американского диктата», Sony неожиданно призвала владельцев PS5 продавать консоли — самое интересное за неделю
«Клэйфейс» вплотную приблизился к окупаемости
Sony отложила выпуск новинки для PlayStation за шесть дней до начала продаж
Создатель Super Smash Bros. объяснил, почему разработчикам стоит обратить внимание на ИИ
Сооснователь BioWare оценил, сколько может стоить возвращение Mass Effect 5
Разработчики ARC Raiders не хотят менять эмоциональную составляющую игры при добавлении PvE-контента
Microsoft раскрыла полный список 37 игр, которые выйдут на Xbox за неделю
Бывший глава PlayStation призвал Sony отказаться от технологической гонки ради PS6 за $300