Main Content

Unreal Engine 可視化環境との通信の開始

Simulation 3D Message Get ブロックと Simulation 3D Message Set ブロックを使用して Unreal Engine® との通信を設定できます。

ブロックを使用したり Unreal Engine と通信したりするには、Vehicle Dynamics Blockset™ Interface for Unreal Engine Projects サポート パッケージがインストールされていることを確認してください。詳細については、サポート パッケージのインストールと環境の構成を参照してください。

次に、以下のワークフロー ステップに従って、Simulink® モデルと Unreal Engine 環境を設定し、シミュレーションを実行します。

ワークフロー 説明
データを送受信するための Simulink モデルの設定

Unreal® Editor との間でコーンの位置を送受信するように Simulink の Simulation 3D Message Get ブロックと Simulation 3D Message Set ブロックを構成します。この手順では、エディターと通信するための一般的なワークフローを示します。

Simulation 3D Message Get ブロックおよび Simulation 3D Message Set ブロックで送受信できるデータ型は、doublesingleint8uint8int16uint16int32uint32Boolean です。Simulation 3D Actor Transform Set ブロックおよび Simulation 3D Actor Transform Get ブロックで送受信できるのは、single データ型のみです。

データを送受信するための Unreal Engine の設定

C++ のワークフロー: データを送受信するための Unreal Engine の設定

Simulink との間でコーンの位置データを送受信するための Unreal の具体的な C++ のワークフロー。

  • Simulation 3D Message Get は、Unreal Engine 環境の C++ アクター クラスからデータを受信します。この例のワークフローでは、このブロックを使用して Unreal Editor からコーンの位置を受信します。

  • Simulation 3D Message Set は、Unreal Engine の C++ アクター クラスにデータを送信します。この例では、このブロックを使用して Unreal Editor におけるコーンの初期位置を設定します。

このワークフローを実行するには、Unreal Engine での C++ のコーディングに関する知識が必要です。ご使用の環境がUnreal Engine Simulation Environment Requirements and Limitationsに記載されているソフトウェアの最小要件を満たしていることを確認してください。

ブループリントのワークフロー: データを送受信するための Unreal Engine の設定

Simulink のデータを送受信するための Unreal Editor の一般化されたブループリントのワークフロー。

シミュレーションの実行

Simulink モデルと Unreal Editor 環境を設定したら、シミュレーションを実行します。

データを送受信するための Simulink モデルの設定

手順 1: サポート パッケージのインストール

Unreal Engine と Vehicle Dynamics Blockset Interface for Unreal Engine Projects サポート パッケージを既にダウンロードしてインストールしている場合は、次の手順に進みます。

サポート パッケージをインストールして構成するには、サポート パッケージのインストールと環境の構成を参照してください。

サポート パッケージをインストールする前に、ご使用の環境がUnreal Engine Simulation Environment Requirements and Limitationsに記載されているソフトウェアとハードウェアの最小要件を満たしていることを確認してください。

メモ

Unreal Engine は必ず Simulink から起動してください。

手順 2: Simulink モデルの設定

新しい Simulink モデルを開きます。次のようにブロックを接続します。

Simulink model with connected blocks

手順 3: ブロックの構成

次のブロック設定を使用して、Unreal Editor との間でコーンのデータを送受信するようにブロックを構成します。

ブロックパラメーター設定

Constant

  • 定数値[100,10,50]

    Unreal Editor の座標系におけるコーンの初期位置を設定 (単位は cm、左手系、Z が上向きの座標系)

  • ベクトル パラメーターを 1 次元として解釈off

  • 出力データ型single

Data Type Conversion

  • 出力データ型single

Simulation 3D Scene Configuration

  • シーン ソースUnreal Editor

  • プロジェクト — プロジェクトのパス

    プロジェクトのパス (例: サポート パッケージのプロジェクト C:\Local\AutoVrtlEnv\AutoVrtlEnv.uproject)

  • Unreal Editor を開く — エディターを開くために選択

Simulation 3D Message Get

  • 信号名、SigNameConeLocGet

  • データ型、DataTypesingle

  • メッセージ サイズ、MsgSize[1 3]

  • サンプル時間-1

Simulation 3D Message Set

  • 信号名、SigNameConeLocSet

  • サンプル時間-1

C++ のワークフロー: データを送受信するための Unreal Engine の設定

手順 4: エディター モードで Unreal Editor を開く

  1. モデルで Simulation 3D Scene Configuration ブロックを開きます。[Unreal Editor を開く] を選択します。

  2. Unreal Engine C++ プロジェクトを作成します。TestSim3dGetSet という名前を付けます。C++ プロジェクトを作成する手順については、Unreal Engine での空のプロジェクトの作成を参照してください。

  3. Unreal Editor の [Edit] タブで [Plugins] を選択します。[MathWorks Interface] プラグインが有効になっていることを確認します。無効になっている場合は有効にします。

  4. Unreal Editor を閉じます。

  5. Visual Studio® を開いていない場合は開きます。

  6. Visual Studio で、TestSim3dGetSet プロジェクトのビルド ファイルに MathWorksSimulation の依存関係を追加します。

    • プロジェクトのビルド ファイル TestSim3dGetSet.Build.cs はフォルダー ...\TestSim3dGetSet\Source\TestSim3dGetSet にあります。

    • ビルド ファイルで、11 行目を編集して MathWorksSimulation 依存関係を追加します。

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

  7. 変更を保存して TestSim3dGetSet プロジェクトを閉じます。

  8. Visual Studio を閉じます。

  9. モデルで Simulation 3D Scene Configuration ブロックを開きます。

    1. [プロジェクト]Your_Project_path\TestSim3dGetSet.uproject に設定します。

    2. [Unreal Editor を開く] を選択します。

手順 5: アクター クラスの作成

  1. Unreal Editor の [Content Browser] タブで、[Settings] の下にある [Show Engine Content][Show Plugin Content] を選択します。

    Unreal Editor options

  2. Unreal Editor で、MathWorks Interface C++ classes ディレクトリから [Sim3dActor] を選択します。

    Unreal Editor content browser

    右クリックして [Create C++ class derived from Sim3dActor] を選択します。

    Unreal Editor class actions

  3. 新しい Sim3dActor に SetGetActorLocation という名前を付けます。[Public] を選択します。[Create Class] をクリックします。

  4. Unreal Editor を閉じます。

手順 6: SetGetActorLocation.h を開く

Visual Studio が開き、プロジェクト フォルダーに新しい C++ ファイルが表示されます。

  • SetGetActorLocation.h

  • SetGetActorLocation.cpp

Unreal Editor が閉じていることを確認してください。

Visual Studio でソリューション TestSim3dGetSet をビルドします。

  1. ソリューション エクスプローラーで [Solution 'TestSim3dGetSet' (2 projects)] を右クリックします。

  2. [ソリューションのビルド] を選択します。

  3. ソリューションのビルドが完了したら、SetGetActorLocation.h を開きます。ファイルを次のように編集します。

     置換コード: SetGetActorLocation.h

手順 7: SetGetActorLocation.cpp を開く

SetGetActorLocation.cpp を開き、コードのブロックを置き換えます。

 置換コード: パラメーターへのポインターの設定

 置換コード: アクターのタグ名へのアクセス

 追加コード: 実行時のデータの読み取りと書き込み

 追加コード: シミュレーションの停止

 全体の置換コード: SetGetActorLocation.cpp

手順 8: Visual Studio プロジェクトをビルドして Unreal Editor を開く

Visual Studio で、[デバッグ][デバッグの開始] を選択するか F5 キーを押して TestSim3dGetSet ソリューションを実行します。Unreal Editor が開きます。

メモ

Unreal Editor で、[Save Current] (左上) をクリックして現在のレベルを保存し、TestMap という名前を付けます。[Edit][Project Settings][Maps&Modes] をクリックして、このレベルを既定のプロジェクト設定として追加します。次に、[Editor Startup Map] と [Game Default Map] の既定値として TestMap を選択します。[Project Settings] を閉じて既定値を保存します。

Unreal Editor project settings

手順 9: アクターの配置とチェック

  1. Unreal Editor で、「Set Get Actor Location」を検索して TestMap に配置します。

    Unreal Editor Place Actors tab

  2. [World Outliner] タブで、インスタンス化された新しいアクター SetGetActorLocation がリストに表示されることを確認します。

    Unreal Editor World Outliner tab

手順 10: メッシュの追加

手順 9: アクターの配置とチェックで作成したアクターをクリックします。

  1. [Details] パネルで、[Add Component] をクリックしてアクター SetGetActorLocation にメッシュを追加します。既定のメッシュである Cone を選択します。

    Unreal Editor add component

  2. アクター SetGetActorLocation のプロパティ タグを見つけます。[0 Array elements] の横のプラス記号をクリックしてタグを追加します。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]Sim 3d Level Script Actor に設定します。

    Unreal Editor class settings

Unreal Editor のシーンを保存します。

手順 13: シミュレーションの実行

シミュレーションを実行します。シミュレーションの実行に進みます。

参照: Simulink のデータを送受信する C++ 関数

Simulink のデータを送受信するには、Sim3dSetupSim3dStep、および Sim3dRelease から次の C++ 関数を呼び出します。

ブループリントのワークフロー: データを送受信するための Unreal Engine の設定

手順 4: データを受信するためのシーンの構成

Simulation 3D Message Set ブロックを使用するには、Simulink モデルからデータを受信するように Unreal Engine 環境のシーンを構成する必要があります。

  1. Unreal Editor で、Simulink モデルから受信するデータ型に対応する Sim3DGet アクターをインスタンス化します。次の例は、Unreal Editor の Sim3DGet のデータ型を示しています。

    Unreal Editor Modes tab

  2. [Details] パネルで、Simulation 3D Message Set ブロックの [信号名] パラメーターと一致するアクターのタグ名を指定します。

  3. [Details] パネルで、[Read Array Float Max Num Elements]3 に設定します。

    Unreal Editor Read Array Size

  4. レベル ブループリントに移動します。

  5. Simulink モデルから受信するデータ型とサイズに基づいて、Sim3DGet アクター クラスのブループリント メソッドを調べます。

    この例では、配列のサイズは 3 です。Unreal Editor の図から、サイズが 3 の float データ型の配列を受信する Sim3dGetFloat アクター クラスのメソッドは Read Vector Float であることがわかります。

    Unreal Editor blueprint connections

    メモ

    読み取る必要のある要素数に応じて、次のいずれかのメソッドを使用します。

    • Read Scalar <DATA_TYPE> — 1 要素を読み取る。

    • Read Vector <DATA_TYPE> — 3 要素ベクトルを 1 つ読み取る。

    • Read Array <DATA_TYPE> — X 要素の配列を 1 つ読み取る。

  6. シーンをコンパイルして保存します。

手順 5: データを送信するためのシーンの構成

Simulink モデルにデータを送信するように Unreal Engine 環境のシーンを構成するには、次を行います。

  1. Unreal Editor で、Simulink モデルに送信するデータ型に対応する Sim3DSet アクターをインスタンス化します。次の例は、Unreal Editor の Sim3DSet のデータ型を示しています。

    Unreal Editor Modes tab

  2. Simulation 3D Message Get ブロックの [信号名] パラメーターと一致するアクターのタグ名を指定します。

  3. レベル ブループリントに移動します。

  4. Simulation 3D Message Get ブロックの [データ型] パラメーターと [メッセージ サイズ] パラメーターで指定されたデータ型とサイズに基づいて、Sim3DSet アクター クラスのブループリント メソッドを調べます。

    この例では、配列のサイズは 3 です。Unreal Editor の図から、サイズが 3 の float データ型の配列を送信する Sim3DSetFloat アクター クラスのメソッドは Write Vector Float であることがわかります。

    Unreal Editor blueprint connections

    Depending on the number of elements you need to write, use one of these methods:

    メモ

    • Write Scalar <DATA_TYPE> — To write 1 element.

    • Write Vector <DATA_TYPE> — To write a vector of 3 elements.

    • Write Array <DATA_TYPE> — To write an array of X elements.

  5. シーンをコンパイルして保存します。

手順 6: ブループリントの作成

Unreal Editor で、Get アクターと Set アクターを接続するレベル ブループリントを作成します。

  1. アクターのタグの値を設定します。

    • Sim3dGetFloat1Simulation 3D Message Set ブロックの [信号名、SigName] パラメーターの値 (例: ConeLocSet)

    • Sim3dSetFloat1Simulation 3D Message Get ブロックの [信号名、SigName] パラメーターの値 (例: ConeLocGet)

  2. 親クラスを設定します。

    1. [Blueprints] で、[Open Level Blueprint] をクリックし、[Class Settings] を選択します。

      Unreal Editor Work Outliner tab

    2. [Class Options] で、[Parent Class]Sim 3d Level Script Actor に設定します。

      Unreal Editor class settings

  3. レベル ブループリントで、たとえば次のように接続します。

    Unreal Editor blueprint connections

手順 7: シミュレーションの実行

シミュレーションを実行します。シミュレーションの実行に進みます。

シミュレーションの実行

Simulink モデルと Unreal Editor 環境を構成したら、シミュレーションを実行できます。

メモ

BeginPlay イベントでは、Simulink は Unreal Editor からデータを受信しません。Simulink は Tick イベントでデータを受信します。

シミュレーションを実行します。

  1. Simulink モデルで [実行] をクリックします。

    Unreal Editor で開かれるプロジェクトがシーンのソースであるため、シミュレーションは開始されません。

  2. 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 環境で車両および他のアセットをインスタンス化したことを示す確認のメッセージです。

  3. Unreal Editor で [Play] をクリックします。Unreal Editor で現在開いているシーンでシミュレーションが実行されます。

送受信できるデータ型は、doublesingleint8uint8int16uint16int32uint32boolean です。手順 7: SetGetActorLocation.cpp を開くのコードは、Simulink から single データ型の値 (または float の値) を読み取ります。

参考

| | | | | |

関連するトピック

外部の Web サイト