Связь с Unreal Engine ® можно настроить с помощью блоков Simulation 3D Message Get и Simulation 3D Message Set:
Simulation 3D Message Get получает данные из среды Unreal Engine.
Набор сообщений Simulation 3D отправляет данные в среду Unreal Engine.
Чтобы использовать блоки и взаимодействовать с Unreal Engine, убедитесь, что установлен пакет поддержки Vehicle Dynamics Blockset™ Interface for Unreal Engine 4 Projects. Дополнительные сведения см. в разделах Установка пакета поддержки и Настройка среды.
Далее выполните следующие действия для настройки модели Simulink ® и среды Unreal Engine и запустите моделирование .
| Технологический процесс | Описание | |
|---|---|---|
| Настройка модели Simulink для отправки и получения данных | Настройте блоки Simulation 3D Message Get и Simulation 3D Message Set в Simulink для отправки и получения местоположения конуса из Unreal ® Editor. Шаги обеспечивают общий рабочий процесс для взаимодействия с редактором. Блоки Simulation 3D Message Get и Simulation 3D Message Set могут отправлять и получать следующие типы данных: | |
Настройка нереального обработчика для отправки и получения данных | Рабочий процесс C++: настройка нереального механизма для отправки и получения данных | Определенный нереальный рабочий процесс C++ для отправки и получения данных о местоположении конуса Simulink.
Для выполнения этого рабочего процесса в Unreal Engine 4.23 необходимо удобное кодирование C++. Убедитесь, что на компьютере установлена Visual Studio ® 2019. |
| Рабочий процесс концептуального проекта: настройка нереального механизма для отправки и получения данных | Обобщенный рабочий процесс концептуального проекта Unreal Editor для отправки и получения данных Simulink. | |
| Запустить моделирование | После настройки среды Simulink model и Unreal Editor выполните моделирование. | |
Если вы уже загрузили и установили Unreal Engine версии 4.23 и пакет поддержки Vehicle Dynamics Blockset Interface for Unreal Engine 4 Projects, перейдите к следующему шагу.
Сведения об установке и настройке пакета поддержки см. в разделах Установка пакета поддержки и Настройка среды.
Откройте новую модель Simulink. Подключите блоки, как показано на рисунке.

Эти настройки блоков используются для настройки блоков для отправки и получения данных конуса из редактора Unreal Editor.
| Блок | Параметры настройки |
|---|---|
Постоянный |
|
Преобразование типа данных |
|
Моделирование 3D конфигурация сцены |
|
Сообщение о моделировании 3D Получить |
|
| Набор сообщений 3D моделирования |
|
В редакторе Unreal на вкладке Edit выберите Plugins. Убедитесь, что MathWorks Interface подключаемый модуль включен. При появлении соответствующего запроса перезапустите редактор Unreal Editor.
Создание проекта нереального механизма C++. Назовите его TestSim3dGetSet. Инструкции по созданию проекта C++ см. в документации Unreal Engine 4.
В редакторе нереальных объектов перейдите на вкладку «Правка» в левом верхнем углу. Выберите подключаемые модули и убедитесь, что MathWorks Interface подключаемый модуль включен. Если MathWorks Interface Если подключаемый модуль отключен, включите его и перезапустите Unreal Editor.
Закройте Нереальный.
Если Visual Studio не открыта, откройте ее.
Добавление зависимости MathWoriveSimulation в TestSim3dGetSet файл построения проекта.
Файл построения проекта, TestSim3dGetSet.Build.cs, находится в этой папке: ...\TestSim3dGetSet\Source\TestSim3dGetSet.
В файле построения TestSim3dGetSet.Build.csотредактируйте строку 11, чтобы добавить зависимость «MathWoreySimulation»:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject",
"Engine", "InputCore", "MathWorksSimulation"});
Сохраните изменения. В Visual Studio перестроите TestSim3dGetSet проект. Закройте Visual Studio.
Совет
Перед перестроением проекта в Visual Studio убедитесь, что Unreal не открыт.
Запустите MATLAB ®. Изменение текущей папки на расположение нереального механизмаTestSim3dGetSet проект.
В MATLAB откройте проект:
editor = sim3d.Editor('TestSim3dGetSet.uproject');
editor.open();
В редакторе Unreal в каталоге классов MathWoriveSimulation C++ выберите Sim3dActor.

Щелкните правой кнопкой мыши и выберите Создать класс C++, полученный из Sim3dActor.

Назовите новый Sim3dActor SetGetActorLocation. Выберите Открытый (Public). Щелкните Создать класс.
Закройте нереальный редактор.
SetGetActorLocation.hVisual Studio откроется с новыми файлами C++ в папке проекта:
SetGetActorLocation.h
SetGetActorLocation.cpp
Убедитесь, что окно «Нереальный редактор» закрыто.
В Visual Studio создайте решение TestSim3dGetSet:
В Обозревателе решений щелкните правой кнопкой мыши на элементе Solution 'StartSim3dGetSet' (2 проекта).
Выберите «Создать решение».
После создания решения откройте SetGetActorLocation.h. Отредактируйте файл, как показано на рисунке.
SetGetActorLocation.cppОткрытый SetGetActorLocation.cpp и замените блок кода.
Код замены: Задать указатель на параметр
Код замены: имя тега участника доступа
Дополнительный код: чтение и запись данных во время выполнения
Нажмите F5 на клавиатуре для запуска решения Visual Studio TestSim3dGetSet. Откроется Нереальный редактор (Unreal Editor).
Примечание
В редакторе нереальных данных сохраните текущий уровень, нажав кнопку «Сохранить текущий» (находится в верхнем левом углу) и присвойте ему имя. TestMap. Добавьте этот уровень по умолчанию в «Параметры проекта», щелкнув «Правка» > «Параметры проекта» > «Карты и режимы». Затем выберитеTestMap в качестве значения по умолчанию для Startup Map редактора и Game Default Map. Закройте «Параметры проекта», чтобы сохранить значения по умолчанию.


На вкладке World Outliner убедитесь, что новый создатель экземпляра SetGetActorLocation1, указан в списке.

Щелкните по актеру, созданному на шаге 9: Проверка актера.
На панели «Подробности» нажмите кнопку «Добавить компонент», чтобы добавить сетку к субъекту SetConeLocation1. Выбирать Cone в качестве сетки по умолчанию.
Поиск тегов свойств для актера SetConeLocation1. Добавьте тег, щелкнув на знаке «плюс» рядом с 0 элементами массива. Назовите его ConeLoc.

На вкладке Подробно (Details) щелкните Конус (Cone). Установите конус на X = 0.0, Y = 0.0, и Z = 0.0. Также установите для свойства «Мобильность» актера значение «Движимый».

Задайте родительский класс.
В разделе «Чертежи» выберите «Проект на открытом уровне» и выберите «Параметры настройки класса».

В окне «Параметры класса» задайте для параметра «Родительский класс» значение Sim3dLevelScriptActor.

Сохраните сцену «Нереальный редактор».
Запустите моделирование. Перейдите к разделу Запуск моделирования.
Вызовите эти функции C++ из Sim3dSetup, Sim3dStep, и Sim3dRelease для отправки и получения данных Simulink.
| Кому | Функции C++ |
|---|---|
| Получение данных | StartSimulation3DMessageReader |
ReadSimulation3DMessage | |
StopSimulation3DMessageReader | |
| Отправить данные | StartSimulation3DMessageWriter |
WriteSimulation3DMessage | |
StopSimulation3DMessageWriter |
Чтобы использовать блок Simulation 3D Message Set, необходимо настроить сцены в среде Unreal Engine для получения данных из модели Simulink:
В нереальном редакторе создайте экземпляр Sim3DGet исполнитель, соответствующий типу данных, который требуется получить из модели Simulink. В этом примере показан нереальный редактор Sim3DGet типы данных.

Укажите имя тега субъекта, которое соответствует параметру Simulation 3D Message Set block Signal name.
Перейдите к проекту уровня.
Поиск метода концептуального проекта для Sim3DGet класс актера на основе типа данных и размера, которые требуется получить из модели Simulink.
Например, в Unreal Editor эта диаграмма показывает, что Read Scalar Integer является методом для Sim3DGetInteger класс актера для получения int32 тип данных скаляра размера.

Скомпилировать и сохранить сцену.
Чтобы настроить сцены в среде Unreal Engine для отправки данных в модель Simulink:
В нереальном редакторе создайте экземпляр Sim3DSet исполнитель, соответствующий типу данных, который требуется отправить в модель Simulink. В этом примере показан нереальный редактор Sim3DSet типы данных.

Укажите имя тега субъекта, соответствующее параметру Simulation 3D Message Get block Signal name.
Перейдите к проекту уровня.
Поиск метода концептуального проекта для Sim3DSet класс актера на основе типа данных и размера, заданных параметрами Simulation 3D Message Get block Data type и Message size.
В этом примере размер массива равен 3. Диаграмма Нереального редактора показывает, что Write Array Float является методом для Sim3DSetFloat3 класс актера, который отправляет тип данных float размера массива 3.

Скомпилировать и сохранить сцену.
Примечание
При необходимости для повышения производительности задайте для параметра Read Array Float Max Num Elements значение Num El в концептуальном проекте актера.

В редакторе Unreal создайте проект уровня, соединяющий исполнителей Get и Set.
Задайте значения тега актера.
Sim3dGetFloat1 - Моделирование 3D Блок набора сообщений Имя сигнала, значение параметра SigName, например ConeLocSet
Sim3dSetFloat1 - Моделирование 3D Сообщение Получить имя сигнала блока, значение параметра SigName, например ConeLocGet
Задайте родительский класс.
В разделе «Чертежи» выберите «Проект на открытом уровне» и выберите «Параметры настройки класса».

В окне «Параметры класса» задайте для параметра «Родительский класс» значение Sim3dLevelScriptActor.

В проекте уровня создайте соединения, например:

Запустите моделирование. Перейдите к разделу Запуск моделирования.
После настройки среды Simulink Model и Unreal Editor можно запустить моделирование.
Примечание
При событии BeginPlay Simulink не получает данные из нереального редактора. Simulink получает данные при событиях Tick.
Запустите моделирование.
В модели Simulink щелкните Выполнить (Run).
Поскольку источником сцен является проект, открытый в Unreal Editor, моделирование не запускается.
Убедитесь, что в окне Diagnostic Viewer в Simulink отображается следующее сообщение:
In the Simulation 3D Scene Configuration block, you set the scene source to 'Unreal Editor'. In Unreal Editor, select 'Play' to view the scene.
Это сообщение подтверждает, что Simulink создал экземпляры транспортных средств и других активов в среде Unreal Engine 3D.
В редакторе нереальных файлов нажмите кнопку «Воспроизвести». Моделирование выполняется в сцене, открытой в настоящий момент в редакторе Unreal Editor.
Можно отправлять и получать следующие типы данных: double, single, int8, uint8, int16, uint16, int32, uint32, boolean. Код на шаге 7: Open SetGetSustyLocation.cpp считывает из Simulink значения одного типа данных (или значения с плавающей запятой).
ASim3dActor | Sim3dRelease | Sim3dSetup | Sim3dStep | Сообщение о моделировании 3D Получить | Набор сообщений 3D моделирования | Моделирование 3D конфигурация сцены