Первый скриншот - ортогональный TBN, второй - неортогональный со сглаживанием.
Это главный критерий. Если ортогональный TBN правильно заработал без сглаживания, значит он построен верно. Все остальные методы проверки тут не годятся.
Ага, вот. Сглаживание + ортогональный TBN убирает последние артефакты.
Последний скрин мне однозначно нравится. Но надо тестить.
Post automatically merged:
Первый скриншот - ортогональный TBN, второй - неортогональный. Оба со сглаживанием. Какой лучше?
Post automatically merged:
Мдя, забавно. Бинормаль и тангента неправильные, но после ортогонализации результат с натяжкой можно назвать приемлимым. По крайней мере эти засветы на пальцах исчезли.
Вот последняя версия. Нормаль, что характерно, я не трогал. Ортогонализация к нормали позволяет частично устранить ошибки из-за неправильного вращения в "локальное" пространство кости (хотя это не локальное пространство кости, а локальное пространство анимации - они отличаются). Это просто в моделях на дефолтных позах кости почти не вращают мешы - вот и незаметно. Но рано или поздно попадётся модель, где кость его вращает в дефолтной позе. Да хотя бы тот же разводной ключ у толстяка. Он правильно освещён?
Мдя, как ни делай, просто гадость в другом месте лезет. Ну у тебя есть теперь две версии (первая с неортогональным TBN, а вторая с ортогональным), посравнивай разные модельки. Теперь вместо засветов полезут черные пятна.
Post automatically merged:
Шов кстати лучшее доказательство ошибочности данного подхода. В хл2 TBN всегда ортогональный и никаких швов на бампе там и близко нет.
Всё, я решил эту задачку. Я почему-то был уверен, что в костях дефолтная поза не хранится, а в анимации кадры абсолютные. Нет, нифига, базовая поза сохранена в костях в виде позиции\углов эйлера, по ней можно восстановить базовую матрицу, что я и сделал. Но без вклада анимаций, естественно.
Теперь всё правильно.
Post automatically merged:
Эти значения в костях кстати прямые, из SMD, т.е. потери точности на трансформацию не будет.
А я моделькам без костей включил ортогонализацию в рамках эксперимента.
Можно конечно однокостным моделям строить TBN по старой схеме, но надо разобраться в чём причина. Я не думаю что дело именно в ортогонализации, тут что-то еще.
Post automatically merged:
2 ncuxonaT: а скинь мне своих толстяков с картой, чтоб я сразу всё проверил.
Если принудительно включить ортогонализацию TBN, то идентичный шов появляется на обоих модельках - что с костями, что без. По крайней мере теперь понятно, что сам TBN строится верно в обоих случаях. А насчёт самого шва - затрудняюсь предположить. Слишком много возможных причин.
Post automatically merged:
Заодно поудалял все промежуточные версии клиентки.
В создании ортогонализации непосредственно задействована нормаль, вот я и подумал. Я пробовал ортогонализировать в пространстве модели и в пространстве кости, по всякому пробывал - результат не меняется, шов есть во всех случаях.
Возможно просто кривая модель - там же когда-то была развесовка.
Когда модель с развесовкой по-бырому переделывают в формат без развесовки - мало ли какие артефакты могут вылезти. Ксерокс, помнится еще в 2006-м году птичъгу переделывал из хл2, голубя штоле. Так вот там такой ужас начался, этот голубь только на развесовке и держался.
Да, разделение шва на развертке не помогло. Ну и хрен с ним. Без ортогонализации норм.
Кстати, я запилил разложение лайтмапы по трем направлениям вместо делюксмапы. Типа как в УЕ. Только свет приходится в 3дмаксе запекать.
Да вот не должно быть такого эффекта. Весь цивилизованный мир давно уже юзает ортогональный TBN, а крайтек его изящно сторит в 1 кватернион (16 байт против 36 фпараное). Кстати теперь нормализация TBN в вертексном шейдере ни на что не влияет, как раньше было.
Кстати, я запилил разложение лайтмапы по трем направлениям вместо делюксмапы.