heightmap->normalmap tool
Вложений: 10
В общем, я в процессе работы над движком подумал что неплохо было бы иметь свой конвертер карт высот в карты нормалей.
Я не художник поэтому не хотел связываться с фотошопами и плагинами для них. К тому же у меня всё автоматизировано на батниках поэтому хотелось иметь легкую тулзу с командной строкой. Еще одним недостатком найденных мной в инете тулз была невозможность менять порядок координат в карте нормалей (и приходилось менять в шейдере, что является неправильным) и к тому же имелось много готовых карт нормалей, но с разным порядком координат, и было бы неплохо их конвертировать в один формат. Поэтому я сделал такую тулзу. Вложение 20349 Вложение 20355 Основные фичи: * Генерация карт нормалей (с установленным форматом координат) из карт высот. * Конвертация карт нормалей из одного формата координат в другой. * Командная строка. * Работа в DIB (независимым от девайса или gapi форматом). * Не требуется сторонних библиотек, а значит код в будущем легко портировать. Однако от сюда следует, что пока поддерживается только 24 битный bmp - я еще не написал коды для работы с другими форматами изображения. С другой стороны это не является задачей этой тулзы. Это хелп: Код:
>hm2nm.exe [keys]... Вложение 20343->Вложение 20344 Генерация нормали в текущем текселе происходит с учетом соседних текселей изображения карты высот. Ключом -t можно генерировать изображение для тайла. Например есть такая карта высот: Вложение 20345 Если сгенерировать без тайла будет: Вложение 20346 А если с тайлом, то будет: Вложение 20347 Обратите внимание на крайние тексели изображения (увеличьте с помощью чего-нибудь) - если изображения замостить то будет плавный переход. Выходное изображение можно отформатить с помощью -f=... По умолчанию идет обычный формат pxpypz - подходит как раз для моих шейдеров. Но можно поменять как порядок так и знак: -f=nynxpz или например -f=pxpxpx Ключ -c говорит только переформатировать одну нормал карту в другую. Например если использовать -f=nxnypz То из выпуклых букв: Вложение 20344 Получатся впуклые: Вложение 20348 //================================================== ============ Добавил ключ с параметром "--power". Теперь можно регулировать "силу" нормал карты. Однако имейте ввиду что при одновременном использовании хаймепы и нормалмепы в шейдере их значения нужно правильно соотносить. -p=10.0 Вложение 20354 Вложение 20353 |
Ответ: heightmap->normalmap tool
Для этих целей самое наверное лучшее решение - старый добрый Crazy bump. Есть батчинг. Кушает даже psd формат. Генерит нормалмапы из фото, хейтмапы из нормалмап, нормалмапы из хейтмап и спекуляр в нагрузку.
|
Ответ: heightmap->normalmap tool
Samodelkin, покажи как твой генератор работает с более сложными хейтмапами, более объёмными и жирными формами.
Много видел тулз, которые способны на нормалмапу аля небольшой рельеф - но только у крейзи бампа хорошая сочная объёмность с учётом крупных форм. Посмотри крейз - там отдельно настраивается интенсивность разного размера объёмностей - думаю, он даунсемплит хейт и считает нормали из версий разного разрешения, потом их совмещает друг с другом в одну (догадки). |
Ответ: heightmap->normalmap tool
crazybump я посмотрю.
Тут же дело в том что я вообще ничего подходящего не нашел - если крези бамп подойдет то и нефиг велосипеды строить. Цитата:
Я тогда добавлю параметр силы и будет сочней если кому надо. Вычисления идут в 3д так что никакого ограничения на сочность и рельефность нет - главное чтобы формат изображения давал возможность это закодировать. Опять же от шейдера зависит, он может работать и с 48 битной float16 текстурой. Тут такой момент: отношение данных в нормалпаме и хаймапе должно быть однозначным. Я взял по умолчанию размер текселя 1.0 и диапазон высоты хаймепы тоже 1.0, поэтому если в хаймепе два текселя черный и белый рядом, то нормаль между ними будет 45 градусов. Дальше уже в шейдере можно одним и тем же коэффициентом двигать сочность хаймепы и нормалмепы и рельефность будет правильно меняться. Просто я это всё к тому что в этой тулзе лучше не добавлять коэффициентов ,а делать это в шейдере где есть все данные о геометрии. И да отмечу что тулза конкретно для шейдера как саппорт, и использует нормальные геометрические расчёты. Это не для дизайна где дизайнер на глаз хочет тут побольше, там поменьше и непонятно для каких целей. Тогда уж действительно лучше с нормальными графредакторами разобраться. Генерить из диффузы не обладая полными данными о источнике света и материале не совсем правильно - я такой способ не одобряю. Тоже самое спекуляра касается. Я щитаю это должен делать художник по материалам вручную. |
Ответ: heightmap->normalmap tool
(Обновил первый пост)
* Добавил ключ -p, --power - можно сделать более сочные нормали. * Чуток поправил коды загрузки изображения. (Картинки тоже в первом посте добавил внизу) Обратите внимание что картинка весьма резкая. Объясняется тем что нормал карта должна строиться по хеймэпе как есть, без всяких дополнительных параметров сглаживания как в crazybump, потому что хеймэп и нормалмэп одновременно используются в шейдере и будет некорректно если параллакс будет резкий, а освещение по нормалям сглаженное. Если хотите сглаженность то сглаживайте хеймэп. Посмотрел crazybump - он платный !!! Еще вопрос у меня такой: допустим есть у меня хайполи и лоуполи геометрия в максе и нужно снять хеймэпы и нормалмэпы (или только хеймэпы), с помощью чего лучше всего это делать? Или так вообще не делают? Тогда как? |
Ответ: heightmap->normalmap tool
Ещё есть плагин для Photoshop'а от Nvidia.
https://developer.nvidia.com/nvidia-...dobe-photoshop |
Ответ: heightmap->normalmap tool
Цитата:
Цитата:
Цитата:
|
Ответ: heightmap->normalmap tool
Цитата:
|
Ответ: heightmap->normalmap tool
Цитата:
Да и наверное батчинга у нее нет. Или ты специально выложил чтобы я НЕ делал как у них? Ок, тогда я посмотрю. |
Ответ: heightmap->normalmap tool
Цитата:
http://code.google.com/p/nvidia-text...ng_Normal_Maps |
Часовой пояс GMT +4, время: 16:58. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot