XII Международная научно-практическая конференция УДК 004.9
Рововой Эдуард Юрьевич Rovovoy Eduard Yurievich, Иванов Максим Вячеславович Ivanov Maxim Vyacheslavovich, Киселев Иван Александрович Kiselev Ivan Aleksandrovich Студент Student
Санкт-Петербургский политехнический университет Петра Великого Peter the Great St.Petersburg Polytechnic University
СОЗДАНИЕ AR-ПРИЛОЖЕНИЯ НА БАЗЕ UNITY 3D CREATING AN AR-APPLICATION BASED ON UNITY 3D
Аннотация: приложение, в котором посредством технологии дополненной реальности (AR-технология) осуществляется анимация сборки-разборки узла машинного агрегата.
Abstract: an application in which the assembly and disassembly of a machine assembly unit is animated using augmented reality technology (AR-technology).
Ключевые слова: AR-технология, Компас-3D, UNITY, Blender, Vuforia, Visual Studio
Key words: AR-technology, Kompas-3D, UNITY, Blender, Vuforia, Visual
Studio.
AR-технологии (технологии дополненной реальности) позволяют инженерам визуализировать созданные ими проекты, выявлять в них недочеты на ранних этапах проектирования. Поэтому разработка AR-программ является крайне перспективной.
Основой проекта послужила модель упругой торообразной муфты, созданной в программе САПР Компас 3D (рис. 1).
Следующим этапом модель была экспортирована в Blender в формате .wrl. Затем создан «скелет» модели (рис. 2), предназначенный для упрощения процесса анимации и беспроблемного переноса этих же анимаций в UNITY.
Рис. 2. Модель с готовым скелетом в Blender
Для демонстрации сборки-разборки муфты необходимо создание анимаций. Они были заданы через кости. В одном положении на временном отрезке (timeline), например, 0, вводилось Insert Keyframes по x,y,z, в другом временно промежутке, например, 30 кадр, деталь перемещалась, и вводились новые Keyframes (рис. 3).
Рис. 3. Модель с готовым скелетом в Blender
В UNITY создаем новый проект. Создаем папку Models, туда переносим нашу модель в формате .fbx, которая содержит в себе все детали и анимации (рис. 4).
Assets > Models
SborKax» Armature Armature... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... No Name Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn...
El О Щ Л Л Л Л * О ¿m ^ о ^ *
Shapejn... Shapejn... S*apeJ,.. Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn...
[ о о ¿m О О ^ ' } ' } О m & О В
[ о * о Ф' о О О BH
Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Shapejn... Armature... Armature... Armature...
Рис. 4. Файлы модели в UNITY
Перетаскиваем в рабочую область модель и настраиваем расположение камеры для лучшего обзора. Открываем меню камеры и нажимаем кнопку Add component. В открывшемся меню выбираем пункт New Script. Автоматически создаётся пустой файл в формате .cs [0]. Для его редактирования переходим в Visual Studio. Суть скрипта -привязать к конкретным клавишам перемещения камеры. При однократном нажатии происходит единичное перемещение вдоль
Инновационные аспекты развития науки и техники базисного вектора в том или ином направлении. За перемещения в горизонтальной плоскости будут отвечать клавиши ",А,Б,В, в горизонтальной плоскости - Q и Е, а поворот вокруг вертикальной оси будет осуществляться при помощи мыши при нажатой средней кнопке (рис.5).
CameraScript.cs -ft X AnimScript.cs
[с*1 Прочие файлы - CameraScript
7 public int par-am = 0;
8 public float speed = 1.0fj
10 // Start is called before the first frame update
11 void Start()
12 {
13
14
15
16 // Update is called once per frame
17 void Update()
18 {
19 float coef = Time.deltaTime * speed;
20 if (Input.6etKey(KeyCode.D))
21 {
22 transform.Translate(Vector3.right*coef);
23 y
24 if (Input-GetKey(KeyCode.A))
25 {
26 transform.Translate(Vector3.left * coef);
27 }
28 if (Input.6etKey(KeyCode.W))
29 {
30 transform.Translate(Vector3.forward * coef);
31 }
32 if (Input.6etKey(KeyCode.S))
33 {
34 transform.Translate(Vector3.back * coef);
35 }
36 if (Input.GetKey(KeyCode.E))
37 {
38 transform.Translate(Vector3.up * coef);
39 >
40 if (Input.6etKey(KeyCode.Q))
41 {
42 transform.Translate(Vector3.down * coef);
43/ >
44 if (Input.GetMouseButton(l)) //right btn
45 transform.Rotate(-Input.6etAxis("House Y"), Input.GetAxis("House X"), 0);
46 }
47 }
48
Рис. 4. Скрипт камеры в Unity
Для управления анимацией создадим кнопки Razborka и Sborka. Для этого в дереве проекта выбираем UI - Button. Располагаем и масштабируем кнопки как нам удобно (рис. 5). Так как приложение планируется использовать на мобильных устройствах с различным расширением экрана, в редакторе настраиваем привязку кнопок к нижнему краю.
Рис. 5. Кнопки управления сборкой/разборкой
Создаём новый скрипт AnimScript и добавляем, как компонент к нашей модели. Данный скрипт будет отвечать за взамодействие между кнопками и анимацией [2]. Открываем его в Visual Studio и создаём 2 публичных класса соответствующих сборке и разборке. Возвращаемся в свойства модели и добавляем скрипт как её компонент. Последовательно переходим в аналогичные меню кнопок и в области On click добавляем модель, а в соседнем раскрывающемся списке в зависимости от назначения кнопки выбираем тот или иной класс скрипта (рис. 6). Во вкладке Project при помощи функции Create создаём объект Animator Controller, управляющий проигрыванием анимации, и в меню модели добавляем его в пункте Controller.
Переходим во вкладку Animator и копируем в её рабочее поле все те анимации, которые были импортированы из Blender'а вместе с моделью (рис. 7). Создаём дубликат анимации, в свойстве Speed которой указываем «-1». Таким образом у нас есть наборы анимаций как для разборки, так и для сборки. В центр схемы помещаем объект Any State, который уже находится в рабочем поле. Его функция -
Инновационные аспекты развития науки и техники переход из одного состояния в другое в зависимости от значения задаваемого параметра.
TieraScript.cs Прочие файлы
22 В
23 I
27 ^
28 В
29
39 В
AnimScript.cs -в X
// Update is called once per frarre
vo id Update ()| {
public void Asm() {
if(State > 0) {
State--;
ani.Setlnteger("StateNumber", State); }
>
public void DisAsmQ {
if (State < 1) {
State++;
ani.Setlnteger("StateNumber", State);
}
Рис. 6. Скрипт работы кнопок управления сборкой/разборкой
Рис. 7. Аниматор
Для работы с дополненной реальностью используем пакет УиГопа. После установки добавляем в проект АК-камеру и плоский объект (картинку4а^е11), на который будет проецироваться модель (рис. 8).
Рис. 8. AR-камера и target
Далее в File-Building Settings задаем платформу Android и создаем APK файл с нашим именем.
Загружаем приложение на Android-смартфон (рис. 9). Открываем приложение, наводим на нашу картинку-target и получаем нашу модель, которую можно разобрать и собрать.
Рис. 9. Работа приложения на смартфоне
Мобильное приложение с дополненной реальностью может стать удобным и полезным инструментом в руках инженера. В дальнейшем
Инновационные аспекты развития науки и техники может быть создано полноценное приложение, которое облегчить работу инженеров.
сможет
Библиографический список:
1. Руководство пользователя UNITY [Электронный https://docs.unity3d.com/Manual (дата обращения 10.03.2021).
2. Руководство пользователя Vuforia [Электронный https://docs.unity3d.eom/2019.1/Documentation/Manual/vuforia обращения 09.03.2021).
© Э.Ю. Рововой, 2021 М.В. Иванов, 2021 И. А. Киселев, 2021
ресурс]:
ресурс]: (дата