Форум

Анизотропный шейдер при нескольких материалах

20 февраля 2019 17:11
Демонстрация проблемы в приложенном файле.

Суть в следующем: Здесь 2 абсолютно одинаковых объекта цилиндра с одинаковой разверткой. У каждого имеется 2 материала. Одна из граней у обоих объектов окрашена вторым материалом. В первом материале включено tangent shading. При этом в движке blend4web левый цилиндр шейдится правильно, а правый нет.
Поиску причин я посвятил несколько дней. Оказалось, в блендере надо отсортировать грани по материалам. (Specials->Sort Mesh elements->Material).
После этого все работает правильно.
Вероятно движок считает, что в объекте сначала идут все грани для первого материала, потом для второго и т.д. Если это не так, то он ошибочно берет то ли нормали, то ли развертку от других граней.

К сожалению мой workaround не вполне удобен. Например, если у объекта имеется модификатор типа bevel, то приходится его сначала применить, а потом делать сортировку. Если сделать сортировку без применения модификатора, то после его автоприменения при экспорте порядок граней опять нарушается.
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.