Запуск связи с Unreal Engine Visualization Окружения

Вы можете настроить коммуникацию с Unreal Engine® при помощи блоков Simulation 3D Message Get и Simulation 3D Message Set:

Чтобы использовать блоки и общаться с 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 могут отправлять и получать следующие типы данных: double, single, int8, uint8, int16, uint16, int32, uint32, и Boolean. Блоки Simulation 3D Actor Transform Set и Simulation 3D Actor Transform Get могут отправлять и получать только single тип данных.

Настройка Unreal Engine для отправки и получения данных

Рабочий процесс C++: настройте Unreal Engine для отправки и получения данных

Определенный рабочий процесс Unreal C++ для отправки и приема данных о местоположении конуса Simulink.

  • Simulation 3D Message Get получает данные из окружения Unreal Engine класса актёра C++. В этом примере рабочего процесса вы используете блок, чтобы получить расположение конуса от Unreal Editor.

  • Simulation 3D Message Set отправляет данные в класс актёра Unreal Engine C++. В этом примере вы используете блок, чтобы задать начальное расположение конуса в редакторе Unreal.

Чтобы следовать этому рабочему процессу, вы должны быть комфортно кодировать с C++ в Unreal Engine 4.23. Убедитесь, что у вас есть Visual Studio® 2019 установленный на вашем компьютере.

Рабочий процесс концептуального проекта: настройка Unreal Engine для отправки и получения данных

Общий рабочий процесс редактора Unreal Editor для отправки и получения данных Simulink.

Выполняйте симуляцию

После настройки модели Simulink и окружения Unreal Editor запустите симуляцию.

Настройте модель Simulink, чтобы отправлять и получать данные

Шаг 1: Установить пакет поддержки

Если вы уже загрузили и установили Unreal Engine версии 4.23 и Vehicle Dynamics Blockset пакет поддержки Interface for Unreal Engine 4 Projects, перейдите к следующему шагу.

Для установки и настройки пакета поддержки см. раздел Установка пакета поддержки и Настройка окружение.

Шаг 2: Настройка модели Simulink

Откройте новую модель Simulink. Соедините блоки как показано на рисунке.

Simulink model with connected blocks

Шаг 3: Сконфигурируйте блоки

Используйте эти настройки блоков, чтобы сконфигурировать блоки для отправки и получения данных о конусе из Unreal Editor.

БлокНастройки параметров

Constant

  • Constant value[100,10,50]

    Устанавливает начальное положение конуса в системе координат Unreal Editor (в см, слева, в системе координат Z-up)

  • Interpret vector parameters as 1-Doff

  • Output data typesingle

Data Type Conversion

  • Output data typesingle

Simulation 3D Scene Configuration

  • Scene SourceUnreal Editor

  • ProjectYour_Project_Path\TestSim3dGetSet.uproject

  • Open Unreal Editor - Выберите, чтобы открыть редактор

Simulation 3D Message Get

  • Signal name, SigNameConeLocGet

  • Data type, DataTypesingle

  • Message size, MsgSize[1 3]

  • Sample time-1

Simulation 3D Message Set

  • Signal name, SigNameConeLocSet

  • Sample time-1

Рабочий процесс C++: настройте Unreal Engine для отправки и получения данных

Шаг 4: Откройте Unreal Editor в режиме редактора

  1. В редакторе Unreal Editor на вкладке Edit выберите Plugins. Убедитесь, что MathWorks Interface плагин включен. При появлении запроса перезапустите редактор Unreal.

  2. Создайте проект Unreal Engine C++. Назовите TestSim3dGetSet. Шаги по созданию проекта C++ см. в документации Unreal Engine 4.

  3. В редакторе Unreal Editor перейдите на вкладку Edit в верхнем левом углу. Выберите плагины и убедитесь, что MathWorks Interface плагин включен. Если на MathWorks Interface плагин отключен, включите его и перезапустите Unreal Editor, если появится запрос.

  4. Закройте Unreal.

  5. Если Visual Studio не открыта, откройте его.

  6. Добавьте зависимость MathWorksSimulation к TestSim3dGetSet файл сборки проекта.

    • Файл сборки проекта, TestSim3dGetSet.Build.cs, находится в этой папке: ...\TestSim3dGetSet\Source\TestSim3dGetSet.

    • В файле сборки TestSim3dGetSet.Build.cs, отредактируйте линию 11, чтобы добавить зависимость «MathWorksSimulation»:

       PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", 
      "Engine", "InputCore", "MathWorksSimulation"}); 

  7. Сохраните изменения. В Visual Studio перестроите TestSim3dGetSet проект. Закройте Visual Studio.

    Совет

    Перед перестройкой проекта в Visual Studio убедитесь, что Unreal не открыт.

  8. Запуск MATLAB®. Измените текущую папку на местоположение Unreal Engine TestSim3dGetSet проект.

  9. В MATLAB откройте проект:

    editor = sim3d.Editor('TestSim3dGetSet.uproject'); 
    editor.open();

Шаг 5: Создайте класс актёра

  1. В редакторе Unreal Editor из директории классов MathWorksSimulation C++ выберите Sim3dActor.

    Unreal Editor content browser

    Щелкните правой кнопкой мыши и выберите Create C++ class derived from Sim3dActor.

    Unreal Editor class actions

  2. Назовите новый Sim3dActor SetGetActorLocation. Выберите Public. Нажмите Create Class.

  3. Закройте редактор Unreal.

Шаг 6: Откройте SetGetActorLocation.h

Visual Studio откроется новыми файлами C++ в папке проекта:

  • SetGetActorLocation.h

  • SetGetActorLocation.cpp

Убедитесь, что вы закрыли Редактор.

В Visual Studio создайте решение TestSim3dGetSet:

  1. В обозревателе решений щелкните правой кнопкой мыши Solution 'TestSim3dGetSet' (2 projects).

  2. Выберите Build Solution.

  3. После создания решения откройте SetGetActorLocation.h. Отредактируйте файл как показано на рисунке.

     Код замены: SetGetActorLocation.h

Шаг 7: Откройте SetGetActorLocation.cpp

Откройте SetGetActorLocation.cpp и замените блок кода.

 Код замены: Установите указатель на параметр

 Код замены: Имя тега актёра доступа

 Дополнительный код: Чтение и запись данных во время выполнения

 Дополнительный код: Стоп Симуляции

 Весь код замены: SetGetActorLocation.cpp

Шаг 8: создайте проект Visual Studio и откройте Unreal Editor

Нажмите F5 на клавиатуре, чтобы запустить решение Visual Studio TestSim3dGetSet. Откроется редактор Unreal.

Примечание

В редакторе Unreal сохраните текущий уровень, нажав Save Current (расположенный в верхнем левом углу) и назовите его TestMap. Добавьте этот уровень как значение по умолчанию к параметрам проекта, нажав на Edit > Project Settings > Maps&Modes. Затем выберите TestMap как значение по умолчанию для карты запуска редактора и карты по умолчанию для игры. Закройте Параметры проекта, чтобы сохранить значения по умолчанию.

Unreal Editor project settings

Unreal Editor modes tab

Шаг 9: Проверяйте актёра

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

Unreal Editor World Outliner tab

Шаг 10: Добавить Mesh

Нажмите на актёра, который вы создали в шаге 9: Проверяйте актёра.

  1. На панели Details щелкните Добавить компонент (Add Component), чтобы добавить mesh актёра SetConeLocation1. Выберите Cone как mesh по умолчанию.

  2. Найдите теги свойств для актёра SetConeLocation1. Добавьте тег, нажав на знак плюс рядом с 0 элементами массива. Назовите ConeLoc.

Unreal Editor add component

Шаг 11: Установите расположение конуса

На вкладке Details нажмите Cone. Установите конус на X = 0.0, Y = 0.0, и Z = 0.0. Также установите свойство Mobility актёра на Movable.

Unreal Editor set cone location

Шаг 12: Установите родительский класс и сохраните сцену

Установите родительский класс.

  1. В разделе Blueprints щелкните Open Level Blueprint и выберите Class Settings.

    Unreal Editor Work Outliner tab

  2. В Class Options установите Parent Class равным Sim3dLevelScriptActor.

    Unreal Editor class settings

Сохраните сцену Unreal Editor.

Шаг 13: Запустите симуляцию

Запустите симуляцию. Перейдите в раздел Run Simulation.

Ссылка: Функции C++ для отправки и приема данных Simulink

Вызовите эти функции C++ из Sim3dSetup, Sim3dStep, и Sim3dRelease для отправки и приема данных Simulink.

Рабочий процесс концептуального проекта: настройка Unreal Engine для отправки и получения данных

Шаг 4: Сконфигурируйте сцены, чтобы получить данные

Чтобы использовать блок Simulation 3D Message Set, вы должны сконфигурировать сцены в среде Unreal Engine, чтобы получить данные из модели Simulink:

  1. В редакторе Unreal Editor создайте экземпляр Sim3DGet актёр, который соответствует типу данных, которые вы хотите получить из модели Simulink. Этот пример показывает Unreal Editor Sim3DGet типы данных.

    Unreal Editor Modes tab

  2. Задайте имя тега актёра, которое соответствует параметру Simulation 3D Message Set block Signal name.

  3. Перейдите к концептуальному проекту уровня.

  4. Найдите метод концептуального проекта для Sim3DGet класс актёра на основе типа данных и размера, которые вы хотите получить от модели Simulink.

    Для примера в Unreal Редактора эта схема показывает, что Read Scalar Integer является методом для Sim3DGetInteger класс актёра, чтобы получить int32 тип данных скаляра размера.

    Unreal Editor blueprint connections

  5. Скомпилируйте и сохраните сцену.

Шаг 5: Сконфигурируйте сцены, чтобы отправить данные

Чтобы сконфигурировать сцены в среде Unreal Engine для отправки данных в модель Simulink:

  1. В редакторе Unreal Editor создайте экземпляр Sim3DSet актёр, который соответствует типу данных, которые вы хотите отправить в модель Simulink. Этот пример показывает Unreal Editor Sim3DSet типы данных.

    Unreal Editor Modes tab

  2. Задайте имя тега актёра, которое соответствует параметру Simulation 3D Message Get block Signal name.

  3. Перейдите к концептуальному проекту уровня.

  4. Найдите метод концептуального проекта для Sim3DSet класс актёра на основе типа данных и размера, заданных параметрами Simulation 3D Message Get block Data type и Message size.

    В данном примере размер массива равен 3. Схема Unreal Editor показывает, что Write Array Float является методом для Sim3DSetFloat3 класс актёра, который отправляет тип данных с плавающей запятой массива размера 3.

    Unreal Editor blueprint connections

  5. Скомпилируйте и сохраните сцену.

Примечание

Для повышения эффективности установите Read Array Float Max Num Elements равным Num El в проекте актёра.

Unreal Editor blueprint connections

Шаг 6: Создайте концептуальный проект

В редакторе Unreal Editor создайте проект уровня, соединяющий актёров Get и Set.

  1. Установите значения тега актёра.

    • Sim3dGetFloat1 - Simulation 3D Message Set блок Signal name, SigName значение параметров, например ConeLocSet

    • Sim3dSetFloat1 - Simulation 3D Message Get блок Signal name, SigName значение параметров, например ConeLocGet

  2. Установите родительский класс.

    1. В разделе Blueprints щелкните Open Level Blueprint и выберите Class Settings.

      Unreal Editor Work Outliner tab

    2. В Class Options установите Parent Class равным Sim3dLevelScriptActor.

      Unreal Editor class settings

  3. В проекте уровня выполните соединения, для примера:

    Unreal Editor blueprint connections

Шаг 7: Запустите симуляцию

Запустите симуляцию. Перейдите в раздел Run Simulation.

Выполняйте симуляцию

После настройки модели Simulink и окружения Unreal Editor можно запустить симуляцию.

Примечание

На мероприятии BeginPlay Simulink не получает данные от Unreal Editor. Simulink получает данные о событиях такт.

Запустите симуляцию.

  1. В модели Simulink нажмите Run.

    Поскольку источником сцен является проект, открытый в Unreal Editor, симуляция не запускается.

  2. Убедитесь, что в окне 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.

  3. В редакторе Unreal Editor нажмите Play. Симуляция выполняется в сцене, открытой в редакторе Unreal.

Вы можете отправить и получить следующие типы данных: double, single, int8, uint8, int16, uint16, int32, uint32, boolean. Код на шаге 7: Open SetGetActorLocation.cpp читает значения одного типа данных (или значения с плавающей точкой) из Simulink.

См. также

| | | | | |

Похожие темы

Внешние веб-сайты