Почему съёмка приходит набок
Широко используемых соглашений об осях всего несколько, и каждый инструмент захвата или рендеринга выбрал своё. COLMAP и OpenCV — RDF: x вправо, y вниз, z вперёд. glTF, three.js и SPZ — RUB: x вправо, y вверх, z назад. Unity — RUF, левосторонняя. Blender — RFU, Z вверх. Unreal — FRU, Z вверх и левосторонняя.
Перенесите файл между двумя из них без конвертации, и он придёт набок, вверх ногами или зеркально.
Что упускает большинство конвертеров
Сплат — не точка. Правильная конвертация означает поворот трёх вещей:
- позиций — это делают все
- кватерниона поворота каждого сплата — это делает большинство
- сферических гармоник — это не делает почти никто
Пропустите третье, и геометрия будет выглядеть правильно, а зависящее от взгляда затенение останется привязанным к старым осям: блик, который скользил по поверхности, когда вы проходили мимо, поедет в обратную сторону. Этот инструмент поворачивает полосы сферических гармоник вместе с геометрией, используя матрицы, решённые из того же базиса, которым вычисляется цвет.
Зеркала
Три из возможных преобразований меняют хиральность — определитель матрицы равен −1. Зеркало не является поворотом и не записывается кватернионом сплата. Позиции и масштабы получаются точными; ориентация каждого сплата несёт лишь вращательную часть. Когда так происходит, инструмент говорит об этом заметно, а не отдаёт сцену, которая рендерится вывернутой наизнанку.
Здесь же
- Равномерный масштаб — позиции и размеры сплатов вместе, форма съёмки сохраняется. Метры в сантиметры или произвольный масштаб обучения.
- Центрировать в начале координат — большинство движков ставят импортированный ассет в сохранённое начало координат, а у съёмки оно там, где его оставила реконструкция.
«До» и «после» показаны рядом, так что неверный выбор виден сразу. Всё работает в браузере.
Tiny Online Tools







