Вы можете настроить коммуникацию с Unreal Engine® при помощи блоков Simulation 3D Message Get и Simulation 3D Message Set:
Simulation 3D Message Get получает данные из окружения Unreal Engine.
Simulation 3D Message Set отправляет данные в окружение 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® Редактор. Эти шаги обеспечивают общий рабочий процесс взаимодействия с редактором. Блоки Simulation 3D Message Get и Simulation 3D Message Set могут отправлять и получать следующие типы данных: | |
Настройка Unreal Engine для отправки и получения данных | Рабочий процесс C++: настройте Unreal Engine для отправки и получения данных | Определенный рабочий процесс Unreal C++ для отправки и приема данных о местоположении конуса Simulink.
Чтобы следовать этому рабочему процессу, вы должны быть комфортно кодировать с C++ в Unreal Engine 4.23. Убедитесь, что у вас есть Visual Studio® 2019 установленный на вашем компьютере. |
Рабочий процесс концептуального проекта: настройка Unreal Engine для отправки и получения данных | Общий рабочий процесс редактора Unreal Editor для отправки и получения данных Simulink. | |
Выполняйте симуляцию | После настройки модели Simulink и окружения Unreal Editor запустите симуляцию. |
Если вы уже загрузили и установили Unreal Engine версии 4.23 и Vehicle Dynamics Blockset пакет поддержки Interface for Unreal Engine 4 Projects, перейдите к следующему шагу.
Для установки и настройки пакета поддержки см. раздел Установка пакета поддержки и Настройка окружение.
Откройте новую модель Simulink. Соедините блоки как показано на рисунке.
Используйте эти настройки блоков, чтобы сконфигурировать блоки для отправки и получения данных о конусе из Unreal Editor.
Блок | Настройки параметров |
---|---|
Constant |
|
Data Type Conversion |
|
Simulation 3D Scene Configuration |
|
Simulation 3D Message Get |
|
Simulation 3D Message Set |
|
В редакторе Unreal Editor на вкладке Edit выберите Plugins. Убедитесь, что MathWorks Interface
плагин включен. При появлении запроса перезапустите редактор Unreal.
Создайте проект Unreal Engine C++. Назовите TestSim3dGetSet
. Шаги по созданию проекта C++ см. в документации Unreal Engine 4.
В редакторе Unreal Editor перейдите на вкладку Edit в верхнем левом углу. Выберите плагины и убедитесь, что MathWorks Interface
плагин включен. Если на MathWorks Interface
плагин отключен, включите его и перезапустите Unreal Editor, если появится запрос.
Закройте Unreal.
Если Visual Studio не открыта, откройте его.
Добавьте зависимость MathWorksSimulation к TestSim3dGetSet
файл сборки проекта.
Файл сборки проекта, TestSim3dGetSet.Build.cs
, находится в этой папке: ...\TestSim3dGetSet\Source\TestSim3dGetSet
.
В файле сборки TestSim3dGetSet.Build.cs
, отредактируйте линию 11, чтобы добавить зависимость «MathWorksSimulation»:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "MathWorksSimulation"});
Сохраните изменения. В Visual Studio перестроите TestSim3dGetSet
проект. Закройте Visual Studio.
Совет
Перед перестройкой проекта в Visual Studio убедитесь, что Unreal не открыт.
Запуск MATLAB®. Измените текущую папку на местоположение Unreal Engine TestSim3dGetSet
проект.
В MATLAB откройте проект:
editor = sim3d.Editor('TestSim3dGetSet.uproject'); editor.open();
В редакторе Unreal Editor из директории классов MathWorksSimulation C++ выберите Sim3dActor.
Щелкните правой кнопкой мыши и выберите Create C++ class derived from Sim3dActor.
Назовите новый Sim3dActor SetGetActorLocation
. Выберите Public. Нажмите Create Class.
Закройте редактор Unreal.
SetGetActorLocation.h
Visual Studio откроется новыми файлами C++ в папке проекта:
SetGetActorLocation.h
SetGetActorLocation.cpp
Убедитесь, что вы закрыли Редактор.
В Visual Studio создайте решение TestSim3dGetSet
:
В обозревателе решений щелкните правой кнопкой мыши Solution 'TestSim3dGetSet' (2 projects).
Выберите Build Solution.
После создания решения откройте SetGetActorLocation.h
. Отредактируйте файл как показано на рисунке.
SetGetActorLocation.cpp
Откройте SetGetActorLocation.cpp
и замените блок кода.
Код замены: Установите указатель на параметр
Код замены: Имя тега актёра доступа
Дополнительный код: Чтение и запись данных во время выполнения
Нажмите F5 на клавиатуре, чтобы запустить решение Visual Studio TestSim3dGetSet
. Откроется редактор Unreal.
Примечание
В редакторе Unreal сохраните текущий уровень, нажав Save Current (расположенный в верхнем левом углу) и назовите его TestMap
. Добавьте этот уровень как значение по умолчанию к параметрам проекта, нажав на Edit > Project Settings > Maps&Modes. Затем выберите TestMap
как значение по умолчанию для карты запуска редактора и карты по умолчанию для игры. Закройте Параметры проекта, чтобы сохранить значения по умолчанию.
На вкладке World Outliner проверьте, что новый экземпляр актёра, SetGetActorLocation1
, перечислен.
Нажмите на актёра, который вы создали в шаге 9: Проверяйте актёра.
На панели Details щелкните Добавить компонент (Add Component), чтобы добавить mesh актёра SetConeLocation1
. Выберите Cone
как mesh по умолчанию.
Найдите теги свойств для актёра SetConeLocation1
. Добавьте тег, нажав на знак плюс рядом с 0 элементами массива. Назовите ConeLoc
.
На вкладке Details нажмите Cone. Установите конус на X = 0.0
, Y = 0.0
, и Z = 0.0
. Также установите свойство Mobility актёра на Movable.
Установите родительский класс.
В разделе Blueprints щелкните Open Level Blueprint и выберите Class Settings.
В Class Options установите Parent Class равным Sim3dLevelScriptActor
.
Сохраните сцену Unreal Editor.
Запустите симуляцию. Перейдите в раздел Run Simulation.
Вызовите эти функции C++ из Sim3dSetup
, Sim3dStep
, и Sim3dRelease
для отправки и приема данных Simulink.
Кому | Функции C++ |
---|---|
Получение данных | StartSimulation3DMessageReader |
ReadSimulation3DMessage | |
StopSimulation3DMessageReader | |
Отправка данных | StartSimulation3DMessageWriter |
WriteSimulation3DMessage | |
StopSimulation3DMessageWriter |
Чтобы использовать блок Simulation 3D Message Set, вы должны сконфигурировать сцены в среде Unreal Engine, чтобы получить данные из модели Simulink:
В редакторе Unreal Editor создайте экземпляр Sim3DGet
актёр, который соответствует типу данных, которые вы хотите получить из модели Simulink. Этот пример показывает Unreal Editor Sim3DGet
типы данных.
Задайте имя тега актёра, которое соответствует параметру Simulation 3D Message Set block Signal name.
Перейдите к концептуальному проекту уровня.
Найдите метод концептуального проекта для Sim3DGet
класс актёра на основе типа данных и размера, которые вы хотите получить от модели Simulink.
Для примера в Unreal Редактора эта схема показывает, что Read Scalar Integer
является методом для Sim3DGetInteger
класс актёра, чтобы получить int32
тип данных скаляра размера.
Скомпилируйте и сохраните сцену.
Чтобы сконфигурировать сцены в среде Unreal Engine для отправки данных в модель Simulink:
В редакторе Unreal Editor создайте экземпляр Sim3DSet
актёр, который соответствует типу данных, которые вы хотите отправить в модель Simulink. Этот пример показывает Unreal Editor Sim3DSet
типы данных.
Задайте имя тега актёра, которое соответствует параметру Simulation 3D Message Get block Signal name.
Перейдите к концептуальному проекту уровня.
Найдите метод концептуального проекта для Sim3DSet
класс актёра на основе типа данных и размера, заданных параметрами Simulation 3D Message Get block Data type и Message size.
В данном примере размер массива равен 3. Схема Unreal Editor показывает, что Write Array Float
является методом для Sim3DSetFloat3
класс актёра, который отправляет тип данных с плавающей запятой массива размера 3.
Скомпилируйте и сохраните сцену.
Примечание
Для повышения эффективности установите Read Array Float Max Num Elements равным Num El
в проекте актёра.
В редакторе Unreal Editor создайте проект уровня, соединяющий актёров Get и Set.
Установите значения тега актёра.
Sim3dGetFloat1
- Simulation 3D Message Set блок Signal name, SigName значение параметров, например ConeLocSet
Sim3dSetFloat1
- Simulation 3D Message Get блок Signal name, SigName значение параметров, например ConeLocGet
Установите родительский класс.
В разделе Blueprints щелкните Open Level Blueprint и выберите Class Settings.
В Class Options установите Parent Class равным Sim3dLevelScriptActor
.
В проекте уровня выполните соединения, для примера:
Запустите симуляцию. Перейдите в раздел Run Simulation.
После настройки модели Simulink и окружения Unreal Editor можно запустить симуляцию.
Примечание
На мероприятии BeginPlay Simulink не получает данные от Unreal Editor. Simulink получает данные о событиях такт.
Запустите симуляцию.
В модели 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 создала экземпляры транспортных средств и других активов в среде 3D Unreal Engine.
В редакторе Unreal Editor нажмите Play. Симуляция выполняется в сцене, открытой в редакторе Unreal.
Вы можете отправить и получить следующие типы данных: double
, single
, int8
, uint8
, int16
, uint16
, int32
, uint32
, boolean
. Код на шаге 7: Open SetGetActorLocation.cpp читает значения одного типа данных (или значения с плавающей точкой) из Simulink.
ASim3dActor
| Sim3dRelease
| Sim3dSetup
| Sim3dStep
| Simulation 3D Message Get | Simulation 3D Message Set | Simulation 3D Scene Configuration