и BSP и MDL и SPR будут хранится в точно таких же контейнерах.
Разница будет только в именах секций и четёрых байтовом идентификаторе в самом начале файла. Опять же идентификатор в данном случае становится просто подсказкой, которая ни к чему не обязывает, поскольку структура секций с ним никак не связана. Это беззаголовочный формат, с устойчивостью к повреждению отдельных секций. Я довольно долго над ним размышлял, прежде чем сделать. Попытался искоренить все недостатки известных мне форматов.
Зачем спрайтам собственное расширение? Это же просто материал.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Зачем спрайтам собственное расширение? Это же просто материал.
Это не просто материал. Во первых спрайты содержат геометрию. Т.е. в теории в качестве спрайта может выступать очень простенькая объемная модель. Или кустик с травкой. Ну что-такое вообщем. В терминологии XashNT это тоже канает за спрайт. Ну а в какую категорию отнести подобные мелочи? Это не модель в полноценном понимании этого слова, т.к. у нее нет никакой анимации. Это не статичная модель, т.к. статичные модели уже намертво вкомпилены в сцену. Это не динамичная полноценная модель, т.к. у нее и коллизии-то нету. Так что спрайт. К тому же я помню у Хумуса была такая обрезалка геометрии спрайтов в точности по размеру видимой текстуры, чтобы избежать оверфиллинга. Вот на моём формате спрайтов это вполне возможная вещь. Так что нет, ты неправ, спрайт - это не просто материал.
Цитата:
ZGreen писал: А в чем преимущество такого контейнера перед обычными бинарными файлами с заголовком?
Главное преимущество в том, что этот формат специально создавался для лёгкого сохранения прямой и обратной совместимости. Невозможно учесть всё что понадобится в будущем, вероятно что-то будет меняться. Так вот формат изначально устроен таким образом чтобы одновременно содержать в себе старые и новые данные и автоматически выбирать нужное. Или же просто игнорировать новые данные. Всё это конечно делается и без хитрых форматов, но зачастую никакой обратной совместимости не гарантирует. Здесь я это заложил в архитектуру, чтобы избежать проблем в дальнейшем.
Можете посмотреть какой зоопарк версий уровней и моделей был у того же сорса. Да и в Юнитях вроде при смене версии тоже всё меняется.
Дядя Миша писал: Это не просто материал. Во первых спрайты содержат геометрию. Т.е. в теории в качестве спрайта может выступать очень простенькая объемная модель. Или кустик с травкой. Ну что-такое вообщем. В терминологии XashNT это тоже канает за спрайт. Ну а в какую категорию отнести подобные мелочи? Это не модель в полноценном понимании этого слова, т.к. у нее нет никакой анимации. Это не статичная модель, т.к. статичные модели уже намертво вкомпилены в сцену. Это не динамичная полноценная модель, т.к. у нее и коллизии-то нету. Так что спрайт. К тому же я помню у Хумуса была такая обрезалка геометрии спрайтов в точности по размеру видимой текстуры, чтобы избежать оверфиллинга. Вот на моём формате спрайтов это вполне возможная вещь. Так что нет, ты неправ, спрайт - это не просто материал.
Все возможности спрайтов описываются шейдером, единственное что может содержать в себе спрайт именно как отдельная сущность это всякие якоря для интерфейса и данные о его нарезке. В основном это всё нужно для работы в 2д.
Геометрия может быть любая, например мы делали спрайты из треугольников, а лишнее обрезали, т.к. это экономия в 2 раза. А ты предлагаешь всё захардкодить. Потом например есть партикли они же то же юзают спрайты, но сама партикля по себе это вовсе и не спрайт.
Цитата:
Дядя Миша писал: Можете посмотреть какой зоопарк версий уровней и моделей был у того же сорса. Да и в Юнитях вроде при смене версии тоже всё меняется.
В Юнитях нативная поддержка форматов популярных 3д пакетов, а так же встроенные утилиты миграции, которые без проблем позволяют конвертировать большинство ресурсов даже из доисторических версий. Но вот код нет, не позволяют, но там легко это поправить. Вся работа с ресурсами в Юнити сведена до уровня работы с файлами в проводнике, без нудного задрачивания команд .qc и дебага недокоментированых ошибок.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: В основном это всё нужно для работы в 2д.
Для 2D у меня формат шрифтов, а не спрайтов, очевидно же.
Добавлено 15-03-2023 в 18:16:
Цитата:
FiEctro писал: В Юнитях нативная поддержка форматов популярных 3д пакетов, а так же встроенные утилиты миграции, которые без проблем позволяют конвертировать большинство ресурсов даже из доисторических версий. Но вот код нет, не позволяют, но там легко это поправить. Вся работа с ресурсами в Юнити сведена до уровня работы с файлами в проводнике, без нудного задрачивания команд .qc и дебага недокоментированых ошибок.
Вот ты ейбогу ведёшь себя как восторженный адепт. Слово в слово повторяешь за Жэкой. Только он хвалит Unreal, а ты Unity. Хотя вас обоих об этом никто не просил, денег вам за это никто не платил и игр ваших так до сих пор никто и не увидел
Дядя Миша писал: Для 2D у меня формат шрифтов, а не спрайтов, очевидно же.
А иконки тоже шрифт?
Цитата:
Дядя Миша писал: Вот ты ейбогу ведёшь себя как восторженный адепт. Слово в слово повторяешь за Жэкой. Только он хвалит Unreal, а ты Unity. Хотя вас обоих об этом никто не просил, денег вам за это никто не платил и игр ваших так до сих пор никто и не увидел
Ну тебя тоже никто не просил обсирать Юнити. Хотя как бы там есть за что его обсирать, но вряд ли ты про это знаешь Что касаемо денег, я вам с Ксероксом платил, в отличие от того же Юнити. Так это ещё вопрос, кто чей адепт.
Не воспринимай мои слова что я считаю что ты должен и обязан что то делать так. Я просто информирую как это можно сделать по другому, более удобно. И Юнити здесь не при чем. Эта парадигма применяется и в Анриле, и в Годоте, и в Унигине, и Крайтеке, и остальных ААА движках
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Я так полагаю под спрайтом Дядя Миша подразумевает не просто ориентированную картинку как было во времена Голда, а просто декоративный объект без коллизий и т д. это может быть и картинка и моделька и все, на что хватит фантазии. Верно я понимаю?
Цитата:
Дядя Миша писал: Да ты бы скачал демку штоле. Ты же можышь.
FiEctro писал: Что касаемо денег, я вам с Ксероксом платил, в отличие от того же Юнити. Так это ещё вопрос, кто чей адепт.
Звучит как жалоба обманутого вкладчика.
Вообще-то я многое для вас сделал, несоразмерно больше, чем размер донатов.
Даже func_rotating в волатиле был сделан специально для тебя, после твоей жалобы, о чём имеется специальный комментарий в исходниках.
Дядя Миша писал: Это не модель в полноценном понимании этого слова, т.к. у нее нет никакой анимации
Ну чего ж так? Если уж брать пример с кустиком, то там сам б-г велел какую-никакую анимацию покачивания сделать. Ну или уже программно, от силы ветра, например
Цитата:
FiEctro писал: А иконки тоже шрифт?
Ты таки не поверишь, сейчас плотно занимаюсь веб-разработкой и в среде фронтендщиков весьма популярен шрифт https://fontawesome.ru/ как раз с большим набором иконок. Впрочем, это довольно старая практика, когда стандартные глифы заменяют на нужную графику
FiEctro писал: Эта парадигма применяется и в Анриле, и в Годоте, и в Унигине, и Крайтеке, и остальных ААА движках
Миллионы мух не могут ошибаться?
Цитата:
ZGreen писал: Я так полагаю под спрайтом Дядя Миша подразумевает не просто ориентированную картинку как было во времена Голда, а просто декоративный объект без коллизий и т д. это может быть и картинка и моделька и все, на что хватит фантазии. Верно я понимаю?
Совершенно верно. Если в шейдере есть деформация относительно углов взгляда игрока, то он будет себя вести как самый настоящий спрайт из халфы\кваки. А если таковой деформации нет, то будет обычный низкополигональный объект без коллизий. Справедливости ради по возможности рендеринга он ничем не уступает например мировой модельке. Т.е. в спрайт можно затолкать целый уровень. Правда смысла в том никакого, но мало ли?
Цитата:
XaeroX писал: о чём имеется специальный комментарий в исходниках
Но поскольку исходники никто не видел, то и слова твои тоже не проверить.
Цитата:
KiQ писал: Если уж брать пример с кустиком, то там сам б-г велел какую-никакую анимацию покачивания сделать
А. ну это через шейдер делается без проблем.
Добавлено 15-03-2023 в 21:53:
Ну а я продолжаю заниматься нелёгким, но весьма интересным делом - компиляцией полигональной модели в составе BSP дерева. Сегодня сделал важную оптимизацию - разбил исходную модель по смежным рёбрам на отдельные группы. Мой препроцессор моделей умел это и делать и ранее, однако тогда в его задачи входило лишь построение развертки для лайтмап, поэтому те группы не совпадают с группами, в которых геометрия связана именно по рёбрам. Следующий шаг - маркировка группы по одному из двух признаков. Либо это планарная группа (но в планарной группе может быть дырка, что надо задетектировать отдельно). Либо это конвексная группа (в которой теоретически тоже может быть дырка). Остальное остаётся сгруппированным без явного признака для всей группы (но отдельные сурфейсы могут быть помечены тем или иным образом).
Следующий шаг - генерация брашей из конвексных групп. Тут нас так же подстерегает опасность незакрытых брашей. В самом деле, представьте на полу лежит квадратик плитки, ну стандартная ситуация. А нижнего полигона у него просто нет, т.к. игрок его всё равно не увидит. Поэтому конструктор брашей должен учитывать подобные вещи и оперативно добавлять брашам недостающие стороны. К счастью именно для брашей (в отличие от моделей) сделать подобное исправление - пара пустяков и прекрасно укладывается в простейший алгоритм. В принципе этот механизм в состоянии закрывать все недостающие стороны, даже если у браша каким-то чудом осталась всего одна. Такое случается, например после валидации, когда якобы закрытый браш остаётся невалидным и проблемная сторона удаляется вновь. Но как правило после повторного прохода валидность восстанавливается. Правда с каждым проходом он всё меньше и меньше похож на исходный браш по своей форме и больше напоминает форму своего ббокса, но это некритично, напоминаю, что всё это и затеяно ради колоизации в первую очередь.
Следующий шаг - проверка размера неконвексных групп на размер хулла. И если этот размер заведомо меньше\не сильно больше, то такую группу можно смело превратить в конвексный браш. Идея заключается в том, что для надутого хулла с большей степенью вероятности коллидить с этой группой точно по её полигонам всё равно будет невозможно - т.к. хулл по размерам больше чем все эти полигоны. Так что в конечном итоге без разницы. Ну и наконец оставшиеся полигоны отправятся в дерево и примут участие в его построении.