Как лучше всего использовать зеркальные карты нормалей в THREE.JS?

Зеркальные карты нормалей Three.js с перевернутым каналом

Ошибки карты нормалей видны над задней частью левого бедра

Зеркальный шов

Я использую 3dsmax 2013 (FBX 2013) с включенными касательными и бинормалями. Я также устанавливаю:

Horse_normalMap.wrapS = THREE.MirroredRepeatWrapping;

Однако кажется, что даже если перевернуть зеркальные UV-развертки обратно в исходное неперевернутое состояние (а затем перевернуть их в THREE.JS), это означает, что красный канал все еще инвертирован. Я пытался отладить касательные с помощью TangentsHelper, но, похоже, это было удалено из того, что я читал. Возможно, мне придется вернуться к использованию незеркальных ультрафиолетовых лучей, если не будет хорошего обходного пути.

Я кратко/с надеждой посмотрел на производные карты, поскольку они, казалось, предлагали выход из несоответствий, основанных на касательных; но все несколько примеров, кажется, используют одну и ту же карту смещения, а не типичные производные 2-канальные карты, о которых написано в другом месте. Я попробовал 3 разных генератора карт смещения (HP>LP), и все они дали очень шумные результаты. Кажется, нет никаких документов о том, что он ожидает, я наткнулся на открытый отчет об ошибке (извините, недостаточно представителей, чтобы опубликовать более двух ссылок), который предполагает, что это все еще открытая проблема.


person George Allan    schedule 18.04.2017    source источник
comment
Да, вернитесь к использованию незеркальных УФ. three.js не использует касательные геометрии во встроенных шейдерах. Вы можете отправить запрос на улучшение, чтобы учитывать MirroredRepeatWrapping на картах нормалей, если хотите, но спрос на эту функцию был минимальным, тем более, что есть обходной путь.   -  person WestLangley    schedule 22.04.2017
comment
Хорошо, спасибо, что сообщили мне. Это позор, так как обходной путь требует удвоения памяти текстур (если обе стороны получают свою долю пространства 0-1 UV) или (насколько я понимаю) написания собственного кода, чтобы переворачивать информацию о карте нормалей только для половины меша во время выполнения ( поэтому удваивает вызовы отрисовки, требуя назначения отдельных материалов). Я предполагаю, что это также потребует запекания текстуры рендеринга. После того, как я закончу художественные ресурсы, я могу изучить это, но я ожидаю, что это будет слишком дорого для мобильных устройств. Если у вас есть возможность, пожалуйста, ознакомьтесь с моим другим вопросом о производных картах.   -  person George Allan    schedule 24.04.2017