Как вынести реконструкцию из COLMAP
Модель COLMAP — это три двоичных файла, которые читает только софт, знающий COLMAP. А GLB открывается в Blender, «Средстве 3D-просмотра» Windows, Quick Look на macOS, Unity, Unreal, three.js, Babylon и на любой glTF-странице в интернете. Экспорт GLB — это способ показать реконструкцию тому, у кого COLMAP не установлен, или поставить её рядом с моделью, ради которой всё и делалось.
Что попадает в файл
Разрежённые точки как glTF-примитив POINTS с позициями и цветами. RGB у COLMAP в sRGB, а COLOR_0 в glTF линейный, поэтому при экспорте выполняется преобразование.
Пирамиды камер как LINES: четыре угловых луча от оптического центра, соединяющий их прямоугольник и метка на верхнем ребре, показывающая крен кадра. Направления углов берутся из настоящих внутренних параметров, поэтому широкий объектив рисует широкую пирамиду.
Настоящие glTF-камеры — по одному узлу перспективной камеры на снимок, с yfov из внутренних параметров COLMAP и верным соотношением сторон, каждая названа по своему снимку. Blender импортирует их как реальные камеры, через которые можно посмотреть, а список объектов читается как перечень ваших файлов, а не как Object.001.
Преобразование — прямым текстом
COLMAP — это RDF: x вправо, y вниз, z вперёд. glTF — это RUB: x вправо, y вверх, z назад. Каждая позиция и каждое направление конвертируются при экспорте. Именно это упущение делает столько самодельных экспортов COLMAP перевёрнутыми в Blender.
Вторая половина: COLMAP хранит позу из мира в камеру, поэтому положение камеры в мире равно −Rᵀt, а не t.
Одна оговорка, о которой стоит знать
Точечные примитивы — валидный glTF, но рисуют их не везде: «Средство 3D-просмотра» Windows и некоторые другие не показывают ничего. Blender, three.js и Babylon показывают. Если нужно что-то, что видно везде, включите объёмные маркеры.
Всё работает в браузере; реконструкция никуда не загружается.
Tiny Online Tools







