Научная статья на тему 'ЭФФЕКТИВНЫЕ МЕТОДЫ И АЛГОРИТМЫ СИНТЕЗА ВИДЕО 360 ГРАДУСОВ НА ОСНОВЕ КУБИЧЕСКОЙ ПРОЕКЦИИ ВИРТУАЛЬНОГО ОКРУЖЕНИЯ'

ЭФФЕКТИВНЫЕ МЕТОДЫ И АЛГОРИТМЫ СИНТЕЗА ВИДЕО 360 ГРАДУСОВ НА ОСНОВЕ КУБИЧЕСКОЙ ПРОЕКЦИИ ВИРТУАЛЬНОГО ОКРУЖЕНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
284
40
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВИДЕО 360 ГРАДУСОВ / ПАНОРАМНОЕ ВИДЕО / КУБИЧЕСКАЯ ПРОЕКЦИЯ / ВИЗУАЛИЗАЦИЯ / ВИРТУАЛЬНОЕ ОКРУЖЕНИЕ / 360-DEGREE VIDEO / OMNIDIRECTIONAL VIDEO / CUBEMAP PROJECTION / VISUALIZATION / VIRTUAL ENVIRONMENT

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Тимохин П. Ю., Михайлюк М. В., Вожегов Е. М.

В статье рассматривается задача создания и воспроизведения панорамного видео с обзором 360 градусов, обеспечивающего погружение исследователя в виртуальную среду вне родительской системы виртуального окружения (СВО). Для решения этой задачи предлагается расширение метода проекции в кубическую карту, при котором разрешение карты определяется с учетом угла обзора камеры зрителя и разрешения экрана (Adequate Cubemap Projection, ACMP). В работе исследовано влияние ориентации камеры зрителя внутри куба на отношение «пиксел карты/пиксел экрана», определяющее качество визуализации панорамы, и предложен метод вычисления разрешения кубической карты для качественной визуализации панорамы при всех возможных ориентациях камеры. В работе рассмотрены эффективные метод и алгоритм создания ACMP-видео на GPU с помощью технологии рендеринга в текстуру, которые позволяют синтезировать панорамы c постоянной ориентацией или с привязкой к направлению взгляда наблюдателя. Также в исследовании предложены эффективные методы и алгоритмы воспроизведения ACMP-видео, основанные на визуализации видимых граней куба и адаптивной буферизации кадров. Полученные методы и алгоритмы реализованы в программном комплексе синтеза ACMP-видео (С++, OpenGL, FFmpeg), который включает в себя модуль захвата кадров (встраиваемый в СВО) и плеер. Разработанное решение было протестировано в системе «Виртуальная Земля» по обучению наблюдению объектов земной поверхности с орбиты Международной космической станции (МКС). С помощью модуля захвата было создано ACMP-видео полета вдоль участка подспутниковой трассы МКС. При воспроизведении данного видео обучаемый летит по орбите над виртуальной 3D поверхностью Земли и может исследовать ее, поворачивая камеру. Апробация комплекса подтвердила адекватность разработанных методов и алгоритмов поставленной задаче. Полученные научные и практические результаты позволяют расширить возможности и сферу применения СВО, систем научной визуализации, видеотренажеров и виртуальных лабораторий, эффективно обмениваться опытом между исследователями и др.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Тимохин П. Ю., Михайлюк М. В., Вожегов Е. М.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

EFFICIENT METHODS AND ALGORITHMS TO SYNTHESIZE 360-DEGREE VIDEO BASED ON CUBEMAP PROJECTION OF VIRTUAL ENVIRONMENT

The paper deals with the task of creation and playback of panoramic video with 360-degree overview, which allows the researcher to be immersed in virtual medium outside parent virtual environment system (VES). To solve the task, the extension of the cubemap method is proposed, in which cubemap resolution is determined taking into account viewer camera field of view and screen resolution (Adequate Cubemap Projection, ACMP). The paper studies the influence of the camera orientation inside the cube on the "cubemap pixel / screen pixel" ratio determining panorama visualization quality. Based on this, a method to calculate cubemap resolution for high-quality panorama visualization for all possible camera orientations is proposed. The paper considers an efficient method and algorithm to create ACMP-video on the GPU using render-to-texture technology, which allow to synthesize panoramas with constant orientation or bound to the observer's view direction. In the research efficient methods and algorithms to play ACMP-video are also proposed, which are based on the visualization of visible cube faces and adaptive frame buffering. The obtained methods and algorithms are implemented in ACMP-video synthesis program complex (С++, OpenGL, FFmpeg) including frame capture module (embeddable into VES) and the player. The developed solution was tested in system «Virtual Earth» designed for training to observe Earth objects from the International Space Station (ISS). Using the capture module, an ACMP-video of the flight along the ISS orbit track was created. When playing this video, the trainee flies in orbit above virtual 3D surface of the Earth and can explore it by means of camera rotation. Testing of the complex confirmed the adequacy of the developed methods and algorithms to the task. The obtained scientific and practical results expand the capabilities and scope of application of VES, scientific visualization systems, video simulators and virtual laboratories; provide effective exchange of experience between researchers, etc.

Текст научной работы на тему «ЭФФЕКТИВНЫЕ МЕТОДЫ И АЛГОРИТМЫ СИНТЕЗА ВИДЕО 360 ГРАДУСОВ НА ОСНОВЕ КУБИЧЕСКОЙ ПРОЕКЦИИ ВИРТУАЛЬНОГО ОКРУЖЕНИЯ»

DOI: 10.15514/ISPRAS-2020-32(4)-5

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

П.Ю. Тимохин, ORCID: 0000-0002-0718-1436 <[email protected]> М.В. Михайлюк, ORCID: 0000-0002-7793-080X <[email protected]> Е.М. Вожегов, ORCID: 0000-0003-2676-1206 <[email protected]>

ФНЦ Научно-исследовательский институт системных исследований РАН, 117218, Россия, г. Москва, Нахимовский просп., д. 36, к. 1

Аннотация. В статье рассматривается задача создания и воспроизведения панорамного видео с обзором 360 градусов, обеспечивающего погружение исследователя в виртуальную среду вне родительской системы виртуального окружения (СВО). Для решения этой задачи предлагается расширение метода проекции в кубическую карту, при котором разрешение карты определяется с учетом угла обзора камеры зрителя и разрешения экрана (Adequate Cubemap Projection, ACMP). В работе исследовано влияние ориентации камеры зрителя внутри куба на отношение «пиксел карты/пиксел экрана», определяющее качество визуализации панорамы, и предложен метод вычисления разрешения кубической карты для качественной визуализации панорамы при всех возможных ориентациях камеры. В работе рассмотрены эффективные метод и алгоритм создания ACMP-видео на GPU с помощью технологии рендеринга в текстуру, которые позволяют синтезировать панорамы c постоянной ориентацией или с привязкой к направлению взгляда наблюдателя. Также в исследовании предложены эффективные методы и алгоритмы воспроизведения ACMP-видео, основанные на визуализации видимых граней куба и адаптивной буферизации кадров. Полученные методы и алгоритмы реализованы в программном комплексе синтеза ACMP-видео (С++, OpenGL, FFmpeg), который включает в себя модуль захвата кадров (встраиваемый в СВО) и плеер. Разработанное решение было протестировано в системе «Виртуальная Земля» по обучению наблюдению объектов земной поверхности с орбиты Международной космической станции (МКС). С помощью модуля захвата было создано ACMP-видео полета вдоль участка подспутниковой трассы МКС. При воспроизведении данного видео обучаемый летит по орбите над виртуальной 3D поверхностью Земли и может исследовать ее, поворачивая камеру. Апробация комплекса подтвердила адекватность разработанных методов и алгоритмов поставленной задаче. Полученные научные и практические результаты позволяют расширить возможности и сферу применения СВО, систем научной визуализации, видеотренажеров и виртуальных лабораторий, эффективно обмениваться опытом между исследователями и др.

Ключевые слова: видео 360 градусов; панорамное видео; кубическая проекция; визуализация; виртуальное окружение.

Для цитирования: Тимохин П.Ю., Михайлюк М.В., Вожегов Е.М. Эффективные методы и алгоритмы синтеза видео 360 градусов на основе кубической проекции виртуального окружения. Труды ИСП РАН, том 32, вып. 4, 2020 г., стр. 73-88. DOI: 10.15514/ISPRAS-2020-32(4)-5

Благодарности: Публикация выполнена в рамках государственного задания по проведению фундаментальных научных исследований (ГП 14) по теме (проекту) «34.9. Системы виртуального окружения: технологии, методы и алгоритмы математического моделирования и визуализации» (00652019-0012).

Efficient methods and algorithms to synthesize 360-degree video based on cubemap projection of virtual environment

P.Yu. Timokhin, ORCID: 0000-0002-0718-1436 <[email protected]> M.V. Mikhaylyuk, ORCID: 0000-0002-7793-080X<[email protected]> E.M. Vozhegov, ORCID: 0000-0003-2676-1206 <[email protected]> Scientific Research Institute for System Analysis of RAS, 36, build. 1, Nakhimovskiy Avenue, Moscow, 117218, Russia

Abstract. The paper deals with the task of creation and playback of panoramic video with 360-degree overview, which allows the researcher to be immersed in virtual medium outside parent virtual environment system (VES). To solve the task, the extension of the cubemap method is proposed, in which cubemap resolution is determined taking into account viewer camera field of view and screen resolution (Adequate Cubemap Projection, ACMP). The paper studies the influence of the camera orientation inside the cube on the "cubemap pixel / screen pixel" ratio determining panorama visualization quality. Based on this, a method to calculate cubemap resolution for high-quality panorama visualization for all possible camera orientations is proposed. The paper considers an efficient method and algorithm to create ACMP-video on the GPU using render-to-texture technology, which allow to synthesize panoramas with constant orientation or bound to the observer's view direction. In the research efficient methods and algorithms to play ACMP-video are also proposed, which are based on the visualization of visible cube faces and adaptive frame buffering. The obtained methods and algorithms are implemented in ACMP-video synthesis program complex (С++, OpenGL, FFmpeg) including frame capture module (embeddable into VES) and the player. The developed solution was tested in system «Virtual Earth» designed for training to observe Earth objects from the International Space Station (ISS). Using the capture module, an ACMP-video of the flight along the ISS orbit track was created. When playing this video, the trainee flies in orbit above virtual 3D surface of the Earth and can explore it by means of camera rotation. Testing of the complex confirmed the adequacy of the developed methods and algorithms to the task. The obtained scientific and practical results expand the capabilities and scope of application of VES, scientific visualization systems, video simulators and virtual laboratories; provide effective exchange of experience between researchers, etc.

Keywords: 360-degree video; omnidirectional video; cubemap projection; visualization; virtual environment.

For citation: Timokhin P.Yu., Mikhaylyuk M.V., Vozhegov E.M. Efficient methods and algorithms to synthesize 360-degree video based on cubemap projection of virtual environment. Trudy ISP RAN/Proc. ISP RAS, vol. 32, issue 4, 2020. pp. 73-88 (in Russian). DOI: 10.15514/ISPRAS-2020-32(4)-5

Acknowledgements. The publication is made within the state task on carrying out basic scientific researches (GP 14) on topic (project) «34.9. Virtual environment systems: technologies, methods and algorithms of mathematical modeling and visualization» (0065-2019-0012).

1. Введение

В настоящее время во многих важных научных и прикладных областях востребовано виртуальное окружение, в котором человек (оператор) может обучаться решению реальных задач и проводить исследования. Особенно это актуально для областей, сопряженных с работой в агрессивной и труднодоступной среде (космическая и авиационная отрасли, нефтегазовая сфера, атомная промышленность и др.) [1, 2]. Создание виртуального окружения является достаточно сложной задачей, для решения которой разрабатываются специальные программно-аппаратные комплексы - системы виртуального окружения (СВО), включающие в себя подсистемы управления, моделирования динамики, визуализации и др. [3, 4]. Часто возникает необходимость воспроизведения виртуального окружения, созданного с помощью СВО, на обычных персональных компьютерах (в том числе, мобильных и портативных устройствах), например, для анализа допущенных при обучении ошибок, обмена опытом между исследователями, демонстрации результатов перед широкой аудиторией и др. [5]. Одним из эффективных подходов является синтез панорамных видеороликов с обзором 360° (видео 360), при воспроизведении которых зритель может 74

поворачивать камеру в произвольном направлении и ощущать эффект присутствия в виртуальной среде [6]. В идеале, 360-градусная панорама является непрерывной и представляет собой сферу, в центре которой расположен наблюдатель. Чтобы получить кадр видео 360, такую «идеальную» сферу необходимо некоторым образом записать в дискретное планарное изображение (панораму 360), с которыми работают все современные видеокодеки. Ввиду того, что поверхность сферы невозможно развернуть на плоскость без искажений, обычно выбирают такие способы проецирования, при которых в областях поля зрения, наиболее важных для зрителя, искажения минимальны.

Существующие методы построения панорамы 360 можно условно разделить на две следующие группы. К первой группе относятся методы, в которых панорама проецируется на плоскость с помощью одной или нескольких картографических проекций. Широко распространены решения, основанные на эквидистантной цилиндрической проекции [7] (в настоящее время в данной проекции видео 360 загружается на YouTube). Эквидистантная проекция отображает панораму в истинном масштабе только вдоль экватора, а при приближении к полюсам масштаб увеличивается. Для уменьшения искажений масштаба в работе [8] было предложено проецировать сферу на плоскость горизонтальными полосами приблизительно одинакового разрешения (длины таких полос авторы сокращают при приближении к полюсам), а области полюсов записывать в виде двух круговых изображений. Ко второй группе относятся методы, в которых панорама проецируется на некоторый выпуклый многогранник, который затем разворачивается на плоскость. Благодаря своей простоте и поддержке современными графическими библиотеками широкое распространение получила проекция в кубическую карту (cubemap projection, CMP) [9-12], при которой панорама отображается на 6 граней куба, где каждая грань охватывает угол обзора 90°. В традиционной CMP все грани равнозначны (отсутствуют области полюсов с сильными искажениями масштаба), однако за счет перспективной проекции при приближении к ребрам и углам куба искажения изображения увеличиваются [10]. Для уменьшения неоднородностей детализации разрабатываются различные модификации CMP: равноугольная кубическая проекция (Equi-Angular Cubemap, EAC) [10], CMP со смещенным от центра положением наблюдателя [11], «умное» ориентирование CMP, при котором объекты переднего плана отображаются на грани, а не на ребра [12] и др. В исследовании [13] авторам удалось уменьшить потери четкости видео 360 (по сравнению с традиционной CMP) за счет проецирования панорамы на ромбододекаэдр. Разработчики из компании Facebook предложили принципиально другой подход, при котором панорама проецируется на грани пирамиды видимости наблюдателя [14]. Чтобы обеспечить охват в 360° , авторы используют 30 таких пирамид с шагом в 30°. Несмотря на заявленное значительное сокращение объема видеофайла (до 80% по сравнению с эквидистантной проекцией), авторы впоследствии отказались от данного подхода из-за его сложности в пользу кубической проекции. Одной из важных задач при реализации методов, основанных на CMP, является выбор разрешения кубической карты, обеспечивающего синтез качественных изображений. При выборе слишком большого разрешения битрейт видеопотока существенно возрастает, что приводит к увеличению времени воспроизведения кадров и появлению вынужденных пауз. Если установить недостаточное разрешение, то ухудшается качество видео (возникают артефакты «блочности» изображения), в результате чего теряется эффект присутствия. В данной работе предлагаются методы и алгоритмы решения этой задачи, основанные на расширении метода кубической проекции, при котором разрешение кубической карты определяется с учетом угла обзора камеры зрителя и разрешения экрана. Такую проекцию мы называем адекватной (Adequate CMP, ACMP), а получаемое с помощью нее видео 360 -ACMP-видео. В разд. 2 предлагается метод вычисления разрешения ACMP-карты, в разд. 3 и

4 рассматриваются методы и алгоритмы создания и воспроизведения ACMP-видео, а в разд.

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

2. Метод вычисления разрешения ACMP-карты

Метод кубической проекции состоит в проецировании окружающей наблюдателя виртуальной среды на грани единичного куба с помощью шести перспективных камер, расположенных в центре этого куба и направленных под 90 градусов друг к другу. Каждая камера имеет вертикальный угол обзора (FOV), равный 90 градусов и отношение ширины к высоте формируемого изображения (aspect), равное единице. Таким образом, каждая камера проецирует видимое ею изображение на соответствующую грань куба. Эта проекция записывается в область вывода с некоторым разрешением d (число пикселов вдоль каждой стороны изображения).

Для просмотра результата кубического проецирования записанные изображения накладываются на грани куба, в центре куба устанавливается камера зрителя CV, через которую он может наблюдать изображение виртуальной сцены, отображенное на гранях куба. Камера CV может иметь произвольные FOV и aspect и ее область вывода может иметь некоторое разрешение D (число пикселов вдоль большей стороны области вывода). Для упрощения рассмотрения мысленно спроецируем области вывода на соответствующие ближние плоскости отсечения камер, так что теперь будем считать, что куб проецирования имеет размер d x d x d пикселов. Наша задача состоит в вычислении такого разрешения d кубической проекции, при котором любой отрезок пикселов из кубической проекции будет отображаться в отрезок не меньшего числа пикселов в области вывода с разрешением D. Опишем вокруг куба сферу, имитирующую «идеальную» панораму 360, а в центр сферы поместим виртуальную камеру. Рассмотрим некоторую дугу l сферы, которая целиком попадает в поле зрения камеры и на грань куба. Построим проекцию face дуги l на грань куба (рис. 1а, в силу симметрии, на этом рисунке показана четвертая часть двумерной проекции куба). Рассмотрим также камеру CV зрителя видео 360, и проекцию lcam дуги l на ближнюю плоскость отсечения этой камеры (рис. 1б). Обозначим через а центральный угол дуги l и

рассмотрим функцию r отношения длин проекций lface и lcam для бесконечно малой

дуги l (при а ^ 0):

r (Ъ= ) . W

Рис. 1. Проекция дуги l: a) на грань куба; b) на ближнюю плоскость отсечения камеры Fig. 1. Projection of arc l on: a) the face of the cube; b) near clip plane of the camera Cv

Тимохин П.Ю., Михайлюк М.В., Вожегов Е.М. Эффективные методы и алгоритмы синтеза видео 360 градусов на основе кубической проекции виртуального окружения. Труды ИСП РАН, том 32, вып. 4, 2020 г., стр. 73-88

Фактически, функция r показывает, сколько пикселов изображения на грани куба (кубической проекции) будет отображаться в некоторый произвольный пиксел области вывода камеры зрителя. Во избежание образования артефактов «блочности» (когда пиксел грани куба отображается на несколько пикселов области вывода) отношение r в идеале не должно быть меньше 1 для всех пикселов экрана. На практике (например, для экранов с высокой плотностью пикселов), этот порог может быть уменьшен до некоторого значения rthres без заметной потери качества видео 360. Тогда, величину d можно вычислить из

равенства rthres = min r(n, ß).

2.1 Нахождение функции r

Чтобы найти функцию r, вычислим длины проекций lface и lcam. Введем следующие

обозначения: ß е [0,^/4 -a] - угол отклонения дуги l от перпендикуляра к грани куба (см.

рис. 1а); у е (0,#) - угол наибольшего раствора (горизонтального или вертикального) камеры

Су (см. рис. 1б); rje[a + ß-y/2,ß + у/2] - угол отклонения вектора взгляда камеры от перпендикуляра к грани куба.

Из рисунков 1а и 1б запишем следующие выражения для длин lface и lcam

_^tg(g + /?)-tg/? f _ tg{il-ß)-tg{il-ß-a) ~ d - , ~» 2tg(;//2) • (2)

Подставив эти выражения в формулу (1), получим

r(n,ß) = lim^ = d tg(у/2).lim /g+tgß л . (3)

( ß) a->0 lcam D g a->° tg(v-ß)-tg(n-ß-a) ()

Используя формулу преобразования разности тангенсов, приведем выражение (3) к виду

/ ч d , , ч cos(n-ß)cos(n-ß-a) r (n, ß) = d tg (у/2). lim (/ ß) „Y ß ) . (4)

v 7 D v 7 a^0 cos (a + ß) cos ß

При уменьшении размера дуги l до бесконечно малой величины (a ^ 0) получим из (4) выражение искомой функции

r (n, ß) = (d/D) tg (у/2)(cos (n-ß)/cos ß)2, где ße [0,^/4], ne[ß-y/2, ß + y/2]. (5)

2.2 Нахождение наименьшего значения rmm и размера d

Легко проверить, что на указанных в (5) интервалах функция f(n,ß) = cos(n-ß)/cosß

неотрицательна, поэтому функция r (n, ß) принимает наименьшее значение rmin при

наименьшем значении fmin функции f (n, ß). Чтобы найти fmin, попробуем сначала вычислить

критические точки функции f (n, ß) в области ße( 0,^/4), ne(ß-y/2, ß + у/ 2), т.е. те

точки, в которых обе частные производные f и fß равны нулю (это является необходимым условием наличия экстремума функции). Имеем

sin (

(n-ß) s, sinn Jfn' = 0 /sin (ncrit ßcri t ) = 0 \ncnt-ßcrt

— Vх r) rt Oiiil/ \Jn V 'crit Hcrit ) J 'crit ' crit S£\

Jn=--... „ , fß=—^, ^i • л ^i _ . (6)

cos ß ß cos2 ß ifß=0 i sin ncrit = 0 [ ncnt =xn

Так как P e (0,ж/4), а у e (0,ж), щ не может выходить за границы интервала (-я/2,3^/4). Из этого следует, что = 0, а значит = 0 . Однако это значение Pcrit € (0, ж/4), следовательно, система (6) не имеет решения, а функция f (щ, P) не имеет критических точек в рассматриваемой области. Найдем теперь минимальное значение функции f (щ, P) на границах щ =Р-у/2, щ = Р + у/2, P = 0 и P2 =ж/4 . Получаем

fx (j,P) = f2 (Т2, P) = cos (у/2 V cos P, f3 (t, P,) = cos щ , f4 ) = V2 cos (щ - ж/ 4) . Функции f (щ, P) и f2 (щ, P) имеют наименьшее значение на отрезке Pe[0, ж/4], когда cos P максимален т.е. при P = 0 : = /2>шт = cos (у/2). функция f3 (щ Р ) = f (щ,0) = = cosj на отрезке щ e [-у/2, у/2] принимает минимальное значение при щ = + у/2, откуда следует f3min = cos (у/ 2), а функция /4 (j,P2 ) = f4 (щ,ж /4)=V2 cos (щ-/4) на отрезке ще[ж/4-у/2, ж/4 + у/2] имеет наименьшее значение при щ = /4 + у/2, откуда .fmin =V2cos (у 2). Так как уе( 0,ж), то легко видеть, что = min = cos (у/2). Подставив значение fmin в формулу (5), получим искомое выражение для rmin:

Гшп = (d/D) tg (у 2) f^n = (d/D) tg (у 2) cos2 (у/2) = (d/ (2D)) s1nу. (7)

Как отмечалось в начале разд. 2, размер d в данной работе находится из равенства rthres = rmin. Подставим в него rmin из (7) и выразим из полученного равенства искомый d:

d = 2Dr threJsW = ^'"threc?'^ . (8)

2.3 Оценка качества визуализации кубической проекции

В формуле (8) величина rthres означает наименьшее возможное число пикселов грани куба, которое будет отображаться в любой пиксел камеры зрителя, т.е. фактически rthres определяет уровень качества визуализации кубической проекции в камере зрителя. Мы будем считать значение rthres = 1, соответствующим наибольшему уровню качества, т.к. дальнейшее повышение числа отображаемых пикселов грани куба не будет иметь смысла - мы их просто не сможем различить в камере зрителя. Наибольший уровень качества необходим для отображения кубической проекции в камере зрителя с невысоким разрешением D, и, наоборот, для высоких значений D (Full HD, 4K) уровень качества может быть уменьшен. Рассмотрим это на следующем примере.

Вычислим по формуле (8) величину d для у = 50° (угол, близкий к восприятию пространства человеческим зрением), D = 1024 пикселов и rthres = 1. При этих параметрах мы получим значение d и 2600 пикселов. Подставим значения d, D и у в формулу (5) и построим

поверхность r (щ, P) (см. рис. 2). Полученная поверхность-«седло» показывает изменение

уровня качества визуализации кубической проекции в зависимости от места расположения объекта наблюдения (дуги l сферы 360 градусов) на грани куба (угол P ) и в камере зрителя (угол щ). На рисунке 2 передний торец «седла» соответствует случаю, когда объект наблюдения располагается в центре грани куба (P = 0), а задний торец - когда объект наблюдения находится по направлению в ребро куба (P = ж/4). При этом самые верхние точки торцевых изгибов соответствуют случаю, когда камера зрителя направлена в объект наблюдения (щ = 0 и щ = ж/4), т.е. объект находится в центре камеры, а самые нижние

точки - расположению объекта у границ раствора камеры зрителя (для переднего торца -Т=±У2 = ±25° , а для заднего - т = ^4-у/2 = 20° и т = ^4 + у/2 = 70°).

■25 " ' О

Рис. 2. Пример поверхности r{-q,ß) при визуализации кубической проекции с высоким качеством Fig. 2. Example of r{-q,ß) surface at high-quality visualization of cubemap projection Из рисунка 2 видно, что даже в самом худшем случае (объект в центре грани куба и у границы раствора камеры, см. концы переднего торца «седла») кубическая проекция будет визуализироваться с высоким качеством: в любой пиксел камеры зрителя будет отображаться не менее 1 пиксела грани куба. На практике, построение кубической проекции с разрешением граней d = 2600 пикселов может потребовать больших вычислительных ресурсов, например, если виртуальная сцена содержит сложные высокополигональные текстурированные объекты. В таких случаях можно пойти на уменьшение уровня rthres качества до значения, позволяющего решать задачу, для которой создается видео 360 (на рис. 2 при уменьшении rthres «седло» будет параллельно сдвигаться вниз). Так, например, при rthres = 0.5, объекты в центральной части поля зрения камеры будут визуализироваться с качеством не менее 75%, а в периферийной - с качеством не менее 50% (при этом разрешение граней d уже составит около 1300 пикселов).

3. Метод создания ACMP-видео

Рассмотрим задачу создания видео 360 для наблюдателя, который исследует виртуальное окружение с помощью жестко связанной с ним виртуальной камеры Cobs. Наблюдатель может перемещаться и поворачивать камеру. Мы будем синтезировать кадр видео 360 на основе кубической проекции с разрешением d, вычисленным согласно (8), каждые 1/fv миллисекунд, где f > 25 - частота смены кадров видеоролика в кадрах в секунду (d иf задаются с помощью

диалогового окна до начала записи видео 360). Рассмотрим процесс синтеза кадра для некоторого такого момента времени.

Обозначим через Pobs, Vobs и upobs позицию, вектор взгляда и вектор «вверх» камеры Cobs в мировой системе координат (World Coordinate System, WCS) в этот момент времени. Поместим в точку Pobs шесть одинаковых виртуальных камер С0,...,С5 с FOV = 90°, aspect = 1 и областью вывода d x d пикселов. Направление камеры С1 совпадает с направлением камеры Cobs, а остальные камеры расположены под 90 градусов друг к другу (см. рисунок 3).

79

Направим эти камеры так, чтобы их ближние плоскости образовывали куб, как показано на рисунке 3 (грани куба названы так, как их видит наблюдатель изнутри).

Рис. 3. Построение кубической проекции Fig. 3. Constructing cubemap projection Векторы V0,...,V5 взгляда и векторы upo,...,ups «вверх» камер С0,...,С5 всегда коллинеарны одному из векторов Vobs, upobs, robs, где robs = vobs x upobs (вектор «вправо» камеры Cobs), а их

координаты находятся в соответствии с таблицей 1.

Таблица 1. Координаты векторов камер Ci Table 1. Coordinates of camera Ci vectors

Грань 0 (нижняя) 1 (передняя) 2 (задняя) 3 (правая) 4 (левая) 5 (верхняя)

Vi -upobs Vobs -Vobs Г obs -Г obs upobs

upi Vobs upobs upobs upobs upobs -Vobs

Каждый синтезируемый кадр ACMP-видео будет состоять из 6 изображений, полученных из камер Ci. Синтез такого кадра будем выполнять в RGB-текстуре T размера 3d x 2d пикселов. Поставим в соответствие каждой С,-ой камере участок d x d пикселов (тайл) текстуры T, как показано на рис. 4.

1. Активируем FBO и очистим текстуры T и U с помощью операторов glClearColor, glClearDepth и glClear.

2. Зададим матрицу перспективной проекции (общую для камер С0,.,,С5) с FOV = 90° и aspect = 1 с помощью оператора gluPerspective.

3. Цикл по i от 0 до 5

Установим область вывода С—ой камеры размера d x d пикселов с координатами левого нижнего угла х = (i % 3)d , y = |i/3_|d с помощью оператора glViewport.

Зададим матрицу видового преобразования С—ой камеры с позицией Pobs и векторами vi и upi с помощью gluLookAt. Выполним рендеринг виртуальной сцены из камеры Ci. Конец цикла.

4. Деактивируем FBO.

Алгоритм 1. Синтез ACMP-кадра Algorithm 1. ACMP-frame synthesis

С помощью графической библиотеки OpenGL создадим внеэкранный буфер кадра (Framebuffer Object, FBO) [15] с текстурами T (буфер цвета) и U (буфер глубины). Далее

выполним рендеринг (с включенным тестом глубины) виртуальной сцены из каждой С,-ой камеры в /-ый тайл текстуры Т с помощью Алгоритма 1.

г-------->

3 4 5

0 1 2

Рис. 4. Тайлы ACMP-кадра Fig. 4. Tiles of ACMP-frame После выполнения Алгоритма 1 полученный кадр ACMP-видео (заполненная текстура T) выгружается из видеопамяти в оперативную память, сжимается и добавляется в видеопоток с помощью набора библиотек FFmpeg [16]. Работа со сжатыми видеопотоками более подробно описана в [5].

4. Метод воспроизведения ACMP-видео

Для воспроизведения ACMP-видео в данной работе создается виртуальная 3D сцена (см. рис. 5), содержащая модель единичного куба с центром в WCS, в который помещается виртуальная камера Cv зрителя (введена в разделе 2). Повороты камеры Cv разрешены только вокруг осей X и Y свой локальной системы координат, что соответствует наклону головы вверх/вниз и влево/вправо. Воспроизведение ACMP-видео включает в себя следующие ключевые шаги: (а) считывание и декодирование ACMP-кадров с частотой f ; (б) извлечение из очередного ACMP-кадра тайлов-текстур для граней куба, видимых из камеры CV; (в) плавная визуализация ACMP-кадров. Описание шага (а) можно найти в работе [5], поэтому далее рассмотрим шаги (б) и (в).

Рис. 5. Единичный куб и камера Cv Fig. 5. Unit cube and camera Cv

4.1 Отбор текстур видимых граней куба

Для определения тайлов-текстур (граней куба), необходимых для визуализации ACMP-кадра, введем понятие двухгранника - пары граней куба с общим ребром. Как можно заметить, у куба 12 вариантов двухгранников (по числу ребер). Пронумеруем вершины куба, как показано на рисунке 5 и запишем массив Dребер куба: {0, 1}, {1, 5}, {5, 4}, {4, 0}, {6, 4}, {7,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

5}, {3, 1}, {2, 0}, {2, 3}, {3, 7}, {7, 6}, {6, 2}. Для ребер из массива D запишем массив E вариантов двухгранников, используя нумерацию граней куба из рисунка 3: {0, 1}, {0, 3}, {0, 2}, {4, 0}, {2, 4}, {2, 3}, {3, 1}, {1, 4}, {1, 5}, {3, 5}, {5, 2}, {4, 5}. В зависимости от параметров камеры Су при просмотре видео в область вывода могут попадать ребра куба, а могут и не попадать. Ребра, попадающие в поле зрения камеры Су, будут определять двухгранники, которые необходимо использовать при визуализации. Если же в поле зрения не попадает ни одного ребра, то камера Су будет захватывать какую-то одну грань куба. Чтобы упростить проверку видимости ребер куба, создадим таблицу H булевских флагов положения каждой вершины куба относительно каждой из 5 отсекающих плоскости камеры (0 - ближняя, 1 - левая, 2 - правая, 3 - нижняя, 4 - верхняя). Дальнюю плоскость отсечения мы не учитываем, т.к. выставляем ее заведомо дальше всех вершин куба. Таблица H состоит из 8 строк, где номер строки совпадает с номером вершины куба. Каждая строка хранит флаги Ъо,...,Ъ4, а также флаг b = (bo && bi && b2 && Ьз && ¿4). Истинный Ъ,-ый флаг (i = 0,...,4) означает, что вершина куба лежит в i-ой отсекающей плоскости или ее «+» полупространстве, а истинный флаг Ъ5 - что вершина куба находится в пирамиде видимости камеры Су. Вычисление флагов описано в работе [17].

С помощью таблицы H будем отбирать для визуализации каждый двухгранник, общее ребро которого пересекает пирамиду видимости камеры Су. Обозначим через bpair флаг наличия хотя бы одного отобранного двухгранника (true/false - есть/нет). Грани отобранных двухгранников (или видимую одиночную грань куба) будем отмечать в булевском массиве Bfaces длины 6 (по числу граней в кубе, true/false - грань видна/не видна). Это реализует Алгоритм 2.

1. Очистим массив Bfaces значением false, bpair = false.

2. Цикл по j от 0 до 11, где j - индекс ребра куба

Если (Hd[j][0], 5 I I Hd[j][1], 5), то bpair = true; // видима хотя бы одна вершина ребра.

В противном случае (вершины ребра не видимы), проверим, пересекает ли ребро хотя бы одну отсекающую плоскость, и видима ли точка Pu их пересечения:

Цикл по i от 1 до 4, где i - отсекающая плоскость камеры CV Если (HD[j][oj, i Л HD[jj[i]i i), то: // Л - исключающее ИЛИ.

Вычислим координаты точки Pu и ее флаг b5 видимости (см. [17]) .

Если Ь5 равен true, то: Bfaces [E[j][0]] = true, Bfaces [E [j][1]] = true, bpair = true, выходим из цикла. Конец цикла.

3. Если в камере CV не видно ни одного ребра куба (bpair = false), то ищем k-ую грань, у которой угол между внешней нормалью и вектором v камеры CV будет наименьшим:

k = 0, запишем массив K косинусов углов между внешними нормалями к граням куба и вектором v взгляда: K = {-vy,, -vz, vz, vx, -vx, Vyj.

Цикл по p от 1 до 5, где p - номер грани куба.

Если K[i] > K[k], то k = i. Конец цикла.

Bfaces [k] = true.

Алгоритм 2. Получение номеров видимых граней куба Algorithm 2. Getting the numbers of visible cube faces

В результате выполнения Алгоритма 2 в элементах массива Bfaces, соответствующих видимым граням куба, будут записаны значения true. По номеру n каждого такого элемента мы находим смещения offsetX = (n%3)d и offsetY = \_n/3j d (в пикселах) тайла-текстуры n-ой видимой грани относительно левого нижнего угла ACMP-кадра (см. рис. 6) и загружаем эту 82

тайл-текстуру в видеопамять (в массив из 6 текстурных объектов, созданный перед визуализацией). Чтобы уменьшить время простоя GPU, мы загружаем каждую тайл-текстуру в видеопамять одним непрерывным куском (а не построчно) с помощью связки операторов glPixelStorei [15]. Отметим, что если ACMP-кадр не меняется, например, когда видео на паузе, то мы не выполняем повторную загрузку тайлов в текстурные объекты.

Рис. 6. Чтение тайла ACMP-кадра Fig. 6. Reading a tile of ACMP-frame

R

t

ОГГГГЛ,

a)

R

РПТОПГь

t

b)

R СГГГГГЛ,,

\\t/ s I fYYYYYYY) >,

_c)_

Рис. 7. Совместная работа рендер-потока и потока подкачки при: a) tr = Fig. 7. Co-working of render-thread and swap-thread at: a) tr = ts; b) t,

ts; b) tr < ts; c) tr > ts r = Is, b) lr < ts; c) tr > ts

S

t

t

S

4.2 Визуализация ACMP-кадров

Чтобы визуализировать ACMP-кадр, необходимо загрузить его сжатый образ из видеофайла в оперативную память (RAM) и декодировать в RGB-изображение. Это занимает определенное время, которое препятствует плавности визуализации ACMP-кадров. Чтобы решить эту задачу в данной работе реализуется подкачка (загрузка в RAM и декодирование) впередистоящих ACMP-кадров в кольцевой буфер Bri„g длины L, рассчитываемой с учетом размеров ACMP-видео, а также производительности используемых CPU и GPU. Подкачка ACMP-кадров в буфер Brt„g выполняется в параллельном потоке S (swap-thread), а управление потоком S осуществляет основной поток R визуализации (render-thread) на основе соотношения времен ts и tr подкачки и визуализации текущего ACMP-кадра. При этом обрабатываются следующие 3 возможных варианта совместной работы этих потоков. В первом варианте (tr = ts) пока используется текущий элемент (ACMP-кадр) буфера B„„g, в его предыдущий элемент подкачивается новый ACMP-кадр (см. рис. 7а). Данный случай является идеальным и не требует корректировки совместной работы потоков. Во втором варианте (tr < ts) рендер-поток выполняется быстрее и в какой-то момент догоняет поток подкачки (см. рис. 7b). В этом случае реализуется приостановка рендер-потока до полного заполнения буфера Brt„g потоком подкачки (иначе начнут повторно воспроизводиться уже проигранные ACMP-кадры). В третьем варианте (tr > ts) возникает обратная ситуация: поток подкачки выполняется быстрее и в некоторый момент времени догоняет рендер-поток (см. рис. 7c). В этой ситуации реализуется приостановка потока подкачки до появления в буфере Bri„g свободных для записи элементов (проигранных ACMP-кадров), иначе будут перезаписаны еще не проигранные ACMP-кадры.

5. Результаты

На основе предложенных методов и алгоритмов был разработан программный комплекс синтеза ACMP-видео виртуального окружения. Комплекс включает в себя модуль захвата ACMP-кадров, встраиваемый в подсистему визуализации СВО, а также плеер созданных ACMP-видео. Данное решение реализовано на языке С++ с применением графической библиотеки OpenGL и инструментария FFmpeg по кодированию/декодированию видео.

а) Ъ)

Рис. 8. Апробация программного комплекса синтеза ACMP-видео: а) кадр из ACMP-видео полета вдоль трассы МКС; b) воспроизведенная из кадра панорама Земли Fig. 8. Approbation of the program complex for ACMP-video synthesis: a) a frame from ACMP-video of the

flight along ISS orbit; b) Earth panorama reconstructed from the frame Созданное решение было апробировано в системе «Виртуальная Земля» [18] тренировки наблюдения объектов земной поверхности с орбиты Международной космической станции (МКС). С помощью модуля захвата было создано ACMP-видео полета вдоль трассы 2-го

суточного витка МКС для средства наблюдения с углом обзора ~ 40° и областью вывода 103x103 пикселов.

На рисунке 8а показан пример кадра, полученного ACMP-видео. Синтез ACMP-видео выполнялся с разрешением 3000x2000 пикселов и частотой 25 кадров/с на основе стандарта H.264 сжатия видео и контейнера MP4 (оба из международного стандарта MPEG-4). На рисунке 8b показано воспроизведение полученного ACMP-видео с помощью разработанного плеера. В процессе воспроизведения обучаемый совершает полет по орбите МКС, во время которого может исследовать виртуальную трехмерную поверхность Земли, поворачивая камеру в произвольном направлении. Апробация разработанного программного комплекса проводилась на компьютере (Intel Core i5 2.5 ГГц, 8 Гб RAM, 250Гб SSD), оборудованном видеокартой GeForce GTX 1050Ti (4Гб VRAM, 768 ядер).

Апробация показала, что при разрешении до 103x103 пикселов на грань куба создание ACMP-видео может выполняться в онлайн режиме, т.е. непосредственно в процессе работы СВО. Чтобы создавать ACMP-видео с более высоким разрешением, в будущем планируется развить предложенные методы и алгоритмы в направлении отложенной записи видеороликов [5] , при которой в онлайн режиме захватываются только динамические параметры виртуальной сцены (сценарий), а преобразование сценария в видеоролик выполняется уже в офлайн режиме.

6. Заключение

В статье рассмотрена задача создания и воспроизведения качественного панорамного видео с обзором 360 градусов на основе проекции виртуального окружения в кубическую карту. Эвристический выбор разрешения карты является проблематичным, т.к. при недостаточном разрешении ухудшается качество видео и теряется эффект погружения в виртуальную среду, а при избыточном - возрастает битрейт видеопотока и возникают задержки воспроизведения. Для решения этой проблемы в статье предложен ACMP-подход (Adequate Cubemap Projection), при котором разрешение кубической карты определяется с учетом угла обзора камеры зрителя и разрешения экрана. В работе выведена функция зависимости отношения «пиксел карты/пиксел экрана» от ориентации камеры, характеризующая качество визуализации панорамы. На основе исследования этой функции был разработан метод вычисления разрешения кубической карты для качественной визуализации панорамы при всех возможных ориентациях камеры.

В работе предложены эффективные метод и алгоритм создания ACMP-видео на GPU, основанные на технологии рендеринга в текстуру, которые позволяют выполнять построение кубических панорам c привязкой к направлению взгляда наблюдателя. Также в данной статье предложены эффективные методы и алгоритмы воспроизведения ACMP-видео, основанные на отборе для визуализации видимых участков ACMP-кадра и адаптивной буферизации ACMP-кадров в параллельном потоке. Полученные методы и алгоритмы были реализованы в программном комплексе, который включает в себя модуль захвата ACMP-кадров и плеер ACMP-видео.

Разработанный комплекс был апробирован в системе «Виртуальная Земля» тренировки наблюдения объектов земной поверхности с орбиты МКС. Было создано ACMP-видео, с помощью которого обучаемый может вне родительской СВО выполнить полет по орбите МКС над виртуальной трехмерной поверхностью Земли и исследовать ее, поворачивая камеру. Апробация комплекса подтвердила адекватность разработанных методов и алгоритмов поставленной задаче и выявила пути их дальнейшего развития. Полученные научные и практические результаты могут быть применены в системах виртуального окружения, имитационно-тренажерных комплексах, системах научной визуализации и виртуальных лабораториях, образовательных приложениях и др.

Список литературы / References

[1]. Михайлюк М.В., Мальцев А.В., Тимохин П.Ю., Страшнов Е.В., Крючков Б.И., Усов В.М. Системы виртуального окружения для прототипирования на моделирующих стендах использования космических роботов в пилотируемых полетах. Пилотируемые полеты в космос, том 35, № 2, 2020 г., стр. 61-75. / Mikhaylyuk M.V., Maltsev A.V., Timokhin P.Yu., Strashnov E.V., Kryuchkov B.I., Usov V.M. Virtual Environment Systems for Simulating Robots in Manned Space Fligts. Pilotiruemye polety v kosmos. Manned Spaceflight, vol. 35, № 2, 2020, pp. 61-75 (in Russian).

[2]. Барладян Б.Х., Шапиро Л.З., Маллачиев K.A., Хорошилов А.В., Солоделов Ю.А., Волобой А.Г., Галактионов В.А., Ковернинский И.В. Система визуализации для авиационной ОС реального времени JetOS. Труды ИСП РАН, том 32, вып. 1, 2020 г., стр. 57-70. DOI: 10.15514/ISPRAS-2020-32(1)-3 / Barladian B.Kh., Shapiro L.Z., Mallachiev K.A., Khoroshilov A.V., Solodelov Y.A., Voloboy A.G., Galaktionov V.A., Koverninskiy I.V. Rendering System for the Aircraft Real-Time OS JetOS. Trudy ISP RAN/Proc. ISP RAS, vol. 32, issue 1, 2020, pp. 57-70 (in Russian).

[3]. Михайлюк М.В., Торгашев М.А. Система визуализации "GLView" для имитационно-тренажерных комплексов и систем виртуального окружения. Труды 25-й Международной научной конференции GraphiCon, 2015, стр. 96-101 / Mikhaylyuk M.V., Torgashev M.A. The System of Visualization "GLView" for Simulators and Virtual Environment Systems. In Proc. of the 25th International Conference on Computer Graphics and Vision (GraphiCon 2015), 2015, pp. 96-101 (in Russian).

[4]. Страшнов Е.В., Мироненко И.Н., Финагин Л.А. Моделирование режимов полета квадрокоптера в системах виртуального окружения. Информационные технологии и вычислительные системы, № 1, 2020 г., стр. 85-94 / Strashnov E.V., Mironenko I.N., Finagin L.A. Simulation of quadcopter flight modes in virtual environment systems. Informacionnye tekhnologii i vichslitel'nye sistemy (Journal of Information Technologies and Computing Systems), № 1, 2020. pp. 85-94 (in Russian).

[5]. Тимохин П.Ю., Михайлюк М.В., Вожегов Е.М., Пантелей К.Д. Технология и методы отложенного синтеза 4К-стереороликов для сложных динамических виртуальных сцен. Труды ИСП РАН, том 31, вып. 4, 2019 г., стр. 61-72. DOI: 10.15514/ISPRAS-2019-31(4)-4. / Timokhin P.Yu., Mikhaylyuk M.V., Vozhegov E.M., Panteley K.D. Technology and methods for deferred synthesis of 4K stereo clips for complex dynamic virtual scenes. Trudy ISP RAN/Proc. ISP RAS, vol. 31, issue 4, 2019, pp. 61-72 (in Russian).

[6]. El-Ganainy T., Hefeeda M. Streaming Virtual Reality Content. arXiv:1612.08350, 2016..

[7]. Ray B., Jung J., Larabi M.-C. A Low-Complexity Video Encoder for Equirectangular Projected 360 Video Content. In Proc. of the IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). 2018, pp. 1723-1727

[8]. Li J., Wen Z., Li S., Zhao Y., Guo B., Wen J. Novel tile segmentation scheme for omnidirectional video. In Proc. of the IEEE International Conference on Image Processing (ICIP), 2016, pp. 370-374.

[9]. K.-T. Ng, S.-C. Chan, H.-Y. Shum. Data Compression and Transmission Aspects of Panoramic Videos. IEEE Transactions on Circuits and Systems for Video Technology, vol. 15, № 1, 2005, pp. 82-95

[10]. Brown C. Bringing pixels front and center in VR video. Google AR and VR, March 14, 2017. Available at: https://www.blog.google/products/google-ar-vr/bringing-pixels-front-and-center-vr-video/, accessed 18.03.2020.

[11]. Kuzyakov E., Liu S., Pio D. Optimizing 360 Video for Oculus. Facebook F8 developers conference, 2016. Available at: https://developers.facebook.com/videos/f8-2016/optimizing-360-video-for-oculus/, accessed 18.03.2020.

[12]. Chen Z., Wang X., Zhou Y., Zou L., Jiang J. Content-Aware Cubemap Projection for Panoramic Image via Deep Q-Learning. Lecture Notes in Computer Science, vol. 11962, 2020, pp. 304-315.

[13]. Fu C.-W., Wan L., Wong T.-T., Leung C.-S. The Rhombic Dodecahedron Map: An Efficient Scheme for Encoding Panoramic Video. IEEE Transactions on Multimedia, vol. 11, № 4, 2009, pp. 634-644.

[14]. Kuzyakov E., Pio D. Next-generation video encoding techniques for 360 video and VR. Available at: https://code.facebook.com/posts/1126354007399553/next-generation-video-encodin, accessed 18.03.2020.

[15]. Segal M., Akeley K. The OpenGL Graphics System: A Specification. Version 4.6, Core Profile. The Khronos Group Inc., 2006-2018. Available at: https://www.khronos.org/registry/OpenGL/specs/gl/ glspec46.core.pdf, accessed 18.03.2020.

[16]. FFmpeg. A complete, cross-platform solution to record, convert and stream audio and video. Available at: https://ffmpeg.org/, accessed 18.03.2020.

[17]. Timokhin P.Y., Mikhaylyuk M.V. Effective technology to visualize virtual environment using 360-degree video based on cubemap projection. In Proc. of International Conference on Computing for Physics and Technology (CPT2020), 2020.

[18]. Тимохин П.Ю. Моделирование видимого движения Земли вдоль участков суточной трассы МКС в космических видеотренажерах. Труды НИИСИ РАН, том. 9, № 6, 2019 г., стр. 111-117. DOI: 10.25682/NIISI.2019.6.0014 / Timokhin P.Yu. Simulation of visible Earth motion along daily tracks of ISS orbit in space simulators. Trudy NIISI RAN/Proc. of SRISA RAS, vol. 9, № 6, 2019, pp. 111-117 (in Russian).

Информация об авторах / Information about authors

Петр Юрьевич ТИМОХИН - старший научный сотрудник. Сфера научных интересов: компьютерная графика, визуализация.

Petr Yurievich TIMOKHIN - Senior Researcher. Research interests: computer graphics, visualization.

Михаил Васильевич МИХАЙЛЮК - доктор физико-математических наук, профессор, главный научный сотрудник. Сфера научных интересов: компьютерная графика, визуализация, системы виртуального окружения.

Mikhail Vasilievich MIKHAYLYUK - Doctor of Physical and Mathematical Sciences, Professor, Chief Researcher. Research interests: computer graphics, visualization, virtual environment systems.

Евгений Михайлович ВОЖЕГОВ - ведущий программист. Сфера научных интересов: компьютерная графика.

Evgeniy Mikhaylovich VOZHEGOV - Leading programmer. Research interests: computer graphics.

i Надоели баннеры? Вы всегда можете отключить рекламу.