Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
Изучение проблемы: перенос Си++ библиот…

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

15 Янв 2009

Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования трехмерных объектов на базе триангулированных сеток.

Введение

Итальянская компания E.G.S. S.r.l. занимается разработкой решений в области моделирования трехмерных объектов на базе триангулированных сеток.

a0036_EGS-CaseStudy_ru/image1.png

Для этой цели она использует собственную библиотеку компонентов Leios Components. Когда компании E.G.S. S.r.l. понадобилось выпустить 64-битную версию своих компонентов, она обратилась к ООО "СиПроВер" как к компании, специализирующейся на разработке анализаторов кода для 64-битных и параллельных приложений.

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

a0036_EGS-CaseStudy_ru/image2.png

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

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

Общий объем исходного кода составляет 13 мегабайт (440 000 строк кода), решение состоит из нескольких десятков проектов. Очевидно, что перенос такого объема кода на 64-битную систему вручную представляется затруднительным, особенно учитывая сложность математических алгоритмов.

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

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

  • Библиотека содержит процедуры импорта/экспорта облаков точек и триангулированных поверхностей (форматы ASCII, STL, PLY, OBJ, VRML и собственный формат Leios RVE).
  • Сбор данных о сетки
  • Элементарные операции редактирования сетки.
  • Операции выбора облаков точек и триангулированных поверхностей.
  • Фильтрация облаков точек, подавление шума, сглаживание, офсет.
a0036_EGS-CaseStudy_ru/image3.png
  • Триангуляция облаков точек.
  • Восстановление триангулированной сетки, заполнение отверстий, сглаживание.
a0036_EGS-CaseStudy_ru/image4.png
  • Прореживание и перестройка триангулированной сетки.
a0036_EGS-CaseStudy_ru/image5.png
  • Построение сечений и разбиение триангулированной поверхности с использование плоскости.
  • Создание плоских, цилиндрических или сферических поверхностей из частей сетки.
a0036_EGS-CaseStudy_ru/image6.png
  • Соединение нескольких облаков точек или триангулированных сеток в единый объект.
  • Визуализация облака точек и триангулированной поверхности с помощью библиотеки OpenGL.
  • Регистрация триангулированных поверхностей или облаков точек.
a0036_EGS-CaseStudy_ru/image7.png
  • Процедуры псевдо трехмерной триангуляции (2.5D).
  • Триангуляция облаков точек внутри заданного внешнего контура.
  • Использование временных файлов для осуществления редактирования больших облаков точек в 32 битной среде.
  • Триангуляция между двумя ломаными линиями.
  • Процедура пластической деформации самопересечений сетки.
  • Процедура пластической деформации пересечения ломаных линий двух сеток.
  • Процедура сглаживания ломаных линий и уменьшения размера.
  • Процедура пластической деформации поперечного сечения сетки через две точки на сетке.
  • Процедуры импорта-экспорта с поддержкой координат центра масс с двойной точностью.
  • Процедура автоматического объединения объектов.

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

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

  • Спецификация четырехгранных конфигураций на триангулированной сетке.
  • Автоматическая подгонка поверхностей с автоматической коррекцией NURBS кривыми.
a0036_EGS-CaseStudy_ru/image8.png

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

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

  • Автоматическое выделение линий скруглений (кривых граней, центральной кривой сетки, кривых ребер).
  • Разбиение сетки на участки без участия скруглений, которые могут быть подогнаны к необработанным NURBS поверхностям.
a0036_EGS-CaseStudy_ru/image9.png

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

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам