Transcript
Page 1: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

Изучение проблемы: перенос Си++

библиотек для работы с облаками

точек итриангулированными сетками

на 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-битных и параллельных приложений.

Page 2: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

Библиотека компонентов Leios Components

Библиотека компонентов Leios Components представляет собой набор различных библиотек:

1. Программный интерфейс для работы с облаками точек и триангулированными сетками.

2. Библиотека подгонки поверхностей.

3. Библиотека для обработки граней и ребер.

Общий объем исходного кода составляет 13 мегабайт (440 000 строк кода), решение состоит из

нескольких десятков проектов. Очевидно, что перенос такого объема кода на 64-битную систему

вручную представляется затруднительным, особенно учитывая сложность математических

алгоритмов.

Для того чтобы представить себе тип кода, который содержится в библиотеке, достаточно

посмотреть основные возможности трех указанных компонентов.

Программный интерфейс для работы с облаками точек и

триангулированными сетками

• Библиотека содержит процедуры импорта/экспорта облаков точек и триангулированных

поверхностей (форматы ASCII, STL, PLY, OBJ, VRML и собственный формат Leios RVE).

• Сбор данных о сетки

• Элементарные операции редактирования сетки.

• Операции выбора облаков точек и триангулированных поверхностей.

• Фильтрация облаков точек, подавление шума, сглаживание, офсет.

Page 3: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

• Триангуляция облаков точек.

• Восстановление триангулированной сетки, заполнение отверстий, сглаживание.

• Прореживание и перестройка триангулированной сетки.

Page 4: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

• Построение сечений и разбиение триангулированной поверхности с использование

плоскости.

• Создание плоских, цилиндрических или сферических поверхностей из частей сетки.

• Соединение нескольких облаков точек или триангулированных сеток в единый объект.

• Визуализация облака точек и триангулированной поверхности с помощью библиотеки

OpenGL.

• Регистрация триангулированных поверхностей или облаков точек.

• Процедуры псевдо трехмерной триангуляции (2.5D).

• Триангуляция облаков точек внутри заданного внешнего контура.

Page 5: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

• Использование временных файлов для осуществления редактирования больших облаков

точек в 32 битной среде.

• Триангуляция между двумя ломаными линиями.

• Процедура пластической деформации самопересечений сетки.

• Процедура пластической деформации пересечения ломаных линий двух сеток.

• Процедура сглаживания ломаных линий и уменьшения размера.

• Процедура пластической деформации поперечного сечения сетки через две точки на

сетке.

• Процедуры импорта-экспорта с поддержкой координат центра масс с двойной точностью.

• Процедура автоматического объединения объектов.

Библиотека подгонки деталей

Это расширение библиотеки для управления необработанными NURBS поверхностями при

использовании подгонки.

• Спецификация четырехгранных конфигураций на триангулированной сетке.

• Автоматическая подгонка поверхностей с автоматической коррекцией NURBS кривыми.

Page 6: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

Библиотека обработки граней и ребер

Эта библиотека расширения осуществляет:

• Автоматическое выделение линий скруглений (кривых граней, центральной кривой сетки,

кривых ребер).

• Разбиение сетки на участки без участия скруглений, которые могут быть подогнаны к

необработанным NURBS поверхностям.

Page 7: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

Необходимость миграции библиотеки компонентов на 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-битных программных решений, помощь в

Page 8: Изучение проблемы: перенос Си++ библиотек для работы с облаками точек итриангулированными сетками

переносе 32-битного программного кода на 64-битную систему, оптимизация кода с учетом

особенностей 64-битной архитектуры.

Используя Viva64 специалисты ООО "СиПроВер" обеспечили быструю миграцию библиотеки

компонентов, обнаружив и исправив проблемные места в исходном коде библиотеки. В

результате в процессе миграции такой большой и сложной библиотеки были задействованы всего

лишь несколько человек.

Миграция кода с использованием Viva64 позволила сэкономить много времени, которое бы

пришлось затратить на ручной просмотр кода. А главное не допустить новых программных

ошибок, которые возможны в процессе миграции на новую платформу.

Основные проблемные моменты, выявленные в процессе анализа кода:

• особенности вычислительных алгоритмов при обработке больших объемов данных;

• работа с файлами большого размера;

• обработка 3d-моделей, содержащих большое количество треугольников (чем больше

треугольников, тем точнее модели);

• работа подсистемы лицензирования;

Все обнаруженные с помощью анализатора Viva64 проблемы были исправлены, в результате чего

64-битная версия Leios Studio была выпущена в срок с высоким качеством.

E.G.S. S.r.l. - частная компания, миссией которой является разработка программ и решений для

развитой обработки результатов 3D сканирования. Офисы компании были открыты в Италии и в

Москве в 2002 году. Сайт: http://www.egsolutions.com.


Recommended