Войти
ПрограммированиеФорумОбщее

Утилита CubeMap - преобразование цилиндрической текстуры в кубическую

#0
21:53, 26 дек. 2009

По многочисленным просьбам выкладываю исходники программы 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. Не ругайте сильно за корявые исходники, программа писалась по принципу "лишь бы скорее заработала", а потом начала обрастать всякими фенечками. Я сам в них путаюсь:))


#1
13:11, 28 дек. 2009

уууу.... большое спасибо!
Я писал подобную софтину чтобы просто порезать исходные данные BlueMarble в тайлы. Только не в кубическую карту, а просто резалка)
писал на Qt (QImage)... исходники тоже могу выложить

#2
15:49, 28 дек. 2009

Да, прикольно. Если бы она еще мипы генерила...

#3
16:04, 28 дек. 2009

Выложил бы уже как то цивильно. На гугл коде например. Чтоб не потерялось.

#4
17:32, 28 дек. 2009

Chertov
> уууу.... большое спасибо!
> Я писал подобную софтину чтобы просто порезать исходные данные BlueMarble в
> тайлы. Только не в кубическую карту, а просто резалка)
> писал на Qt (QImage)... исходники тоже могу выложить
Вот тут ссылки и обсуждение софта для таких целей, а также ссылки на сами BMNG текстуры:
http://forum.celestialmatters.org/viewtopic.php?t=44&postdays… c&start=2
Автор прикольно сделал - проги используют std потоки, поэтому всё считывается прямо из gzip-архивов и нигде не складируются гигабайты временных файлов. К сожалению для моей задачи так не получится:(

Ghost2
> Да, прикольно. Если бы она еще мипы генерила...
Структура кубемапы такова, что она сама себе мип...

entryway
> Выложил бы уже как то цивильно. На гугл коде например. Чтоб не потерялось.
Точно, надо будет туда залить

#5
21:59, 28 дек. 2009

Апдейт v1.01: исправил пару багов, добавил фичу - возможность инверсии альфа-канала

#6
23:20, 28 дек. 2009

Neptune

> Структура кубемапы такова, что она сама себе мип...
В каком смысле? Если ты говоришь, что генеришь картинки 512х512 из общей карты, то под мипами я понимаю картинки 512х512, только охватывающие большую площадь.

#7
1:07, 29 дек. 2009

Ghost2
Да-да, именно так всё и работает. Строится пирамида из тайлов: начиная с 0 уровня (где один тайл покрывает всю грань куба), каждый следующий уровень содержит в 4 раза больше тайлов.

#8
11:33, 29 дек. 2009

Neptune

> Да-да, именно так всё и работает
Круто. Но из первого сообщения это совсем не следует.

Прошло более 1 года
#9
4:56, 22 апр. 2011

Новая версия. Исправлены некоторые баги и добавлены новые возможности. Выложена на SourceForge.
https://sourceforge.net/projects/cubemap/files/

ПрограммированиеФорумОбщее

Тема в архиве.