Значения карты нормалей с помощью блендера-экспортера ThreeJS GLTF
Если я установлю значение ползунка "Normal" в Blender в "Geometry" для текстуры на 2.0. Я вижу нормальное значение X: 1, Y: -1, когда смотрю на объект в журнале консоли. Я что-то пропустил?
Я использую ThreeJS R97.
1 ответ
Из вашего описания "Нормальный ползунок под геометрией" я предполагаю, что вы говорите о Blender 2.79x или более ранней версии, о встроенном рендере Blender, настройках материала, где этот ползунок контролирует силу примененной карты нормалей.
Итак, пару вещей, чтобы поговорить здесь. Во-первых, экспортер glTF официально не поддерживает встроенные материалы Blender Render, и этот слайдер не подключен, как вы уже обнаружили. Усилия разработчиков для экспортера теперь сосредоточены на дополнении под названием glTF-Blender-IO, которое работает в Blender 2.79, но на самом деле поставляется предварительно установленным в Blender 2.80 Beta.
Этот аддон работает с механизмами Cycles и Eevee, использующими узел "Principled BSDF", опционально в сочетании с несколькими вспомогательными узлами, такими как "Normal Map". Итак, экспортер glTF ожидает найти карту нормалей, подключенную вот так:
Имейте в виду, что формат glTF не содержит сами узлы, но экспортер поймет это соединение и запишет карту нормалей в файл glTF вместе с опциональными картами базового цвета, металлика, шероховатости и эмиссии (через еще один отдельный узел, необходимый для эмиссии).
Но в этом плане есть небольшая складка, похоже, сила еще не подключена. Узел "Карта нормалей" Блендера содержит параметр "сила", а формат glTF содержит соответствующий параметр, называемый normalTexture.scale
что делает то же самое, но, похоже, экспортер не копирует значение из одного места в другое. Я подал на это вопрос № 241, и, надеюсь, со временем это будет исправлено.
В ThreeJS значения X: 1, Y: -1 являются преднамеренными для карты нормалей единичной силы. Три карты нормалей используют соглашение Y, отличное от формата glTF, поэтому Y намеренно переворачивается при загрузке карты норм из glTF. Таким образом, чтобы удвоить силу, вы должны установить X: 2, Y: -2. На данный момент, похоже, что присвоение этого в коде (или ручное редактирование glTF) являются единственными опциями, пока у экспортера не будет добавлена функция для копирования отсутствующего параметра силы.