Сабж
Делаю движок, но не хочется делать инструментарий. Персонажи будут в glTF2, а с остальным ещё не определился
сколько литров движок?
А разве из открытых форматов для терайнов кроме карты высот что-то есть?
SkibidiSigma
> сколько литров движок?
Стока не выпить ))
stratego
> А разве из открытых форматов для терайнов кроме карты высот что-то есть?
Ну мало ли, вдруг что-то упускаю
А для описания сцен? gltf не умеет ведь другие gltf в свою сцену импортировать?
httpd
> gltf не умеет ведь другие gltf в свою сцену импортировать?
А разве должен уметь?
Насколько знаю, это просто дескрипшн хранения данных. От хроносов никаких официальных либ по работе с ним не было. Редакторы используют свои кастомные импортеры/экспортеры.
Соотвественно, чтобы смерджить два gltf, импортишь их в редактор/движок. Экспортишь одним файлом. Профит.
Зависит от того как ты этот ландшафт реализовывать собрался.
А так по факту просто набор текстур, карта высот и текстуры с данными коих может быть много и разных, разумеется речь не про цвет нормали и прочее они отдельно.
Kemanorel
> Зависит от того как ты этот ландшафт реализовывать собрался.
Мне на самом деле любой способ подойдёт - с чего-то начать лишь бы. Пусть это будет какой-то способ описывать замкнутые помещения, например. Кабина корабля со стоящими в неё вещами, предметами.
AMM1AK
> > gltf не умеет ведь другие gltf в свою сцену импортировать?
> А разве должен уметь?
А там есть раздел scenes, например. В который входят корни нод объектов.
httpd
> Кабина корабля со стоящими в неё вещами, предметами.
А это к ландшафту не имеет никакого отношения.
Kemanorel
> А это к ландшафту не имеет никакого отношения.
Хорошо, а как это называют? Окружение? Тогда речь о нём
Я просто хотел бы чтобы были учтены нюансы о которых я ещё не знаю и были доступны редакторы
httpd
> А для описания сцен?
USD, USDA, USDC — различные форматы Universal Scene Description. Файл описывающий сцену и 3д модели.
Сцена особенно большой быть не может, она грузится целиком. Террейн - по частям.
httpd
> Делаю движок, но не хочется делать инструментарий.
Используй мощности Unreal Engine. С его помощью можно сделать ландшафт любой сложности и затем экспортировать его в fbx.
Kemanorel
> карта высот
Не нужна.
totoro
> Используй мощности Unreal Engine. С его помощью можно сделать ландшафт любой сложности и затем экспортировать его в fbx.
Как раз ландшафты обычно делают в стороннем софте с последующим экспортом в анрил, а не наоборот. И по факту представляют из себя набор текстур ключевой из которых как раз и будет карта высот.
Ну вот был когда-то такой софт. Сейчас, увы, всех названий не вспомню, но вот к примеру.



И еще много всего. Более-менее подкованный программист может накатать себе собственный генератор ландшафтов, просто взяв уже известный алгоритм шума. Наиболее распространенный прием - брать шум Перлина, к тому же это еще и проще всего реализовать. Кому шума Перлина недостаточно, может углубиться в математику и обнаружить массу других вариантов.
Ну и тут мы снова возвращаемся к твоему вопросу. К вопросу о формате.
Ежели ты берешься генерировать ландшафт процедурными методами (через шум), тогда тебе не нужен никакой открытый формат в классическом понимании (как .fbx или иже с ним). Твоим форматом становится математическая формула и seed (зерно генерации).
1. Если ты хочешь растровое представление результата, то ты генерируешь карту высот. Просто, но занимает много места и имеет конечное разрешение. Впрочем, она монохромная, поэтому вопрос ее сжатия можно отдать на откуп твоей изобретательности.
2. А вот если ты хочешь прямо противоположный результат получить, тогда тебе нужно копать в сторону фракталов и Signed-Distance Fields. Они дадут тебе векторное представление ландшафта, не будут практически ничего весить (какие-то килобайты), из плюшек - бесконечное разрешение, ибо фракталы на то и фракталы, что они самоподобны.
Ну и таким образом, для современного движка, при условии, что ты не хочешь таскать повсюду тяжелые ассеты, лучшим, так сказать, форматом для террейна станет вовсе не .obj, а что-то вроде struct { float frequency; int octaves; int seed; }. Так оно получится компактнее, гибче, и заодно позволит генерировать мир на лету, прямо как в заправском No Man's Sky. Выбор, конечно же, за тобой.