РАЗРАБОТКА ТРЕНАЖЕРА ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ ЗАМЕНЫ ОБРАТНОГО КЛАПАНА НА ФОНТАННОЙ АРМАТУРЕ

ВЕСТНИК ЮГОРСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА

_2021 г. Выпуск 4 (63). С. 71-83_

DOI: 10.17816/byusu20210471-83 УДК 004.946

Е. И. Сафонов, Д. А. Парунов, А. Д. Синягин

РАЗРАБОТКА ТРЕНАЖЕРА ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ ЗАМЕНЫ ОБРАТНОГО КЛАПАНА НА ФОНТАННОЙ АРМАТУРЕ

В статье приводится описание этапов процесса создания тренажера виртуальной реальности на примере стандартной операционной процедуры замены обратного клапана на фонтанной арматуре. Описан краткий обзор устройства фонтанной арматуры и анализ этапов замены обратного клапана. Разработан краткий алгоритм на основе 11 из 16реализуемых этапов. Обосновывается выбор аппаратной платформы и программного обеспечения. На примере фонтанной арматуры описаны процессы создания трехмерной модели и развертки текстур в трехмерном редакторе 3ds Max, создание карт цвета, отражения и нормалей текстуры в графическом редакторе Substance Painter. Описан процесс создания ландшафта в среде Unity3D. При разработке основных скриптов были использованы ассеты Oculus Integration и VR TK.

Ключевые слова: виртуальная реальность, тренажер, Oculus Quest, Unity3D, стандартная операционная процедура, фонтанная арматура

Е. I. Safonov, D. A. Parunov, A. D. Sinyagin

DEVELOPMENT OF A VIRTUAL REALITY SIMULATOR REPLACING THE CHECK VALVE ON CHRISTMAS TREE

The article describes the stages of the process of creating a virtual reality simulator using the example of a standard operating procedure for replacing a check valve on a Christmas tree. A brief overview of the Christmas tree arrangement and an analysis of the stages of the check valve replacement are described. A short algorithm has been developed based on 11 out of 16 implemented stages. The choice of hardware platform and software is substantiated. Using the Christmas tree as an example, the processes of creating a three-dimensional model and unfolding textures in the three-dimensional editor 3ds Max, creating color maps, reflection and texture normals in the graphical editor Substance Painter are described. The process of creating a landscape in the Uni-ty3D environment is described. Oculus Integration and VR TK assets were used in the development of the main scripts.

Keywords: virtual reality, simulator, Oculus Quest, Unity3D, standard operating procedure, Christmas tree

Введение

Технология виртуальной реальности (далее УЯ) все более прочно укрепляется в сферах деятельности человека. Это несложно заметить по различным отраслям промышленности, которые активно внедряют их в свои процессы.

Обучение новых сотрудников неотъемлемая часть любого предприятия, но для газонефтедобывающей отрасли оно вызывает большие экономические расходы. Постройка учебного полигона или частичная остановка производства на период обучения, транспортировка персонала до места обучения, выдача каждому нового комплекта средств индивидуальной защиты, организация условий проживания и питания - все это приводит к очень большим экономическим затратам, особенно сейчас, в период пандемии Соу1ё-19.

Благодаря технологиям УЯ есть возможность разработать УЯ-тренажер, который значительно снизит расходы на обучение и периодическую аттестацию персонала.

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

УЯ-тренажер позволяет продемонстрировать обучающемуся более детально аспекты профессии без риска для здоровья и постройки дорогостоящих полигонов и установок; научить ориентироваться на местности, используя смоделированный виртуальный технологический процесс без частичной остановки производства, без значительных денежных и временных затрат на транспортировку персонала к месту обучения или аттестации.

В настоящее время УЯ-тренажеры набирают все большую и большую популярность, и становятся неотъемлемой технической составляющей многих компаний, работающих в самых различных областях деятельности. Всё больше и больше людей начинают пользоваться данным продуктом. Так, например, МГУ совместно с Центром подготовки космонавтов (ЦПК) им. Гагарина, усовершенствовали методы управления аэрокосмическими тренажерами с помощью современных УЯ-систем, это позволит сделать полеты безопаснее, а также значительно сократить затраты на подготовку летчиков.

С экономической точки зрения покупка необходимого оборудования для обучения является достаточно затратной, но так как УЯ позволяет заменить реальные объекты, например, дорогостоящие инструменты или оборудование, на виртуальные трехмерные модели, это приводит к нивелированию затрат в общем.

Краткий обзор устройства фонтанной арматуры

Фонтанная арматура (ФА) является одним из важнейших устройств в нефтегазовой отрасли [1]. Она монтируется на устье фонтанирующей скважины и своей конструкцией обеспечивает типовую обвязку трубопроводов, что позволяет управлять потоком среды в скважине и осуществлять основные контролирующие и производственные процессы.

Основными назначениями установки являются:

- герметизация нефтяной скважины;

- формирования отвода продукции;

- регулировка скважинного дебита;

- доступ к забою скважины;

- манипуляции в затрубном пространстве (проведение операции по забору проб из месторождения без остановки производства).

Такой обширный спектр назначений достигается за счет сложной конструкции фонтанной арматуры (рисунок 1).

Рисунок 1. Схематичное устройство фонтанной арматуры

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

- штуцер (штуцерный манифольд) - обеспечивает перераспределение или смешения потока газа или жидкости между трубами;

- пробоотборник позволяет брать пробу добываемого сырья без остановки производства;

- трубная и колонная головки обеспечивают герметизацию трубопровода и позволяют контролировать давление в трубах;

- обратный клапан защищает трубопровод от возникновения обратного движения добываемого сырья под действием встречного давления.

Но, как и любые другие установки в нашем мире, фонтанная арматура не может постоянно работать автономно. Детали склонны к изнашиванию и требуют периодичного обслуживания или замены. Комплекс мероприятий, связанных с обслуживанием установки на нефтяном месторождении, получил название «Стандартные операционные процедуры» (СОП).

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

Анализ этапов замены обратного клапана

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

В свою очередь, тренажер выполняет несколько функций:

- демонстрационная - основная функция, показ задуманных объектов;

- информационная - пользователи узнают из тренажера информацию об объекте;

- навигационная - заранее ознакомившись с планом местности, пользователь уже сможет ориентироваться в реальности;

- присутствие - виртуальная реальность позволяет ощутить себя в наблюдаемом месте;

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

Тренажер должен реализовывать последовательность действий, которая выполнятся при замене обратного клапана. Она включает в себя 16 этапов, но из них в реализации возможны лишь 11, это обусловлено тем, что не все этапы могут иметь программную реализацию, но это не зна-

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

Разберем этапы последовательности, на основе которых будет сформирован будущий алгоритм замены обратного клапана:

Этап 1. Проверить все оборудование и используемые средства индивидуальной защиты. Вспомнить все шаги, которые необходимо предпринять при возникновении какой-либо опасности.

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

Пользователь должен будет надеть все необходимые средства индивидуальной защиты (СИЗ) и отправить на месторождение.

Этап 2. Произвести кнопочную остановку скважины, так же установить табличку, предупреждающую других сотрудников о том, что ведутся технические работы. Обратить внимание, что необходимо держаться на поручень при подъеме/спуске по лестнице для обеспечения заземления комплектная трансформаторная подстанция наружная (КТПН), трехфазные масляные трансформаторы для погружных насосов с маслорасширителем (ТМПН) и сепара-ционная установка (СУ).

Пользователь должен будет добраться до электрощитка и произвести ручную остановку добывающей скважины.

Этап 3. Закрыть задвижки, которые расположены на выкидной линии и подводе к месту, где установлен сам обратный клапан. Обратить внимание, что после закрытия всех задвижек, необходимо ослабить все штурвалы на У оборота.

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

Этап 4. Снизить давление в манифольде до атмосферного, используя имеющийся вентиль и пробоотборник, вентиль после этого оставить открытым.

Пользователю необходимо нажать на кран пробоотборника, чтобы снизить давление в установке.

Этап 5. Произвести демонтаж обратного клапана выкручиванием против часовой стрелки, используя универсальный разводной ключ. Обратить внимание на то, что возможен вылет клапана под сильным давлением, не находиться в опасной зоне по траектории возможного движения.

Пользователю необходимо выкрутить старый обратный клапан из фонтанной арматуры, использую универсальный разводной ключ.

Этап 6. Подготовить новый обратный клапан для установки в фонтанную арматуру, обмотать резьбу фумлентой и установить пластиковую прокладку. Обратить внимание на целостность прокладки, возможны пропуски.

Пользователю необходимо установить новый обратный клапан в фонтанную арматуру.

Этап 7. Произвести монтаж обратного клапана путем вкручивания его по часовой стрелке, использую универсальный разводной ключ.

Пользователь должен закрутить установленный в фонтанную арматуру клапан с помощью универсального разводного ключа.

Этап 8. Убедиться в том, что риска обратного клапана после установки направлена вертикальной вниз

Пользователь должен проверить, верно ли установлен и закручен клапан.

Этап 9. Опрессовать обратный клапан путем открытия рабочей задвижки, находящейся перед клапаном

Пользователю необходимо в правильно последовательности раскрутить ранее закрученные вентиля.

Этап 10. Открыть все оставшиеся задвижки на фонтанной арматуре и выкидной линии.

Пользователю необходимо в правильно последовательности раскрутить ранее закрученные вентиля.

Этап 11. Запустить электроприводной центробежный насос (ЭЦН) в работу. Обратить внимание на наличие подачи сырья и отсутствии пропусков по обратному клапану после запуска ЭЦН.

Пользователь должен будет добраться до электрощитка и произвести ручной запуск добывающей скважины.

Аппаратная платформа

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

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

Всего существует два вида устройств:

- проводные;

- беспроводные.

Проводные VR самые производительные, т.к. они являются источником вывода изображения, а все вычисления производятся на подключенном компьютере, который должен соответствовать минимальным системным требованиям [2]:

- процессор: Intel i5-4590 / AND FX 8350;

- оперативная память: 4 GB;

- операционная система: Windows 7 64-bit (Service Pack 1) or newer;

- видеокарта: NVIDIA GeForce GTX 970 / AMD Radeon R9 290;

- выделенная видео память: 4096 MB.

В среднем покупка проводного VR-шлема и компьютера обойдется в более чем 150 тыс. рублей.

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

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

Беспроводные устройства делятся на две группы:

- VR-box;

- автономные шлемы.

Сразу стоит убрать из рассматриваемых устройств VR-box использующие смартфоны как экран. К основным недостаткам можно отнести то, что шлем нельзя синхронизировать с компьютером и модели таких шлемов поставляются чаще всего без контроллеров, но есть и исключения, однако контроллер не оснащен гироскопом или акселерометром, что ограничивает управление.

Рассмотрим автономные VR-шлема, которые совмещают плюсы двух ранее рассмотренных типов устройств: проводных и мобильных.

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

Контроллеры ничем не отличаются от подобных котроллеров у проводных устройств.

Вес шлема меньше, чем у проводных типов. Благодаря этому от длительного использования шея не так сильно устает.

Используя возможность синхронизации с компьютером, можно использовать такой шлем как источник вывода изображения, как делает это проводные типы VR. Это позволяет использовать мощности компьютера. Однако синхронизацию можно проводить не только при помощи кабеля, но и беспроводным образом подключив шлем к одной сети с компьютером, используя Wi-Fi. Это расширяет использование данного вида шлемов.

Стоимость беспроводного шлема не превышает 50 тыс. рублей, что практически сопоставимо со стоимостью одного беспроводного модуля для проводного аналога.

Таким образом, автономный тип шлемов виртуальной реальности отлично походит для целей разработки. Для разработки была выбрана одна из последних моделей автономных шлемов виртуальной реальности - Quest 2 от компании Oculus.

Программное обеспечение

Реализация алгоритмов будет вестись в кроссплатформенной среде разработки Unity3d разработанной американской компанией Unity Technologies сотрудничающей с компаний Oculus.

Следующим рассматриваемым ПО будут программные пакеты для создания и текстури-рования 3D моделей. Для достижения цели проекта важно перенести реальные объекты в виртуальное пространство. Для этого необходимо создать модели используя примеры реальных объектов.

Для создания моделей будет использоваться 3D редактор 3dsMax. Выбор был сделан в виду продолжительного времени работы с данным редактором.

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

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

Специализированные программные инструменты для текстурирования располагают большим функционалом. Самым популярным из них является Substance Painter [3], разработанный Allegorithmic, дочерней компанией Adobe.

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

Substance Painter распространяется по платной ежемесячной подписке, однако есть возможность использования edu-подписки, которая дает бесплатное использования программы на определенный срок.

Аналогов у данного инструмента мало и все они обладают скромным по сравнению с Substance Painter функционалом.

Создание трехмерной модели

Для создания приблизительного окружения нефтяного месторождения необходимо не только создать ландшафт, но и заполнить это окружение объектами присущими данному виду деятельности.

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

Исходя из отсутствия необходимых моделей, было принято решение создать их самостоятельно при помощи выбранных инструментов.

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

• Модель персонажа;

• Ландшафт месторождения; о Здание раздевалки;

Большой шкафчик (не детализированный);

Маленький шкафчик (не детализированный);

Маленький шкафчик (детализированный);

Сапоги;

Перчатки;

Каска;

о Платформа;

Электрощитовые шкафы;

Погружные трансформаторы;

Трансформаторная будка;

Массомер;

о Арка с коммуникациями; о Станок-качалка; о Фонтанная арматура;

Обратный клапан;

Гаечный ключ.

Рассмотрим создание трехмерной модели фонтанной арматуры. Любую трехмерную модель необходимо представлять, как набор примитивов

Относительно геометрических фигур схематично фонтанную арматуру можно разбить на 4 части, рисунок 2.

Рисунок 2. Схема разбиения фонтанной арматуры

1. Блоки усиления основной трубы представляют собой цилиндры разного радиуса, вставленные друг в друга, показаны желтым.

Создание таких блоков достаточно примитивное. Либо создаются цилиндры необходимых радиусов, затем они вставляются друг в друга. Либо создаётся один цилиндр, в котором полигон основания изменяет свой радиус и затем выдавливается, лучше всего для этого подходит инструмент «Bevel» из блока «Edit Polygons». Первый способ экономит некоторое количество полигонов т.к. в полигоне основания меньше полигонов (n-2) чем в соединении цилиндров разного радиусов (n), где n - количество круговых сегментов основания.

2. Блоки герметизации представляют собой один цилиндр с расположенными по периметру цилиндрами меньшего радиуса имитирующие болты и гайки, показаны синим.

Создание таких блоков аналогично созданию блоков усиления основной трубы.

3. Основная труба представляет собой цилиндр с изменением радиусов сегментов и угла поворота, показана красным.

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

Для изменения радиуса сегментов просто выделяем точки и изменяем их масштаб (Scale) относительно других точек.

1. Вентили представляют собой замкнутый цилиндр с небольшим цилиндром посередине и двумя пересекающимися тонкими параллелограммами, показаны зеленым.

Замкнутый цилиндр создаётся, используя инструменты выдавливания полигона вдоль сплайна.

Создание текстуры

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

Для создания развертки текстуры необходимо выделить все элементы фонтанной арматуры и воспользоваться модификатором «Unwrap UVW». Последовательно необходимо создавать развертку для каждого элемента фонтанной арматуры придерживаясь следующих правил.

Если элемент не замкнутый, то можно использовать инструменты «Mapping», которые постараются представить полигоны элемента как проекцию.

Если элемент замкнутый, например, цилиндр или куб, то необходимо воспользоваться инструментами раскройки по шву и растяжения «Seam» и «Pelt». Проделанные операции приведут текстуру элемента к хорошо растянутому виду.

Данную процедуру необходимо повторить для каждого элемента модели. Затем выделив все элементы модели используя инструмент «Pack» упаковать развертки всех элементов в квадрат, на котором затем будет располагаться текстура, рисунок 3.

Рисунок 3. Развертка текстуры

Для создания текстуры необходимо открыть файл с трехмерной моделью в Substance Painter. Загруженный меш модели как было описано в прошлом разделе заранее разделен на текстурные сеты. Текстурные сеты задаются материалами в редакторе, а для создания текстур используются слои.

Каждый слой содержит настраиваемые параметры: проекция, размер и поворот. У материалов также есть настраиваемые параметры: карты высот, шероховатостей, метала, нормали и цвет.

Каждый слой имеет маску: черная - пустая, белая означает полное заполнение развертки текстурой. В сетах заполняется развертка, которая относится именно к выбранному сету.

У каждой маски или целого слоя есть набор модификаторов:

• Generator, для создания определенной текстуры, например, стертые углы на предмете. Генераторы используют запеченные карты;

• Paint, для редактирования текстур вручную, содержит несколько видов нанесения текстур:

o Brush, полигонально, шаблоном, штампом, также содержит настраиваемые

параметры, например, форма и размер кисти, прозрачность кисти;

o Fill, используется для маски цвета, с его помощью можно создавать, например,

ржавчину или грязь;

o Levels, используется для изменения уровней отображения карт; o Compare mask, используется для изменения параметров маски.

Для создания ржавчины на металле, используется слой с модификаторами «Paint» и «Fill». В параметрах «Fill» выберем маску «Grayscale» для материала ржавчины. И для использования всех карт, перенесем выбранный материал в пункт «Material mode».

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

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

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

Соединения труб сваркой можно изобразить при помощи карты высот. Для этого в параметрах созданного слоя заливки нужно настроить параметр «Height», который отвечает за имитацию высоты (значения >0 и <=1) и углубления (значения <0 и >=-1).

Для рисования швов используем кисти, который стоит по умолчанию в модификаторе «Paint». В кисти параметр альфа отвечает за её форму. Нарисовав линии на стыках труб, можно получить линии сварки, которые выглядят объемными как раз за счет карты высоты, рисунок 4.

Рисунок 4. Вид текстуры на трехмерной модели

Создание ландшафта

Создание ландшафта будет производиться с использованием встроенных инструментов в среде Unity3d.

Используя «Paint Terrain» и выбрав пункт «Stamp Terrain (Extended)» можно поднимать или опускать ландшафт используя кисти. У кисти есть несколько характеристик для удобства создания ландшафта:

- Уровень подъема (Stamp Height) - определяет степень влияния на ландшафт;

- Инвертировать уровень подъема (Invert Stamp Height) - изменяет степень влияние на ландшафт на противоположное;

- Размер кисти (Brush Size) - изменяет площадь воздействия кисти на ландшафт;

- Прозрачность (Opacity) - определяет сглаживаемость уровней подъема;

- Поворот (Rotation) - определяет угол поворот кисти.

Выбрав пункт «Paint Texture» можно окрашивать ландшафт различными текстурами используя кисти.

Далее используя «Paint Details» добавим немного растительности (рисунок 2.19) на ландшафт.

Чтобы достичь максимального эффекта погружения создадим префаб представляющий собой плоскость (Plane), материалом к которому будет являться текстура леса с альфа каналом

Так же необходимо добавить деталей на небо, например, облака. Облака добавим, используя полусферу с примененным к ней материалом облаков с альфа каналом

Всё что осталось - это расставить трехмерные модели на ландшафте. Смоделирована и построена локация с нефтяным месторождением, рисунок 5.

Рисунок 5. Месторождение с окружением

Разработка скриптов поведения

Для начала необходимо скачать и импортировать ассет «Oculus Integration» в проект Unity3d. В нем содержаться основные базовые элементы для взаимодействия с виртуальной средой.

В иерархии объектов «Unity» необходимо удалить из сцены элемент «MainCamera». Далее добавить на сцену объект «OVRPlayerController» и передвинуть его чтобы он был поверх ландшафта. Нужно добавить в «LeftControllerAnchor» и «RightControllerAnchor», «Cus-tomHandLeft» и «CustomHandRight», соответственно. Так как в проекте мы планируем взаимодействовать с объектами будем использовать «CustomHand» на руках.

Для взаимодействия с предметом к нему должен быть применен скрипт «OVR Grabbable».

Для нормального определения высоты контроллера требуется в элементе «OVRPlayerController» найти «OVRCameraRig» найти компонент скрипт «OVR Manager» в нем список «Tracking Origin Type» и выбрать элемент списка «Floor Level».

Для того, чтобы объект не двигал аватар требуется в элементах рук найти скрипт «OV-RGrabber» и в нем отметить пункт «Parent Held Object».

Для того чтобы указать положение руки на объекте требуется на время сдвинуть его в нулевые координаты с нулевыми углами вращением. После чего добавить пустой объект на сцену, проверить что он находится в нулевых координатах с нулевыми углами вращения. После чего выставляем этот объект как требуется (он будет точкой смещения руки относительно объекта хватания). Далее сохраняем пустой объект в префаб и указываем этот префаб в скрипте «OVR Grabbable» в поле «Snap offset» после чего пустой объект можно удалить со сцены и вернуть предмет в изначальную позицию.

Чтобы изменить хват руки, когда она берет тот или иной предмет, требуется на предмет добавить скрипт «Hand Pose» в нем выбрать из списка «Pose Id» ту позу, в которой должна быть рука.

После установки и настройки ассета «Oculus Intégration» описанного выше, требуется установить ассет «VR TK».

Большинство необходимых скриптов можно найти в примерах ассета «VR TK»:

- присоединение предмета к точке;

- вращение вентиля;

- взятие в руку гаечного ключа.

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

1) Открутить старый обратный клапан;

2) Вытащить старый обратный клапан из фонтанной арматуры;

3) Установить новый обратный клапан в фонтанную арматуру;

4) Задвинуть новый обратный клапан до положения закручивания;

5) Закрутить новый обратной клапан.

На основе этого алгоритма в каждом используемом модуле был составлен программный код, отвечающий за работу модуля согласно последовательности действий.

При установленном клапане к нему прикрепляется универсальный разводный ключ и в зависимости от текущего состояния (Была ли произведена ЗОК, старый или новый клапан сейчас установлен) клапан можно будет раскрутить или закрутить. Двигающийся клапан в фонтанной арматуре. Он захватывается рукой пользователя и так же в зависимости от текущего состояния (Вытаскиваем старый клапан или задвигаем новый) клапан будет задвигаться в фонтанную арматуру или выдвигаться из неё.

Опишем набор скриптов для последовательности действий.

Создадим скрипт «Task» содержащий описание задачи «Description», завершенность задачи «_isComplited». Так как задача может быть составной метод «CheckChildren» проверяет наличие подзадач в этой задаче. Метод «GetDistance» проверяет расстояние до объекта/области задачи, это необходимо для создания типов задач.

Создадим скрипт задачи, описывающий перемещение объекта в нужную нам точку -«TaskDropToPosition». Унаследуем его от класса «Task» и реализуем абстрактный метод «CheckComplited» описывающий условие завершения задачи, а именно сброс объекта «whatlsDropped» в зону «positionToDrop».

Создадим скрипт задачи, описывающий перемещение аватара в нужную позицию -«TaskMoveTo». Унаследуем его от класса «Task» и реализуем абстрактный метод «CheckComplited» описывающий условие завершения задачи, а именно перемещение объекта «whatWillGo» в зону «positionToMove».

Создадим скрипт задачи, описывающий взятие предмета - «TaskPickUp». Унаследуем его от класса «Task» и реализуем абстрактный метод «CheckComplited» описывающий условие завершения задачи, а именно взятие объекта «itemPickUp» объектом «carrier».

Создадим скрипт «Quest» содержащий список задач «_tasks», текущую задачу «_currentTask», заголовок «_title» и время обновления задач «periodUpdate». В методе «Start» проверяется наличие задач и начинается отчет с первой введенной задачи. Далее в методе «Update» происходит проверка завершенности задач и, в случае, когда завершена последняя задача квест завершается.

Создаем объект для отображения результата работы скрипта. Это может быть любой объект содержащий элемент «Canvas». В «Canvas» следует выставить следующие настройки: «Render Mode» - «World Space»; «Rect Transform»: «PosX», «PosY» = 0; «Width», «Height» = 1.

Сам квест можно создавать на отдельном пустом объекте добавив на него скрипт «Quest» также на него нужно установить все используемые задачи. И в квесте по порядку

исполнения добавить задачи в лист «Tasks», установить период обновления квеста, и название квеста.

Чтобы установить отображение квеста требуется отправить в «ViewTask» в метод «SetQuest» тот квест, который требуется отобразить.

На данный момент имеется три типа заданий:

- поднять предмет;

- двигаться к точке;

- бросить предмет в точке.

Чтобы использовать задания требуется полностью заполнить необходимые поля. К примеру, в задании с подъемом предмета требуется:

- описать задание;

- добавить предмет с маркером;

- добавить того, кто должен поднять предмет.

Заключение

Разработано программное обеспечение-прототип тренажера виртуальной реальности по стандартной операционной процедуре «Замена обратного клапана на фонтанной арматуре». Достигнут приемлемый уровень погружения за счет создания качественных трехмерных моделей, текстур и окружения. Разработанные скрипты позволяют взаимодействовать с объектами виртуальной реальности и последовательно следовать этапам по замене обратного клапана.

Литература

1. Фонтанная арматура скважины: обвязка, опрессовка, устройства. - Текст : электронный // Портал об арматуре и сетках. - URL: https://armaturniy.ru/arm/vidy/fontannaya-armatura.html (дата обращения: 26.08.2021).

2. Выберите VR-систему, подходящую именно Вам. - Текст : электронный // VIVE Россия и СНГ. - URL: https://www.vive.com/ru/product/ (дата обращения: 26.08.2021).

3. Substance 3D Painter. - Текст : электронный // Substance 3D Painter. - URL: https://substance3d.adobe.com/documentation/spdoc/substance-3d-painter-20316164.html (дата обращения: 26.08.2021).