Upload
tatyanazaxarova
View
116
Download
5
Embed Size (px)
DESCRIPTION
Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования трехмерных объектов на базе триангулированных сеток.
Citation preview
Изучение проблемы: перенос Си++
библиотек для работы с облаками
точек итриангулированными сетками
на 64-битную платформу
Автор: Евгений Рыжков
Дата: 15.01.2009
Аннотация
Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования
трехмерных объектов на базе триангулированных сеток.
Введение
Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования
трехмерных объектов на базе триангулированных сеток.
Для этой цели она использует собственную библиотеку компонентов Leios Components. Когда
компании E.G.S. S.r.l. понадобилось выпустить 64-битную версию своих компонентов, она
обратилась к ООО "СиПроВер" как к компании, специализирующейся на разработке анализаторов
кода для 64-битных и параллельных приложений.
Библиотека компонентов Leios Components
Библиотека компонентов Leios Components представляет собой набор различных библиотек:
1. Программный интерфейс для работы с облаками точек и триангулированными сетками.
2. Библиотека подгонки поверхностей.
3. Библиотека для обработки граней и ребер.
Общий объем исходного кода составляет 13 мегабайт (440 000 строк кода), решение состоит из
нескольких десятков проектов. Очевидно, что перенос такого объема кода на 64-битную систему
вручную представляется затруднительным, особенно учитывая сложность математических
алгоритмов.
Для того чтобы представить себе тип кода, который содержится в библиотеке, достаточно
посмотреть основные возможности трех указанных компонентов.
Программный интерфейс для работы с облаками точек и
триангулированными сетками
• Библиотека содержит процедуры импорта/экспорта облаков точек и триангулированных
поверхностей (форматы ASCII, STL, PLY, OBJ, VRML и собственный формат Leios RVE).
• Сбор данных о сетки
• Элементарные операции редактирования сетки.
• Операции выбора облаков точек и триангулированных поверхностей.
• Фильтрация облаков точек, подавление шума, сглаживание, офсет.
• Триангуляция облаков точек.
• Восстановление триангулированной сетки, заполнение отверстий, сглаживание.
• Прореживание и перестройка триангулированной сетки.
• Построение сечений и разбиение триангулированной поверхности с использование
плоскости.
• Создание плоских, цилиндрических или сферических поверхностей из частей сетки.
• Соединение нескольких облаков точек или триангулированных сеток в единый объект.
• Визуализация облака точек и триангулированной поверхности с помощью библиотеки
OpenGL.
• Регистрация триангулированных поверхностей или облаков точек.
• Процедуры псевдо трехмерной триангуляции (2.5D).
• Триангуляция облаков точек внутри заданного внешнего контура.
• Использование временных файлов для осуществления редактирования больших облаков
точек в 32 битной среде.
• Триангуляция между двумя ломаными линиями.
• Процедура пластической деформации самопересечений сетки.
• Процедура пластической деформации пересечения ломаных линий двух сеток.
• Процедура сглаживания ломаных линий и уменьшения размера.
• Процедура пластической деформации поперечного сечения сетки через две точки на
сетке.
• Процедуры импорта-экспорта с поддержкой координат центра масс с двойной точностью.
• Процедура автоматического объединения объектов.
Библиотека подгонки деталей
Это расширение библиотеки для управления необработанными NURBS поверхностями при
использовании подгонки.
• Спецификация четырехгранных конфигураций на триангулированной сетке.
• Автоматическая подгонка поверхностей с автоматической коррекцией NURBS кривыми.
Библиотека обработки граней и ребер
Эта библиотека расширения осуществляет:
• Автоматическое выделение линий скруглений (кривых граней, центральной кривой сетки,
кривых ребер).
• Разбиение сетки на участки без участия скруглений, которые могут быть подогнаны к
необработанным NURBS поверхностям.
Необходимость миграции библиотеки компонентов на 64-битную
платформу Компания E.G.S. S.r.l. занимается разработкой своих решений с 2002 года, когда в Италии был
открыт ее офис. С самых ранних этапов разработки компании были ориентированы на
высокопроизводительные настольные системы.
Минимальный компьютер, на котором работает решение E.G.S. S.r.l. имеет следующую
конфигурацию (по данным на начало 2008 года):
• Процессор: Intel Core Duo T2300 or higher, AMD X2 3800+ or higher.
• Оперативная память: 2GB
• Графическая карта: Nvidia Quadro / 6x series or higher, ATI/AMD "x" series / FireGL or higher.
• Операционная система: Windows XP Professional SP2 or higher, Windows Vista
В связи с ростом обрабатываемых объемов данных, разумеется, ограничения на оперативную
память 32-битной версии (не более 3 гигабайт) оказались недостаточными для серьезных
проектов. Поэтому необходимость выпуска 64-битной версии не вызывала вопросов у
руководства E.G.S. S.r.l.. Однако под вопросом была возможность быстрого выпуска подобной
версии. Вручную просмотреть указанный объем кода практически невозможно.
Участие компании ООО "СиПроВер" в миграции библиотеки
компонентов
На помощь пришли специалисты компании ООО "СиПроВер", которые использовали для
миграции кода на 64-битную платформу анализатор кода Viva64.
Программный продукт Viva64 обеспечивает диагностику ошибок, специфичных для 64-битных
Windows-приложений. Viva64 представляет собой lint-подобный статический анализатор Си/Си++
кода. Области применения Viva64: проверка новых 64-битных программных решений, помощь в
переносе 32-битного программного кода на 64-битную систему, оптимизация кода с учетом
особенностей 64-битной архитектуры.
Используя Viva64 специалисты ООО "СиПроВер" обеспечили быструю миграцию библиотеки
компонентов, обнаружив и исправив проблемные места в исходном коде библиотеки. В
результате в процессе миграции такой большой и сложной библиотеки были задействованы всего
лишь несколько человек.
Миграция кода с использованием Viva64 позволила сэкономить много времени, которое бы
пришлось затратить на ручной просмотр кода. А главное не допустить новых программных
ошибок, которые возможны в процессе миграции на новую платформу.
Основные проблемные моменты, выявленные в процессе анализа кода:
• особенности вычислительных алгоритмов при обработке больших объемов данных;
• работа с файлами большого размера;
• обработка 3d-моделей, содержащих большое количество треугольников (чем больше
треугольников, тем точнее модели);
• работа подсистемы лицензирования;
Все обнаруженные с помощью анализатора Viva64 проблемы были исправлены, в результате чего
64-битная версия Leios Studio была выпущена в срок с высоким качеством.
E.G.S. S.r.l. - частная компания, миссией которой является разработка программ и решений для
развитой обработки результатов 3D сканирования. Офисы компании были открыты в Италии и в
Москве в 2002 году. Сайт: http://www.egsolutions.com.