Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Система VTK

Глава 24 из 1 тома книги "Архитектура приложений с открытым исходным кодом".

Оригинал: VTK, глава из книги "The Architecture of Open Source Applications" том 1.
Автор: Berk Geveci и Will Schroeder
Дата публикации: 2012 г.
Перевод: Н.Ромоданов
Дата перевода: июль 2013 г.

Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.

Visualization Toolkit (VTK) является широко используемой системой программного обеспечения для обработки и визуализации данных. Она используется в научных вычислений, анализе медицинских изображений, вычислительной геометрии, рендеринге, обработке изображений и в информатике. В этой главе мы приводим краткий обзор VTK, в том числе некоторые из основных шаблонов проектирования, которые делают VTK успешной системой.

Чтобы действительно разобраться с системой программного обеспечения, важно не только понять, какие проблемы она решает, но также и оценить определенный пласт культуры, в котором она возникла. В случае VTK программное обеспечение было якобы разработано как система 3D визуализации научных данных. Но культурный контекст, в котором оно возникло, добавляет еще достаточно длинную предысторию к его существованию, а также помогает объяснить, почему программное обеспечение было разработано и развернуто именно так, как это было сделано.

В те времена, когда система VTK была задумана и написана, ее первые авторы (Уилл Шредер - Will Schroeder, Кен Мартин - Ken Martin и Билл Лоренсен - Bill Lorensen) были исследователями в научно исследовательском отделении GE Corporate R&D. Мы активно вкладывали свои усилия предшествующую систему, известную как LYMB, который была реализована на языке C в среде, похожей на среду Smalltalk. Хотя в то время это была отличная система, мы, как исследователи, при попытке продвижения нашей работы были разочарованы возникновением двух основными препятствий: 1) проблемой лицензирования и 2) тем, что использовалось нестандартное, проприетарное программное обеспечение. Лицензирование стало проблемой из-за попыток распространять программное обеспечение за пределами GE, что было почти невозможно из-за необходимости привлечения только корпоративных юристов. Во-вторых, даже если бы мы были развертывали программное обеспечение внутри GE, многие из наших клиентов отказались бы от специального изучения пропроетарной нестандартной системы, поскольку усилия, затрачиваемые работником на ее освоение, становились напрасными как только работник покидал компанию, а также поскольку в системе не было поддержки широко распространенного стандартного набора инструментальных средств. Поэтому, в конечном итоге, основной мотивацией для создания VTK была разработка открытого стандарта, или платформы для совместной работы, с помощью которой мы могли бы легко передавать новые технологии нашим клиентам. Таким образом, выбор для системы VTK лицензии с открытым исходным кодом был, вероятно, самым важным проектным решением, которое мы приняли.

Образцовым решением, как потом оказалось, был окончательный выбор, сделанный авторами, безвозмездной разрешительной лицензии (то есть, лицензии BSD, а не лицензии GPL) и, в конечном счете, позволило оказывать услуги и консалтинг на платной основе, что потом стало деятельностью фирмы Kitware. Тогда, когда мы принимали решение, нас больше всего интересовало уменьшение барьеров для сотрудничества с учеными, научно-исследовательскими лабораториями и коммерческими структурами. С того момента мы обнаружили, что во многих организациях избегают пользоваться безвозмездными лицензиями из-за того потенциального ущерба, который они могут нанести. На самом деле мы утверждаем, что безвозмездные лицензии делают многое для того, чтобы замедлить использование программного обеспечения с открытым исходным кодом, но, это аргументом для другой ситуации. Дело в следующем: одно из основных проектных решений, касающееся любых систем программного обеспечения, является выбор авторских лицензии. Важно рассмотреть цели проекта, а затем соответствующим образом решить проблему лицензирования.

24.1. Что такое VTK?

Система VTK была первоначально задумана как система визуализации научных данных. Многие их тех, кто не связан с вопросами визуализации, наивно считают визуализацию некоторым видом геометрического рендеринга: изучение виртуальных объектов и взаимодействия с ними. Хотя это действительно часть визуализации, в общем визуализация данных включает в себя весь процесс преобразования данных в сенсорное представление, обычно - в изображения, но также включает в себя тактильные, слуховые и другие виды представлений. Формируемые данные содержат не только геометрические и топологические конструкции, в том числе и такие абстракции, как разложение на сеточные или другие сложные пространственные элементы, но атрибуты основной структуры, например, скалярные значения (например, температуру или давление), векторы (например, скорость), тензоры (например, напряжений и деформаций), а также такие атрибуты рендеринга, как нормали к поверхности и текстурные координаты.

Следует отметить, что данные, представляющие пространственно-временную информацию рассматривается, как правило, как часть научной визуализации. Однако есть более абстрактные формы данных, такие как демографические данные по рынкам, веб-страницы, документы и другая информация, которая может быть представлена только через абстрактные (т.е. не пространственные-временные) отношения, такие как неструктурированные документы, таблицы, графики и деревья. Эти абстрактные данные, как правило, обрабатываются с помощью методов, относящихся к визуализации информации. Благодаря сообществу, система VTK теперь способна обрабатывать научные данные и осуществлять визуализацию информации.

В качестве системы визуализации, роль VTK состоит в получении данных в этой форме и превращении их, в конечном итоге, в формы, которые воспринимаемые сенсорным аппаратом человека. При этом одним из основных требований системы VTK является ее способность создавать конвейеры с потоками данных, через которые можно пропустить, обработать, представить и в конечном счете визуально отобразить данные. Поэтому этот инструментальный набор должен был с архитектурной точки зрения представлять собой гибкую систему и это было отражено на многих уровнях проекта. Например, мы разработали систему специального назначения VTK в виде инструментального средства со многими сменными компонентами, которые можно объединять для обработки широкого спектра данных.


Продолжение статьи: Архитектурные особенности