Open Inventor (Open Inventor)

Перейти к навигации Перейти к поиску
Open Inventor [by SGI]
Логотип программы Open Inventor [by SGI]
Скриншот программы Open Inventor [by SGI]
Тип 3D graphics toolkit
Написана на C++ и Java
Интерфейс Qt
Аппаратная платформа Java Virtual Machine
Последняя версия 2.1.5.10 (2003; 21 год назад (2003))
Репозиторий github.com/aumuell/open-…
Лицензия GNU Lesser General Public License[2]
Сайт oss.sgi.com/projects/inventor/

Open Inventor, первоначально IRIS Inventor, представляет собой ориентированный на использование C++ набор инструментов для объектно-ориентированного программирования трехмерной графики, разработанный SGI для программирования OpenGL на более высоком уровне абстракции. Его основными целями являются повышение удобства и эффективности работы программиста. Open Inventor существует в виде как проприетарного программного обеспечения, так и свободного программного обеспечения с открытым исходным кодом, в соответствии с требованиями Стандартной общественной лицензии GNU Lesser (LGPL), версия 2.1.

Предыстория

[править | править код]

Примерно в 1988-89 годах Вей Йен попросил Рикка Кэри возглавить проект IRIS Inventor. Их целью стало создание набора инструментов, облегчающего разработку приложений для трехмерной графики. Стратегия была основана на предпосылке, что 3D-приложения с IRIS GL разрабатываются недостаточно активно, потому что при использовании низкоуровневого интерфейса, предоставляемого IRIS GL, это занимало слишком много времени. Предполагалось, что число разработчиков можно было бы увеличить, если бы 3D-программирование было упрощено с помощью объектно-ориентированного API, что оказалось бы выигрышно для SGI. Основным принципом стал приоритет «простоты использования» перед «производительностью», и лозунг «3D-программирование для людей».

Использование

[править | править код]

OpenGL (OGL) — это интерфейс прикладного программирования низкого уровня, задачей которого принять списки простых многоугольников и обеспечить наиболее быстрое их отображение. Для использования на практике, например, для задачи «нарисовать дом», программист должен разбить объект на серию простых инструкций OGL и отправить их в движок для рендеринга. Одна из проблем заключается в том, что производительность OGL очень чувствительна к тому, как эти инструкции отправляются в систему, что вынуждает программиста тщательно отбирать данные и прорабатывать вопрос порядка отображения и фильтрации объектов, которые не должны быть отправлены, поскольку не будут видны в результирующем изображении. Даже для простых программ объём программирования для начала работы оказывается огромным.

Open Inventor (OI) был написан для решения этой проблемы и предоставляет общий базовый уровень для начала работы. Объекты могут быть разделены на подклассы из нескольких предварительно свернутых фигур, таких как кубы и многоугольники, а затем легко модифицированы в новые формы. «Мир», который нужно нарисовать, был помещен в граф сцены, управляемый OI, с системой, автоматически применяющей выборку окклюзии для объектов в графе. OI также включает в себя несколько объектов и систем контроллера для применения их на сцене, что облегчает выполнение общих задач взаимодействия. Наконец, OI также предоставил общий формат файлов для хранения «миров» и код для автоматического сохранения или загрузки мира из этих файлов. Базовые 3D-приложения с применением OpenInvertor могли быть написаны в объёме нескольких сотен строк кода, связывающего куски из набора инструментов с помощью «склеивающего» кода.

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

Примерно через год в проект Inventor проникла альтернативная философия. Вместо того, чтобы просто писать приложения на системах SGI, цель была изменена на задачу затруднить написание медленных приложений. Часть членов команды Inventor ушла, чтобы сформировать собственную группу, которая легла в основу проекта OpenGL Performer . Performer также основывался на внутреннем графе сцены, но в нём была возможность его произвольного изменения для увеличения скорости, даже отбрасывая «менее важные» объекты и полигоны, чтобы поддерживать гарантированные уровни производительности. Кроме того, Performer использовал ряд процессов для параллельного запуска задач для повышения производительности, что позволяло запускать его на нескольких процессорах. В отличие от Inventor, Performer оставался собственностью SGI, так что компания имела возможность изменять API по мере необходимости, чтобы идти в ногу с последними усовершенствованиями оборудования.

Середина 1990-х

[править | править код]

В середине 1990-х годов стало понятно, что обе системы вполне могут быть объединены, дав в результате единый высокоуровневый API, обеспечивающий как производительность, так и лёгкость программирования. SGI начала работу над еще одним проектом, нацеленным на слияние обеих, итогом стал Cosmo 3D . Однако у Cosmo был ряд практических проблем, от которых можно было избавиться перепроектированием дизайна.

В конечном итоге все эти идеи были объединены в совместном с Intel, IBM и DEC проекте OpenGL++, ставшим, по сути, «очищенной» и более «открытой» версией Cosmo 3D. SGI закончила работу над Cosmo и полностью переключилась на OpenGL++. Но работа над OpenGL++ затянулась и в конечном итоге была прекращена, после чего SGI снова попробовал с Microsoft аналогичный проект Фаренгейт, который также умер. В 1994 году SGI лицензировала Open Inventor двум сторонним разработчикам: Template Graphics Software (TGS) и Portable Graphics, но 1996 году владельцы лицензий объединились через покупку TGS компанией Portable Graphics.

Современная история

[править | править код]
Thermo Scientific Open Inventor
Логотип программы Thermo Scientific Open Inventor
Скриншот программы Thermo Scientific Open Inventor
Тип 3D data visualization SDK
Разработчик Thermo Fisher Scientific
Написана на C++ .NET Java
Интерфейс Qt
Аппаратная платформа Windows Linux macOS
Последняя версия 10.0 (Oct 10, 2018)
Репозиторий github.com/aumuell/open-…
Лицензия Proprietary commercial software (Free for non-commercial academic use)
Сайт thermofisher.com/openinventor

Open Inventor API по-прежнему широко используется для широкого спектра научных и инженерных систем визуализации по всему миру, хорошо зарекомендовав себя для эффективной разработки сложного программного обеспечения для 3D-приложений.

После многих лет работы над библиотекой в рамках TGS (теперь FEI) исключительно под частнособственнической лицензией, в августе 2000 года Inventor был перевыпущен SGI под лицензией LGPL с открытым исходным кодом. Компания SGI в настоящее время её не поддерживает, и не продемонстрировала интереса в дальнейшем развитию библиотеки. Тем не менее, она используется в MeVisLab (MeVis Medical Solutions AG и Fraunhofer MEVIS), и разработка этой её версии продолжается[3]. В 2004 году TGS была приобретена компанией Mercury Computer Systems, а в июне 2009 года предприятие снова стало независимой компанией под названием Visualization Sciences Group (VSG) Архивная копия от 31 мая 2021 на Wayback Machine . В 2012 году VSG была приобретена компанией FEI . В 2016 году компания FEI была приобретена компанией Thermo Fisher Scientific (Отдел материалов и структурного анализа), которая продолжает развивать и поддерживать Open Inventor Архивная копия от 14 марта 2022 на Wayback Machine .

Незадолго до перевыпуска кода Inventor под лицензией LGPL, компания SIM (Systems in Motion) начала разработку и выпустила библиотеку названием Coin3D, написанную с нуля, без использования исходного кода библиотеки SGI Inventor, но с тем же API из соображений совместимости. Впоследствии SIM была приобретена группой Kongsberg и переименована в Kongsberg SIM, и в 2011 году разработка Coin3D внутри фирмы была прекращена[4], а исходный код был перевыпущен под лицензией BSD, и стал развиваться независимым сообществом. Именно эта реализация API Open Inventor была выбрана для разработки универсальной объктно-ориентированной трёхмерной САПР с открытыми исходными кодами FreeCAD.

Имеется так же проприетарная версия Thermo Scientific Open Inventor, которая находится в стадии активной разработки и получила многочисленные улучшения в первоначальный API Inventor, ориентированные на медицинскую визуализацию, вычисления медицинских изображений, сейсмологию трехмерного отражения и моделирования нефтяных пластов.

Примечания

[править | править код]
  1. 1 2 3 4 5 6 7 8 http://developer98.openinventor.com/content/chapter-12-importing-data
  2. SGI - Developer Central Open Source - Open Inventor. Дата обращения: 11 мая 2020. Архивировано из оригинала 19 октября 2017 года.
  3. MeVisLab. Дата обращения: 15 марта 2022. Архивировано 8 марта 2022 года.
  4. Coin3D / Coin / wiki / Home — Github (30 марта 2020). Дата обращения: 11 мая 2020. Архивировано 14 декабря 2020 года.