УДК 004.4’2

Анализ функциональных возможностей и перспективы развития программных интерфейсов и анализ рынка графических движков

Баев Д.Э., Григорьев А.В.
Донецкий национальный технический университет
azo.cw@yandex.ru, grigorievalvl@gmail.com

Баев Д.Э., Григорьев А.В. Анализ функциональных возможностей и перспективы развития программных интерфейсов и анализ рынка графических движков. В статье описан термин «API», основные требования к программным интерфейсам графических движков в практике САПР. Выполнен обзор приложений для трёхмерного моделирования и двумерного черчения. Проанализированы проблемы, возникающие при моделировании и черчении, определены возможные пути их решения.
Ключевые слова: САПР API графических движков, API, трёхмерное моделирование, двумерное черчение, постобработка, текстурирование, анимация, коллективное моделирование.

Введение

Трёхмерная графика позволяет создавать трёхмерные макеты различных объектов, например, повторяя их геометрическую форму и имитируя материал, из которого они созданы[1].
Совокупность функционала работы с графикой по форме представляет собой так называемые «графические движки». Использование таких движков позволяет пользователям-программистам создавать различные программные системы, основой которых является работа с графикой: графические редакторы универсальных или специализированных систем автоматизации проектирования, редакторы игр, мультфильмов, рекламных роликов и т.д.
Рынок современных графических движков довольно широк и динамичен. Любой графический движок составляет набор программных интерфейсов (API), позволяющих решать конкретные задачи[1]. Например, чтобы получить полное представление об определённом объекте, необходимо осмотреть его со всех сторон, с разных точек, при различном освещении. Роль API графических движков трудно переоценить.
Т.о., актуальной является задача выявления проблем процессов разработки API для графических движков и методов их решения.
Целью предлагаемой статьи является:

  • анализ назначения и структуры современных API графических движков;
  • анализ рынка программ трёхмерного моделирования;
  • анализ проблем разработки API графических движков и возможных путей их решения.

1. Описание основных бизнес-процессов программных интерфейсов

Программный интерфейс по своей структуре является описанием способов взаимодействия одного компонента с другим, а именно является набором классов, процедур, функций, структур или констант. API среди разработчиков выступает в роле контракта, «договора», негласного соглашения об обязанностях программы, отвечающие на вопрос «Как обращаться к системе и чего ожидать в результате?». Интерфейс, в данном случае, включает в себя:

  • операцию, которую можно выполнить;
  • данные, поступающие на вход;
  • результирующие данные (контент данных или сообщение об ошибке).

Вызывать API можно как напрямую, так и косвенно. Напрямую:

  • система вызывает функции внутри себя - разные части программы как-то общаются между собой. Они делают это на программном уровне, то есть на уровне API;
  • система вызывает метод другой системы;
  • человек вызывает методы;
  • методы вызываются автоматическими тестами в соответствии с пирамидой автоматизации (см. рис. 1).
Picture 1

Рисунок 1 - Пирамида автоматизации

Косвенно: пользователь работает с GUI. Когда пользователь работает с GUI, на самом деле он также работает с API. То есть когда пользователь открывает систему и загружает отчёт, ему необходимо выбрать пункт в меню программы «загрузить отчёт». В данном случае пользователь работает через GUI (графический пользовательский интерфейс). Но на самом деле под этим графическим пользовательским интерфейсом находится API. И когда пользователь нажимает на кнопку, она вызывает функцию построения отчёта. Косвенный вызов API показан на рис. 2.

Picture 2

Рисунок 2 - Косвенный вызов API

2. Анализ рынка программ для трёхмерного моделирования

AutoCAD - программа САПР специализирующаяся на двух- и трёхмерном проектировании и черчении[2, 3]. API данного программного продукта разработала компания Autodesk с использованием AutoLISP, VisualBasic и C++. AutoCAD и специализированные приложения на его основе нашли широкое применение в машиностроении, строительстве, архитектуре и других отраслях промышленности. В области двумерного проектирования AutoCAD позволяет использовать элементарные графические примитивы для получения более сложных объектов. Кроме того, программа предоставляет весьма обширные возможности работы со слоями и аннотативными объектами (размерами, текстом, обозначениями). Использование механизма внешних ссылок (XRef) позволяет разбивать чертёж на составные файлы, за которые ответственны различные разработчики, а динамические блоки расширяют возможности автоматизации 2D-проектирования обычным пользователем без использования программирования. Пример работы API AutoCAD приведён на рис. 3.

Picture 3

Рисунок 3 - Проекция космической станции

3ds Max - API графического движка данного программного продукта направлен на 3D-моделирование, анимацию и визуализацию при создании игр и проектировании; также имеет поддержку имитации физических процессов, таких как ветер, дождь, снег и т.д.
3ds Max располагает обширными средствами для создания разнообразных по форме и сложности трёхмерных компьютерных моделей, реальных или фантастических объектов окружающего мира, с использованием разнообразных техник и механизмов[3], включающих следующие:

  • полигональное моделирование, в которое входят редактируемая поверхность и редактируемый полигон, которые являются самыми распространёнными методами моделирования, используется для создания сложных моделей и низкополигональных моделей для игр;
  • моделирование на основе неоднородных рациональных B-сплайнов (NURBS);
  • моделирование на основе «сеток кусков» или поверхностей Безье, что подходит для моделирования тел вращения;
  • моделирование с использованием встроенных библиотек стандартных параметрических объектов (примитивов) и модификаторов.

Пример работы с API 3ds Max приведён на рис. 4.

Picture 4

Рисунок 4 - Проекция космической станции

Cinema 4D - универсальный комплексный программный комплекс для создания и редактирования трёхмерных эффектов и объектов[3, 4]. Позволяет рендерить объекты по методу Гуро. Поддержка анимации и высококачественного рендеринга. В Cinema 4D можно найти средства для создания персонажной анимации, удобную среду для работы с частицами, мощную систему фотореалистичной визуализации и, конечно же, удобные инструменты моделирования. В последних версиях API графического движка был существенно переработан алгоритм визуализации и расширены возможности обработки трёхмерных сцен[4]. А также движку программного комплекса добавили возможность просчитывать эффекты глобальной освещённости, каустику и учёт подповерхностного рассеивания света, которое можно наблюдать, например, при просвечивании воска свечи. Пример работы с API Cinema 4D показан на рис. 5.

Picture 5

Рисунок 5 - Создание постера к мультфильму

3. Анализ проблем разработки API графического движка и путей их решения

На сегодняшний момент существует 15 графических программных интерфейсов и более 5 профессиональных программных комплексов по трёхмерному моделированию. Популярные API графических движков включают моделирование, текстурирование, анимацию, скульптинг, постобработку, фильтрацию текстур и объектов, трассировку частиц, и многое другое[2, 3]. Проведённый выше анализ состояния и тенденций развития API современных графических движков, позволяет сделать некоторые выводы. Чтобы эффективность и полезность разработки нового API не стремилась к нулю ещё на этапе разработки необходимо выделить все недостатки конкурентов или сделать акцент на новой функции программного интерфейса. Для примера, такой функцией может выступать коллективное моделирование. В работе над крупными проектами приходится распределять обязанности и графики выполнения определённых работ над проектом. Один сотрудник занимается скульптингом, по завершению экспортирует готовую модель и передаёт её сотрудникам по части анимации. И так далее по всем отделам до завершения. Для оптимизации работы всех отделов и уменьшения промежуточных копий проекта в разных форматах можно реализовать поддержку многопользовательского коллективного проектирования. Для этого необходимо внести некоторые надстройки в API графического движка, обеспечивающие синхронизацию действий сотрудников в проекте с общей и разделённой историями действий. Это обеспечит максимальную продуктивность и минимальные задержки проекта на стадии проектировки и разработки.

Выводы

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

Литература

  1. Большаков В. П. Инженерная и компьютерная графика. Теоретический курс и тестовые задания: учеб. пособие / В. П. Большаков, А. В. Чагина. - СПб.: БХВ-Петербург, 2016. - 384 с.: ил. - (Учебная литература для вузов).
  2. Вольф Д. OpenGL 4. Язык шейдеров. Книга рецептов / пер. с англ. А. Н. Киселева. - М.: ДМК Пресс, 2015. - 368 с.: ил.
  3. Гинсбург Д., Пурномо Б. OpenGL ES 3.0. Руководство разработчика / пер. с англ. А. Борескова. - М.: ДМК Пресс, 2015. - 448 с.: ил.
  4. Селлерс Г., Кессенич Дж. Vulkan. Руководство разработчика. Официальное руководство / пер. с англ. А. В. Боресков. - М.: ДМК Пресс, 2017. - 396 с.: ил.

Баев Д.Э., Григорьев А.В. Анализ функциональных возможностей и перспективы развития программных интерфейсов и анализ рынка графических движков. В статье описан термин «API», основные требования к программным интерфейсам графических движков в практике САПР. Выполнен обзор приложений для трёхмерного моделирования и двумерного черчения. Проанализированы проблемы, возникающие при моделировании и черчении, определены возможные пути их решения.
Ключевые слова: САПР API графических движков, API, трёхмерное моделирование, двумерное черчение, постобработка, текстурирование, анимация, коллективное моделирование.

Baev D.E., Grigoriev A.V. Analysis of functionality and prospects of development of software interfaces and analysis of the graphics engine market. The article describes the term "API", the main requirements for software interfaces of graphics engines in the practice of CAD. The review of applications for three-dimensional modeling and two-dimensional drawing is carried out. The problems arising during modeling and drawing are analyzed, possible ways of their solution are defined.
Keywords: CAD API of graphic engines, API, three-dimensional modeling, two-dimensional drawing, postprocessing, texturing, animation, collective modeling.