1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "Unreal Engine", создана пользователем Makadebinesi, 10 мар 2015.

Модераторы: logosman
  1. Makadebinesi

    Makadebinesi Активный участник

    С нами с:
    24.01.2013
    Сообщения:
    38
    Симпатии:
    3
    Баллы:
    7
    у меня на модели какая то беда с ушами, кто знает в чём проблема? В мае всё отлично отображается, в Unreal же загружается с такими обводками и везде кроме майи такие обводы, в чём проблема? Если что нормал мапа нормальных цветов, не знаю почему в субстансе так отображается Untitled-1.jpg
     
  2. LucioFulci

    LucioFulci Пользователь сайта

    С нами с:
    09.10.2011
    Сообщения:
    18
    Симпатии:
    4
    Баллы:
    4
    Может ты в sRGB ее туда пихаешь?
     
  3. Makadebinesi

    Makadebinesi Активный участник

    С нами с:
    24.01.2013
    Сообщения:
    38
    Симпатии:
    3
    Баллы:
    7
    В Normal Map закидываю, или я не знаю чего то, объясните пожалуйста, в Substance designer ещё закидывал и такая же фигня
     
  4. LucioFulci

    LucioFulci Пользователь сайта

    С нами с:
    09.10.2011
    Сообщения:
    18
    Симпатии:
    4
    Баллы:
    4
    Ну я хз как в SD в UE4 вроде как надо вырубать галку sRGB у нормалок
     
  5. Makadebinesi

    Makadebinesi Активный участник

    С нами с:
    24.01.2013
    Сообщения:
    38
    Симпатии:
    3
    Баллы:
    7
    а где она отключается, пару дней только EU4 использую?
     
  6. LucioFulci

    LucioFulci Пользователь сайта

    С нами с:
    09.10.2011
    Сообщения:
    18
    Симпатии:
    4
    Баллы:
    4
    Дабл клик по нормалке там сбоку в опциях увидишь
     
    Makadebinesi нравится это.
  7. Legionaire

    Legionaire Мастер

    С нами с:
    24.03.2013
    Сообщения:
    241
    Симпатии:
    44
    Баллы:
    144
    Maya работает в пространстве openGl. Unreal in DirectX.
    проще говоря инвертируй зеленый канал своей нормалки.
     
    Makadebinesi нравится это.
  8. Makadebinesi

    Makadebinesi Активный участник

    С нами с:
    24.01.2013
    Сообщения:
    38
    Симпатии:
    3
    Баллы:
    7
    Огромное спасибо за помощь, инверсия помогла, а с нормалями в UE4 ещё нет, дело времени!)
     
  9. Cryunreal

    Cryunreal Знаток

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

    Makadebinesi Активный участник

    С нами с:
    24.01.2013
    Сообщения:
    38
    Симпатии:
    3
    Баллы:
    7
    ОО, круто, спасибо, а как этот тангенс спейс смотреть? В Maya если ставить не тангенс то получается вот такая радужная карта нормалей, она как то уж сильно тёмным делает объект, и при этом мне показалось, что точнее передаёт форму
     

    Вложения:

    • NORMAL_02.jpg
      NORMAL_02.jpg
      Размер файла:
      188,9 КБ
      Просмотров:
      494
  11. Legionaire

    Legionaire Мастер

    С нами с:
    24.03.2013
    Сообщения:
    241
    Симпатии:
    44
    Баллы:
    144
    Какое отношение имеет просчет в пиксельном шейдере бинормалей для OpenGl и DirectX к вертексному шейдеру?
    читаем за +У и -У для правосторонних и левосторонних движков.

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


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

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

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

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



     

    Вложения:

    Последнее редактирование: 13 мар 2015
    Makadebinesi нравится это.
  12. Cryunreal

    Cryunreal Знаток

    С нами с:
    15.03.2012
    Сообщения:
    25
    Симпатии:
    45
    Баллы:
    65
    фишка в том, что не все додумываются ортонормировать базис тангент спейса в пиксельном шейдере, все только в вершинном это делают потому что так привыкли и не думают что как то иначе можно. На данный момент я знаю только 4 софта которые это делают: Marmoset 2, 3D-Coat, Xnormal'овский предпросмоторщик, Unigine. В их рендерах если запечь карту нормалей на лоупольный кубик с совпадающим TS то все будет выглядеть просто идеально, можете проверить на мармосете, но не забудьте поставить там TS Maya если в Maya запекали. Всякие там методы делать разрывы UV по жестким ребрам это все костыли из за того что TS не просчитывали раньше никогда в пиксельном шейдере и до сих пор мало кто так делает. Уж про это я знаю, участвовал в разработке этой штуки в Coat, Unity и Unigine, не просто из начитанных статей с интернетов это беру.
     
    Makadebinesi нравится это.
  13. Legionaire

    Legionaire Мастер

    С нами с:
    24.03.2013
    Сообщения:
    241
    Симпатии:
    44
    Баллы:
    144
    насчет костылей и насколько оправдан перерасчет в пиксельном - проблема то нарастает по отходу от кубика. непланарные полики, сложные модели, количество текселей ( компенсация не перепеклась - мало пикселей на данном шеле).
    ну и запись сдвоенных вершин в месте разрыва ювишки. В нынешних версиях это улучшено и визуально не так заметно. но есть трабл с бликом на месте шва
    http://prntscr.com/5ckjut. (1 - шов хард. 2 шов софт)
    кстати в мармосете эта ошибка еще меньше , но присутствует. так что излечить до конца не удалось. Я в разработке не участвовал и познания скорее теоретические в этом вопросе, настолько насколько мне требуется для производства контента, но логика подсказывает, что учитывая все перечисленные факторы, наверно поэтому и не считают в пиксельном шейдере - нагрузка + сложность модели(значительные ошибки шейдинга) + тексели( не хватает пикселей для компенсации)
     
    Makadebinesi нравится это.
  14. Cryunreal

    Cryunreal Знаток

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

    Зак_Рено Активный участник

    С нами с:
    22.10.2013
    Сообщения:
    21
    Симпатии:
    2
    Баллы:
    9
    Всем привет!

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

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

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

    [​IMG]


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

    [​IMG]


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

    [​IMG]

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

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

    [​IMG]


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

    [​IMG]


    Запекаем:

    [​IMG]

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

    [​IMG]


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

    [​IMG]


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

    [​IMG]


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

    [​IMG]


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

    [​IMG]

    [​IMG]

    [​IMG]
     
    Последнее редактирование: 3 ноя 2015
Модераторы: logosman

Поделиться этой страницей