Simulation Manager - плагин, который позволяет связать сторонний программный код или скрипт с ПО VR Concept для взаимодействия с моделью и создания динамики в сцене.
Связь происходит с помощью UDP.
1. Перейдите в боковую вкладку “Плагины” и верхнее меню “Плагины”.
2. Нажмите на кнопку “Добавить”.

3. В открывшемся окне найдите плагин “SimulationManager ” и поставьте напротив него галочку.
4 . Нажмите “ОК”.
5. Плагин добавиться в “Пользовательские плагины” и станет активным.

Тэг наблюдателя (Humaninput Tag) - задаёт тэг клиента, для отслеживания его положения и ориентации в пространстве.
Адрес хоста - задаёт IP-адрес VR Concept, с которого будет происходить отправка данных.
Порт для приёма - задаёт порт для приёма данных в VR Concept.
Порт для отправки - задаёт порт для отправки данных из VR Concept.
Размер буфера для отправки - задаёт количество значений отправляемых из VR Concept.
Передавать положение головы - включение передачи положения головы.
Индекс положения головы в выходном массиве - задаёт индекс положения головы в выходном массиве.
Передавать ориентацию головы - включение передачи ориентации головы.
Индекс ориентации головы в выходном массиве - задаёт индекс ориентации головы в выходном массиве.
Передавать количество клиентов - включение передачи количества клиентов в сессии.
Индекс количества клиентов в выходном массиве - задаёт индекс количества клиентов в выходном массиве

Количество величин для симуляции - задаёт количество величин, которые будут передаваться в VR Concept.
Количество возвращаемых величин - задаёт количество данных, которые будут отправляться из VR Concept.
Показывать окно - включение отображения окна.
Показывать заголовок - включение отображения заголовка у окна.
Текст заголовка - задаёт статический текст заголовка окна.
Ширина окна - задаёт ширину окна, измеряется в метрах.
Привязать положение окна – включение привязки положения окна к положению объекта.
Положение окна - задаёт координаты положения окна по трём осям X/Y/Z.
Ориентация окна - задаёт координаты ориентации окна по трём осям X/Y/Z.
Настройка величин для симуляции - задаёт команду, которая будет принимать значение в VR Concept.
Настройка возвращаемых величин - задаёт команду, которая будет отправлять значение из VR Concept.
В свойстве "Настройка величин для симуляции " - формат записи: <тип>:<индекс>:<пар2>:<пар3>:<пар4>.
<тип> - команда, которую нужно выполнить при входящем пакете.
<индекс> - индекс параметра входящего пакета.
1. Тип "move" - перемещение объекта.
Пример: move:0:1.0:1,1,1 (0 - индекс:1.0 - коэффициент масштабирования:1,1,1 - перемещение по осям)
2. Тип "rotate" - вращение объект.
Пример: rotate:1:1.0:1,0,0 (1 - индекс:1.0 - коэффициент масштабирования:1,0,0 - поворот по оси X)
Пример: rotate:2:1.0:0,1,0 (2 - индекс:1.0 - коэффициент масштабирования:0,1,0 - поворот по оси Y)
Пример: rotate:3:1.0:0,0,1 (3 - индекс:1.0 - коэффициент масштабирования:0,0,1 - поворот по оси Z)
3. Тип "display" - вывести в окно значение.
Пример: display:2:1:Так :4 (2 - индекс:1 - количество символов после запятой: “Так”:4 - сдвиг значения от описания )
4. Тип "sound" - вывести звук.
Задавать элементу модели.
Форматы, которые можно использовать: mp3, wav, flac, acc, ogg, mp4, mkv, webm
Команды для отправки:
"0" - остановить воспроизведение.
"от 0 до 1" - громкость проигрывания (запуск проигрывания: 1).
Чтобы запустить звук еще раз, после одиночного проигрывания, сначала остановите воспроизведение и отправьте запуск проигрывания еще раз.
Пример: sound:3:step1.wav (3 - индекс:step1.wav - файл который необходимо проиграть. Файл проигрывается один раз.)
Пример: sound:4:LOOP:step1.wav (3 - индекс:LOOP - музыка проигрывается циклично:step1.wav - файл который необходимо проиграть)
5. Тип "ambient","diffuse","specular","emission","shininess", “opacity” - материал объекта.
См. свойство “Материал”.
Для "shininess", “opacity” - показатель блеска, прозрачность:
Пример: opacity:4:1 (4 - индекс:1 - значение непрозрачности)
Для"ambient","diffuse","specular","emission" - амбиентный цвет, диффузный цвет, цвет свечение, цвет бликов:
Пример: ambient:5 (5 - индекс)
Передаётся число - 479132
479132 / 256 = 1871 (Остаток 156)
1871 / 256 = 7 (Остаток 79)
7 / 256 = 0 (Остаток 7)
RGB код будет равен (156, 79, 7)
6. Тип “animation” - проигрывание анимации.
Необходимо применять только на корневой элемент объекта, у которого есть свойство “Параметры анимации”.
На данный момент возможно проигрывание только оригинальных анимаций.
Пример: animation:0:Take 001:LOOP(0 - индекс:Take 001 - Имя анимации которую нужно проиграть:LOOP - проигрывать циклично)
Команды для отправки:
"<индекс> 0" - остановить воспроизведение для LOOP, ONCE.
"<индекс> 1" - запуск анимации для LOOP, ONCE.
"<индекс> -1" - запуск анимации в обратном порядке для LOOP, ONCE.
"<индекс> (от 0 до 1)" - замедление воспроизведение анимации.
"<индекс> 1" - сброс для RESET.
7. Тип: "scale" - масштабирование.
Пример: scale:0:1.0:2,2,2 (0 - индекс:1.0 - коэффициент масштабирования:2,2,2 - масштабирование по осям)
8. Тип: "follower" - управление следованием.
Пример: follower:0:VRC (0 - индекс:VRC - тэг клиента)
Команды для отправки:
"1" - отключить следование.
"2" - включение следования без блокировки вращения.
"2" - включение следования с блокировкой вращения.
В свойстве "Настройка возвращаемых величин" - формат записи: <тип>:<индекс>:<пар2>:<пар3>.
<тип> - команда, которую нужно выполнить при выходящем пакете.
<индекс> - индекс параметра выходящего пакета.
1. Тип "rot_angle" - отправить поворот объекта
Пример: rot_angle:0:0,45 (0-индекс:0 - минимальный, 45 - максимальный угол)
После написания команды добавляется свойство “Вращение вокруг оси”.
Необходимо указать следующие параметры:
- Центр вращения в центре детали(включить\выключить при необходимости);
- Центр вращения(настроить при необходимости);
- Ограничить вращение(активировать);
- Минимальный/Максимальный угол(задать значения минимального и максимального угла вращения, которые написаны указаны в команде).
2. Тип "position" - получить позицию объекта (передаётся в трёх строках, тремя параметрами для трёх осей XYZ)
Пример: position:23:0:1,0,0 (23 - индекс:0 - глобальные координаты:1,0,0 - по оси X)
Пример: position:24:0:0,1,0 (24 - индекс:0 - глобальные координаты:0,1,0 - по оси Y)
Пример: position:25:0:0,0,1 (23 - индекс:0 - глобальные координаты:0,0,1 - по оси Z)
3. Тип "orientation" - ориентация в пространстве.
Пример: orientation:31:0 (31 - индекс:0 - глобальная ориентация)
Возвращается 3 значения по индексам 31, 32, 33.
4. Тип "scale" - получить масштаб объекта (передаётся в трёх строках, тремя параметрами для трёх осей XYZ)
Пример: scale:26:0:1,0,0 (26 - индекс:0 - глобальный масштаб:1,0,0 - по оси X)
Пример: scale:27:0:0,1,0 (27 - индекс:0 - глобальный масштаб:0,1,0 - по оси Y)
Пример: scale:28:0:0,0,1 (28 - индекс:0 - глобальный масштаб:0,0,1 - по оси Z)
5. Тип "trigger" - получить событие триггера объекта
Пример: trigger:0:any:Zone (0 - индекс:any - тип события:Zone - имя триггер зоны)
Возвращаемые значения: 0 - нет события; 1 - вхождение; 2 - выход; 4 - нахождение.
Лекция “UDP в проектной деятельности”