Что ломается в риге и где именно
Модель с ригом, которая прекрасно выглядит в одном просмотрщике и разлетается в другом, почти никогда не страдает от проблемы с мешем. У неё проблема со скиннингом, а проблемы скиннинга живут в трёх местах: иерархия костей, веса скиннинга и обратные матрицы привязки. Этот инструмент читает все три прямо из файла.
Количество влияний
Каждая вершина привязана к некоторому числу костей. Конвейеры реального времени ограничивают это число сверху — четыре стало почти всеобщим пределом, а некоторые мобильные и WebGL-пути предпочитают два. Вкладка «Влияния» даёт гистограмму: сколько вершин используют одну кость, сколько две, три, четыре и сколько вообще не несут весов.
Последняя группа важнее всех. Вершина, у которой все веса нулевые, схлопывается в позицию привязки в тот же момент, когда применяется скиннинг, — это выглядит как разорванный полигон или шип, улетающий вдаль. В позе привязки этого не видно, а на первом же кадре анимации не заметить невозможно.
glTF умеет объявлять больше четырёх влияний на вершину с помощью дополнительных наборов JOINTS. Загружает их почти никто. Если файл так делает, инструмент об этом скажет: значит, деформация, которую вы утвердили в пакете авторинга, — не та деформация, которую увидят все остальные.
Кости, которые ничего не делают
Кость, не влияющая ни на одну вершину, всё равно занимает место в uniform-буфере скиннинга и всё равно обновляется каждый кадр. Целые цепочки пальцев регулярно переживают экспорт, тогда как все вершины кисти привязаны к запястью. Вкладка «Кости» показывает число затронутых вершин и суммарный вес по каждой кости, так что мёртвые кости сразу оказываются в самом низу.
Обратные матрицы привязки
Каждый сустав хранит матрицу, отменяющую его привязочное преобразование. Проверки здесь конкретные: есть ли по одной матрице на кость, нет ли среди них необратимых или заполненных NaN и — самое полезное — даёт ли мировая матрица кости, умноженная на её обратную матрицу привязки, единичную матрицу? Должна давать, если файл сохранён в позе привязки. Большое отклонение допустимо, но именно на него нужно смотреть первым делом, когда персонаж деформируется так, будто его сложили пополам.
Имена и корни
Повторяющиеся имена костей в glTF законны и смертельны для ретаргетинга: любая система ретаргетинга обращается к костям по строке. Больше одной корневой кости в одном скелете обычно означает ошибку экспорта. Оба случая помечаются.
Приватность по устройству
Разбор целиком выполняется в вашем браузере. Ничего не загружается на сервер, поэтому невыпущенные персонажи и клиентские риги под NDA остаются на вашей машине.
Tiny Online Tools







