Показать сообщение отдельно
Старый 05.04.2014, 21:10   #1
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
heightmap->normalmap tool

В общем, я в процессе работы над движком подумал что неплохо было бы иметь свой конвертер карт высот в карты нормалей.
Я не художник поэтому не хотел связываться с фотошопами и плагинами для них.
К тому же у меня всё автоматизировано на батниках поэтому хотелось иметь легкую тулзу с командной строкой.
Еще одним недостатком найденных мной в инете тулз была невозможность менять порядок координат в карте нормалей (и приходилось менять в шейдере, что является неправильным) и к тому же имелось много готовых карт нормалей, но с разным порядком координат, и было бы неплохо их конвертировать в один формат.
Поэтому я сделал такую тулзу.


hm2nm_tool.zip
hm2nm_tool_v002.zip


Основные фичи:
* Генерация карт нормалей (с установленным форматом координат) из карт высот.
* Конвертация карт нормалей из одного формата координат в другой.
* Командная строка.
* Работа в DIB (независимым от девайса или gapi форматом).
* Не требуется сторонних библиотек, а значит код в будущем легко портировать.

Однако от сюда следует, что пока поддерживается только 24 битный bmp - я еще не написал коды для работы с другими форматами изображения.
С другой стороны это не является задачей этой тулзы.

Это хелп:
  >hm2nm.exe [keys]...
keys:
  -d, --destination=PATH    destination file
  -s, --source=PATH         source file
  -h, --help                this help
  -v, --version             tool version
  -i, --info                view source file info
  -t, --tile                tile image
  -f, --format=XYZ          format of the output image:
                            px, nx    positive/negative X axis
                            py, ny    positive/negative Y axis
                            pz, nz    positive/negative Z axis
                            "pxpypz" by default
  -c, --convert             convert normalmap->normalmap (used to change the format)
  -p, --power=POWER         scale of normals
example:
  >hm2nm.exe -s=myhm.bmp -d=mynm.bmp -t -p=2.0
  >hm2nm.exe -s=mynm.bmp -d=mynm2.bmp -c -t -f=nxnypz
Пример работы тулзы:
Название: h1.bmp
Просмотров: 1228

Размер: 192.1 Кб->Название: n1.bmp
Просмотров: 1152

Размер: 192.1 Кб

Генерация нормали в текущем текселе происходит с учетом соседних текселей изображения карты высот.
Ключом -t можно генерировать изображение для тайла.

Например есть такая карта высот:
Название: h2.bmp
Просмотров: 1199

Размер: 192.1 Кб

Если сгенерировать без тайла будет:
Название: n2_1.bmp
Просмотров: 1187

Размер: 192.1 Кб

А если с тайлом, то будет:
Название: n2_2.bmp
Просмотров: 1175

Размер: 192.1 Кб
Обратите внимание на крайние тексели изображения (увеличьте с помощью чего-нибудь) - если изображения замостить то будет плавный переход.

Выходное изображение можно отформатить с помощью -f=...
По умолчанию идет обычный формат pxpypz - подходит как раз для моих шейдеров.
Но можно поменять как порядок так и знак: -f=nynxpz или например -f=pxpxpx

Ключ -c говорит только переформатировать одну нормал карту в другую.
Например если использовать -f=nxnypz
То из выпуклых букв:
Название: n1.bmp
Просмотров: 1152

Размер: 192.1 Кб

Получатся впуклые:
Название: n3.bmp
Просмотров: 1259

Размер: 192.1 Кб

//================================================== ============

Добавил ключ с параметром "--power".
Теперь можно регулировать "силу" нормал карты.
Однако имейте ввиду что при одновременном использовании хаймепы и нормалмепы в шейдере их значения нужно правильно соотносить.

-p=10.0
Название: n5.bmp
Просмотров: 1316

Размер: 192.1 Кб
Название: n4.bmp
Просмотров: 1189

Размер: 1.74 Мб

Последний раз редактировалось Samodelkin, 06.04.2014 в 23:55.
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо Samodelkin за это полезное сообщение:
ABTOMAT (05.04.2014), ARA (05.04.2014), impersonalis (05.04.2014), pax (07.04.2014), SBJoker (05.04.2014), St_AnGer (07.04.2014)