В этом примере показано, как использовать блоки Simulation 3D Message Set и Simulation 3D Message Get для взаимодействия со средой визуализации 3D при выполнении маневра смены двухполосного движения. В частности, используется следующее:
Simulation 3D Message Get block, чтобы узнать, сколько конусов ударяет транспортное средство во время маневра.
Блок Simulation 3D Message Set для управления светофором.
Минимальное количество оборудования, необходимое для выполнения примера, см. в разделе Требования и ограничения модуля визуализации 3D.
Включив 3D среду визуализации, выполните двухполосный маневр изменения, который ударяет по конусам.
Создайте и откройте рабочую копию проекта приложения ссылки на изменение в двухполосном режиме.
Включите среду визуализации 3D. В подсистеме Визуализации откройте 3D маску Блока двигателя и выберите, Позволил. Примените изменения и сохраните модель.
Либо введите этот код в командной строке MATLAB ®.
На верхнем уровне модели задайте параметры блока «Генератор привязки изменения полосы движения», чтобы транспортное средство не завершило маневр успешно. Задайте эти параметры блока, примените изменения и сохраните модель.
Время начала маневра до 5.
Уставка скорости продольного входа в 36.
Либо введите этот код в командной строке MATLAB.
Проведите маневр 30 секунд. Во время моделирования в окне AutoVrtlEnv можно увидеть, как транспортное средство ударяется о конусы.

Используйте блок Simulation 3D Message Get, чтобы узнать, сколько конусов ударяет транспортное средство во время маневра. По умолчанию в маневре используется сцена изменения двухполосности.
Перейдите к подсистеме Visualization > 3D Engine. Щелкните правой кнопкой мыши по 3D Блоку двигателя и выберите Маску> Взгляд Под Маской. В подсистему Visualization > 3D Engine > 3D Engine вставьте следующие блоки:
Сообщение о моделировании 3D Получить
Показ
Математическая функция
Установите параметры блока Simulation 3D Message Get так, чтобы блок извлекал данные конуса из сцены изменения двойной полосы. Задайте эти параметры блока, примените изменения и сохраните модель.
Имя сигнала, SigName to NumOfConesHit
Тип данных, тип данных в boolean
Размер сообщения, MsgSize to [2 15]
Время выборки для -1

Либо введите этот код в командной строке MATLAB.
Задайте для параметра размерности вывода блока математической функции значение transpose. При выполнении моделирования блок Математическая функция (Math Function) выводит [15 2] массив.

Либо введите этот код в командной строке MATLAB.
Подключите блоки Моделирование (Simulation) 3D Получение сообщений (Message Get), Математическая функция (Math Function) и Отображение (Display), как показано на рисунке. Подтвердите параметры блока. Сохраните модель.

Убедитесь, что блок Simulation 3D Scene Configuration выполняется перед блоком Simulation 3D Message Get. Таким образом, среда визуализации Unreal Engine ® 3D подготавливает данные до их получения блоком Simulation 3D Message Get. Чтобы проверить порядок выполнения блока, щелкните его правой кнопкой мыши и выберите «Свойства». На вкладке Общие подтвердите следующие параметры приоритета:
Моделирование 3D Конфигурация сцены - 0
Симуляция 3D Сообщение Получить - 1
Дополнительные сведения о порядке выполнения см. в разделе Управление и просмотр порядка выполнения.
Проведи маневр. Во время моделирования блок отображения обновляется с помощью ReadMsg логическое значение 1 при наезде транспортного средства на соответствующий конус.

Результаты показывают, что транспортное средство сбивает SM_Cone20 и SM_Cone30 во время маневра.
В этой таблице представлено имя конуса сцены «Изменение двойной полосы движения», соответствующее ReadMsg элемент массива.
Моделирование 3D сообщение Получить блок | Нереальное имя конуса редактора ® | Моделирование 3D сообщение Получить элемент массива блоков | Нереальное имя конуса редактора |
|---|---|---|---|
ReadMsg(1,1) | SM_Cone5 | ReadMsg(2,1) | SM_Cone10 |
ReadMsg(1,2) | SM_Cone4 | ReadMsg(2,2) | SM_Cone09 |
ReadMsg(1,3) | SM_Cone3 | ReadMsg(2,3) | SM_Cone08 |
ReadMsg(1,4) | SM_Cone2 | ReadMsg(2,4) | SM_Cone07 |
ReadMsg(1,5) | SM_Cone01 | ReadMsg(2,5) | SM_Cone06 |
ReadMsg(1,6) | SM_Cone15 | ReadMsg(2,6) | SM_Cone20 |
ReadMsg(1,7) | SM_Cone14 | ReadMsg(2,7) | SM_Cone19 |
ReadMsg(1,8) | SM_Cone13 | ReadMsg(2,8) | SM_Cone18 |
ReadMsg(1,9) | SM_Cone12 | ReadMsg(2,9) | SM_Cone17 |
ReadMsg(1,10) | SM_Cone11 | ReadMsg(2,10) | SM_Cone16 |
ReadMsg(1,11) | SM_Cone25 | ReadMsg(2,11) | SM_Cone30 |
ReadMsg(1,12) | SM_Cone24 | ReadMsg(2,12) | SM_Cone29 |
ReadMsg(1,13) | SM_Cone23 | ReadMsg(2,13) | SM_Cone28 |
ReadMsg(1,14) | SM_Cone22 | ReadMsg(2,14) | SM_Cone27 |
ReadMsg(1,15) | SM_Cone21 | ReadMsg(2,15) | SM_Cone26 |
Перейдите к подсистеме Visualization > 3D Engine. Щелкните правой кнопкой мыши по 3D Блоку двигателя и выберите Маску> Взгляд Под Маской. В подсистему Visualization > 3D Engine > 3D Engine вставьте следующие блоки:
Набор сообщений 3D моделирования
Повторяющаяся лестница последовательности
Установите параметры блока Simulation 3D Message Set таким образом, чтобы блок передавал данные сигнала трафика в сцену изменения двухполосного режима. Задайте эти параметры блока, примените изменения и сохраните модель.
Имя сигнала, SigName to TrafficLight1
Время выборки для -1

В этой таблице представлен цвет сигнала светофора сцены, соответствующий WriteMsg значение в сцене «Изменение двойной полосы движения».
Блок набора сообщений Simulation 3D |
|
|---|---|
0 | Red |
1 | Yellow |
2 | Green |
Либо введите этот код в командной строке MATLAB.
Задайте параметры блока «Повторяющаяся последовательность лестниц» для отправки команды, соответствующей красным, желтым и зеленым сигналам светофора. Задайте эти параметры блока, примените изменения и сохраните модель.
Вектор выходных значений: к [0 0 0 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2].'
Время выборки для 1

Тип выходных данных для int32

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

Убедитесь, что блок Simulation 3D Message Set выполняется перед блоком Simulation 3D Scene Configuration. Таким образом, Simulation 3D Message Set подготавливает данные сигнала до того, как среда визуализации Unreal Engine 3D получит их. Чтобы проверить порядок выполнения блока, щелкните его правой кнопкой мыши и выберите «Свойства». На вкладке Общие подтвердите следующие параметры приоритета:
Моделирование 3D Конфигурация сцены - 0
Набор сообщений Simulation 3D - -1
Дополнительные сведения о порядке выполнения см. в разделе Управление и просмотр порядка выполнения.
Проведи маневр. Во время моделирования в окне AutoVrtlEnv можно увидеть TrafficLight1 цвет изменяется с красного на желтый на зеленый.

Временной диапазон (диапазоны) |
|
|
|---|---|---|
0–3 | 0 | Red |
3–5 | 1 | Yellow |
5–30 | 2 | Green |
3D Двигатель | Изменение двойной полосы | Сообщение о моделировании 3D Получить | Набор сообщений 3D моделирования | Моделирование 3D конфигурация сцены