По многочисленным просьбам выкладываю исходники программы CubeMap - утилиты для преобразования цилиндрической текстуры в кубическую. Поддерживаются входные текстуры любого (!!!) разрешения, с любым количеством каналов на пиксель, 8-битные или 16-битные знаковые или беззнаковые целые. Формат входной текстуры - raw. Формат выходной текстуры - raw и/или пирамида тайлов разного уровня детализации в форматах raw, tga, dds, jpg или png. Подробности о форматах и инструкция по использованию в readme_rus.txt.
CubeMap-1.03 на SourceForge
v1.00: Первая версия
v1.01: Исправил баги, добавил возможность инверсии альфа-канала
v1.02: Исправил баги, добавил обновление краёв граней пикселами из прилегающих граней
v1.03: Исправил баги, добавил автоматическое создание базовой текстуры планеты
Изначально программа предназначена для конвертации текстур планет для моего космического движка, но применение ей можно найти любое, тем более есть исходники. Для справки: насовскую текстуру Земли Blue Marble Next Generation разрешением 86400 х 43200, RGBA (в альфа-канале - маска воды), общим весом 14 гигов (!) прога конвертит за час. В результате получается 32766 текстурок разрешением 512 х 512. Главная фишка программы - исходная текстура не грузится в память целиком, считываются только нужные куски, а ненужные удаляются из памяти. 128-256 Мб памяти ей вполне хватит, причём производительность упирается исключительно в жёсткий диск.
Также на SourceForge выложены тестовые текстурки Земли (2048х1024) и скрипты для их преобразования, информация - в readme-test.txt.
P.S. Не ругайте сильно за корявые исходники, программа писалась по принципу "лишь бы скорее заработала", а потом начала обрастать всякими фенечками. Я сам в них путаюсь:))
уууу.... большое спасибо!
Я писал подобную софтину чтобы просто порезать исходные данные BlueMarble в тайлы. Только не в кубическую карту, а просто резалка)
писал на Qt (QImage)... исходники тоже могу выложить
Да, прикольно. Если бы она еще мипы генерила...
Выложил бы уже как то цивильно. На гугл коде например. Чтоб не потерялось.
Chertov
> уууу.... большое спасибо!
> Я писал подобную софтину чтобы просто порезать исходные данные BlueMarble в
> тайлы. Только не в кубическую карту, а просто резалка)
> писал на Qt (QImage)... исходники тоже могу выложить
Вот тут ссылки и обсуждение софта для таких целей, а также ссылки на сами BMNG текстуры:
http://forum.celestialmatters.org/viewtopic.php?t=44&postdays… c&start=2
Автор прикольно сделал - проги используют std потоки, поэтому всё считывается прямо из gzip-архивов и нигде не складируются гигабайты временных файлов. К сожалению для моей задачи так не получится:(
Ghost2
> Да, прикольно. Если бы она еще мипы генерила...
Структура кубемапы такова, что она сама себе мип...
entryway
> Выложил бы уже как то цивильно. На гугл коде например. Чтоб не потерялось.
Точно, надо будет туда залить
Апдейт v1.01: исправил пару багов, добавил фичу - возможность инверсии альфа-канала
Neptune
> Структура кубемапы такова, что она сама себе мип...
В каком смысле? Если ты говоришь, что генеришь картинки 512х512 из общей карты, то под мипами я понимаю картинки 512х512, только охватывающие большую площадь.
Ghost2
Да-да, именно так всё и работает. Строится пирамида из тайлов: начиная с 0 уровня (где один тайл покрывает всю грань куба), каждый следующий уровень содержит в 4 раза больше тайлов.
Neptune
> Да-да, именно так всё и работает
Круто. Но из первого сообщения это совсем не следует.
Новая версия. Исправлены некоторые баги и добавлены новые возможности. Выложена на SourceForge.
https://sourceforge.net/projects/cubemap/files/
Тема в архиве.