Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Ранняя история [ править ]

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

Используйте [ редактировать ]

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

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

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

Исполнитель [ править ]

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

Середина 1990-х [ править ]

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

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

Недавняя история [ править ]

После многих лет существования исключительно под патентованной лицензией от TGS, теперь FEI , Inventor был выпущен в августе 2000 года под лицензией LGPL с открытым исходным кодом , которая доступна от SGI.

Примерно в то же время компания SIM (Systems in Motion) выпустила библиотеку клонов API под названием Coin3D . Позже SIM была приобретена группой Kongsberg и переименована в Kongsberg SIM . Библиотека Монета была написана в чистой комнате моды с нуля, не разделяя никакого кода с оригинальной библиотеки SGI Inventor, но реализация и тот же интерфейс по соображениям совместимости. Kongsberg завершил разработку Coin3D в 2011 году [2] и выпустил код под лицензией BSD с тремя пунктами .

Версия с открытым исходным кодом от SGI в настоящее время не поддерживается, и SGI не продемонстрировала никаких обязательств по дальнейшему развитию библиотеки. Однако выпуск с открытым исходным кодом используется в MeVisLab (MeVis Medical Solutions AG и Fraunhofer MEVIS), и его разработка продолжается. [3]

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

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

В 2004 году TGS была приобретена Mercury Computer Systems , а в июне 2009 года компания снова стала независимой компанией под названием Visualization Sciences Group (VSG) . В 2012 году VSG была приобретена компанией FEI . В 2016 году компания FEI была приобретена компанией Thermo Fisher Scientific (подразделение анализа материалов и структур), которая продолжает развивать и поддерживать Open Inventor .

Ссылки [ править ]

  1. ^ "SGI - Developer Central Open Source - Open Inventor" .
  2. ^ "Coin3D / Coin / wiki / Главная страница - Github" . 30 марта 2020.
  3. ^ MeVisLab

Внешние ссылки [ править ]

  • Официальный сайт SGI Open Inventor
  • Thermo Scientific Open Inventor , коммерческая реализация API
  • Открытый форум пользователей Inventor
  • Coin3D , Самостоятельная реализация API