Render.ru

Карты нормалей

Makadebinesi

Активный участник
Рейтинг
7
#1
у меня на модели какая то беда с ушами, кто знает в чём проблема? В мае всё отлично отображается, в Unreal же загружается с такими обводками и везде кроме майи такие обводы, в чём проблема? Если что нормал мапа нормальных цветов, не знаю почему в субстансе так отображается
Untitled-1.jpg
 

Makadebinesi

Активный участник
Рейтинг
7
#3
В Normal Map закидываю, или я не знаю чего то, объясните пожалуйста, в Substance designer ещё закидывал и такая же фигня
 

LucioFulci

Пользователь сайта
Рейтинг
4
#4
Ну я хз как в SD в UE4 вроде как надо вырубать галку sRGB у нормалок
 

Legionaire

Мастер
Рейтинг
155
#7
Maya работает в пространстве openGl. Unreal in DirectX.
проще говоря инвертируй зеленый канал своей нормалки.
 

Makadebinesi

Активный участник
Рейтинг
7
#8
Огромное спасибо за помощь, инверсия помогла, а с нормалями в UE4 ещё нет, дело времени!)
 

Cryunreal

Мастер
Рейтинг
98
#9
Причем тут вообще OpenGl и DirectX?=DDD y+ или y- не зависит от API, людей с толку сбиваете... Надо понимать что в движках шейдера продублированы 2 раза на HLSL под винду и GLSL ради мультиплатформенности, как напишешь шейдера такой Y и будет! В unreal Y- используется, как в 3ds-max например. В Maya используется Y+, как в юнити например. Нужно еще кое что уточнить, запеченная карта нормалей вообще где либо всегда будет выглядеть с искажениями в Unreal 4 из за того, что тангент спейс у анрила какой то свой, который вообще никто больше не использует... Легко проверяется на запекании хайпольного кубика на лоупольный со сглаженными нормалями. Это будет выглядеть в Unreal 4 криво. Обращайте внимание на это, старайтесь запекать там, где тангент спейс максимально совпадает с Unreal 4
 

Makadebinesi

Активный участник
Рейтинг
7
#10
ОО, круто, спасибо, а как этот тангенс спейс смотреть? В Maya если ставить не тангенс то получается вот такая радужная карта нормалей, она как то уж сильно тёмным делает объект, и при этом мне показалось, что точнее передаёт форму
 

Вложения

Legionaire

Мастер
Рейтинг
155
#11
Какое отношение имеет просчет в пиксельном шейдере бинормалей для OpenGl и DirectX к вертексному шейдеру?
читаем за +У и -У для правосторонних и левосторонних движков.

http://netlib.narod.ru/library/book0052/ch07_02.htm
В подтверждении разности касательных бинормалей -
https://forum.allegorithmic.com/index.php?topic=504.0
Если считать бинормали непосредственно в шейдере с учетом нормалки, у вас ляжет видеокарта при просчете множества мешей.
Нужно еще кое что уточнить, запеченная карта нормалей вообще где либо всегда будет выглядеть с искажениями в Unreal 4 из за того, что тангент спейс у анрила какой то свой, который вообще никто больше не использует..
для этого даже эпики помоему рекомендуют экспортировать в ФБХ и импортировать тангенсы и бинормали из приложения в котором запекалась модель. Экспорт из майки или макса в SBM формат позволяет в Хнормале выпечь карту нормали с учетом тангенсов и бинормалей вертексов, таким образом минимизировав артефакты сглаживания.
Легко проверяется на запекании хайпольного кубика на лоупольный со сглаженными нормалями
Несусветная глупость так поступать. ребра по которым сделан юви разрез должны быть жесткими. движок детачит эти эйджи, поэтому с накинутой картой нормали на которой нет компенсации разрыва уже будет баг.
Unreal отлично работает с mikktspace если следовать правилам и рекомендациям.


Makadebinesi, это карта нормалей либо в собственном , либо в мировом пространствах. использовать можно, но накладно по ресурсам.
+ недостаток в том что нельзя зеркалить меш.

несколько рекомендаций -
1 всегда ребра по которым сделан разрез юви, делайте жесткими. остальные софт.
при ошибках шейдинга на деталях которые занимают мало места на юви делайте разрезы и жесткие ребра. мало пикселей для компенсации. За швы не стоит переживать . карта нормали компенсирует эти места и видно их не будет. Нормали после этого нужно залочить, чтобы при экспорте\импорте ничего не сломалось.
К сообщению прикреплен скрипт для Майки который назначает софт\хард по границам ювишелов автоматом

2Лучше пользоваться xNormal с его форматом SBM который уже формирует кейдж и позволяет учитывать бинормали вершин при выпечке.

3. при импорте в Unreal не пересчитывайте бинормали, а включите галки импортировать из FBX.из майки при экспорте в фбх включите.



 

Вложения

Последнее редактирование:

Cryunreal

Мастер
Рейтинг
98
#12
фишка в том, что не все додумываются ортонормировать базис тангент спейса в пиксельном шейдере, все только в вершинном это делают потому что так привыкли и не думают что как то иначе можно. На данный момент я знаю только 4 софта которые это делают: Marmoset 2, 3D-Coat, Xnormal'овский предпросмоторщик, Unigine. В их рендерах если запечь карту нормалей на лоупольный кубик с совпадающим TS то все будет выглядеть просто идеально, можете проверить на мармосете, но не забудьте поставить там TS Maya если в Maya запекали. Всякие там методы делать разрывы UV по жестким ребрам это все костыли из за того что TS не просчитывали раньше никогда в пиксельном шейдере и до сих пор мало кто так делает. Уж про это я знаю, участвовал в разработке этой штуки в Coat, Unity и Unigine, не просто из начитанных статей с интернетов это беру.
 

Legionaire

Мастер
Рейтинг
155
#13
насчет костылей и насколько оправдан перерасчет в пиксельном - проблема то нарастает по отходу от кубика. непланарные полики, сложные модели, количество текселей ( компенсация не перепеклась - мало пикселей на данном шеле).
ну и запись сдвоенных вершин в месте разрыва ювишки. В нынешних версиях это улучшено и визуально не так заметно. но есть трабл с бликом на месте шва
http://prntscr.com/5ckjut. (1 - шов хард. 2 шов софт)
кстати в мармосете эта ошибка еще меньше , но присутствует. так что излечить до конца не удалось. Я в разработке не участвовал и познания скорее теоретические в этом вопросе, настолько насколько мне требуется для производства контента, но логика подсказывает, что учитывая все перечисленные факторы, наверно поэтому и не считают в пиксельном шейдере - нагрузка + сложность модели(значительные ошибки шейдинга) + тексели( не хватает пикселей для компенсации)
 

Cryunreal

Мастер
Рейтинг
98
#14
в том и прикол что запеч на лоупольный кубик со сглаженными нормалками (по максовки одной группой сглаживания) это одна из самых трудных ситуаций. Труднее будет если углы будут не 90 гразусов, а например 30, но и в таком случае все будет работать как надо. Производительность не падает от этого на современных вижеокартах, так как это очень малозатратная операция для современного шейдинга. Вся проблема только в том, что это мало кто использует. В Unity как раз человек который писал шейдера PBR для 5 версии (Renaldaz), не смотря на свой опыт работы в этом вообще не понимал зачем нужно ортонормировать тангент спейс в пиксельном шейдере, типо всегда же в вершинном только делали и вроде как хватало, в результате я попросил главного разработчика 3D-Coat помочь Unity с правильным отображением нормалей и все получилось, там делов было 15 минут. Правда не знаю осталось у них это в релизной версии или нет, у юнити очень сложно все с малейшими изменениями... А если по делу, то автору статьи просто нужно знать что бывают Y+ и Y- нормали, отличаются они просто инвертированием зеленого канала. На скриншоте именно этот артефакт присутствует. Для органики этого знания достаточно)) все эти примудрости с TS и стыками на UV в основном нужны для хардсурфейсного моделирования. И еще да srgb тыкать туда сюда, это тоже может раломать отображение нормалмапы еще как.
 

Зак_Рено

Активный участник
Рейтинг
9
#15
Всем привет!

Я не знаком с техническими примудростями сложных просчетов видеокарт и спицифики программного устройства движков, поэтому я не буду говорить об этом. Я лишь поделюсь своим способом создания нормала для игрового контента UE 4 с помощью Blender. Сразу скажу что я никогда не заморачивался на счет стыков и прочих костылей с ребрами, а что такое TSя вообще не знаю ))), но при этом я знаю что у Makadebinesi проблема не только с инвертированным зеленым каналом.

На примере покажу весь процесс. Я не делаю разницы между hard surface моделированием и персонажкой, в обоих случаях нормал запекаю одинаково, а развертка вообще не важна.

Допустим у нас есть какая то техническая деталь, приспособление, в общем hardsurface-ная штука), вот что я смоделил для примера:




Сделал лоуполи с ужасной сеткой:




И такую же ужасную развертку:



С сечениями на самых видных местах)).

Для запекания выставляем одну группу сглаживания:




И, добавляем модификатор Triangulate на нашу лоуполи (как раз наличие четырехугольных полигонов придает запеченному нормалу такой «покареженый» вид, нужно убедиться что все поделено на трианглы):




Запекаем:



Вот что у меня получилось:




Экспортируем модель ( с одной группой сглаживания):




Имортируем в Unreal:




Инвертируем зеленый канал у карты нормалей в Unreal:




Смотрим что получилось:





 
Последнее редактирование:
Сверху