このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Unreal Engine 可視化環境との通信の開始
Simulation 3D Message Get ブロックと Simulation 3D Message Set ブロックを使用して Unreal Engine® との通信を設定できます。
Simulation 3D Message Get は、Unreal Engine 環境からデータを受信します。
Simulation 3D Message Set は、Unreal Engine 環境にデータを送信します。
ブロックを使用して Unreal Engine と通信するには、Vehicle Dynamics Blockset™ Interface for Unreal Engine Projects サポート パッケージがインストールされていることを確認してください。詳細については、車両運動のシミュレーションのための 3D シーンのカスタマイズを参照してください。
3D 可視化環境でモデルのシミュレーションを実行するには、Simulink® 3D Animation™ が必要です。
次に、以下のワークフロー ステップに従って、Simulink モデルと Unreal Engine 環境を設定し、シミュレーションを実行します。
ワークフロー | 説明 | |
---|---|---|
データを送受信するための Simulink モデルの設定 | Unreal® Editor との間でコーンの位置を送受信するように Simulink の Simulation 3D Message Get ブロックと Simulation 3D Message Set ブロックを構成します。この手順では、エディターと通信するための一般的なワークフローを示します。 Simulation 3D Message Get ブロックおよび Simulation 3D Message Set ブロックで送受信できるデータ型は、 | |
データを送受信するための Unreal Engine の設定 | C++ のワークフロー: データを送受信するための Unreal Engine の設定 | Simulink との間でコーンの位置データを送受信するための Unreal の具体的な C++ のワークフロー。
このワークフローを実行するには、Unreal Engine での C++ のコーディングに関する知識が必要です。ご使用の環境がUnreal Engine シミュレーション環境の要件と制限に記載されているソフトウェアの最小要件を満たしていることを確認してください。 |
ブループリントのワークフロー: データを送受信するための Unreal Engine の設定 | Simulink のデータを送受信するための Unreal Editor の一般化されたブループリントのワークフロー。 | |
シミュレーションの実行 | Simulink モデルと Unreal Editor 環境を設定したら、シミュレーションを実行します。 |
データを送受信するための Simulink モデルの設定
手順 1: サポート パッケージのインストール
Unreal Engine と Vehicle Dynamics Blockset Interface for Unreal Engine Projects サポート パッケージを既にダウンロードしてインストールしている場合は、次の手順に進みます。
サポート パッケージをインストールして構成するには、車両運動のシミュレーションのための 3D シーンのカスタマイズを参照してください。
サポート パッケージをインストールする前に、ご使用の環境がUnreal Engine シミュレーション環境の要件と制限に記載されているソフトウェアとハードウェアの最小要件を満たしていることを確認してください。
メモ
Unreal Engine は必ず Simulink から起動してください。
手順 2: Simulink モデルの設定
新しい Simulink モデルを開きます。次のようにブロックを接続します。
手順 3: ブロックの構成
次のブロック設定を使用して、Unreal Editor との間でコーンのデータを送受信するようにブロックを構成します。
ブロック | パラメーター設定 |
---|---|
Constant |
|
Data Type Conversion |
|
Simulation 3D Scene Configuration |
|
Simulation 3D Message Get |
|
Simulation 3D Message Set |
|
C++ のワークフロー: データを送受信するための Unreal Engine の設定
手順 4: エディター モードで Unreal Editor を開く
Unreal Engine C++ プロジェクトを作成します。
TestSim3dGetSet
という名前を付けます。C++ プロジェクトを作成する手順については、Unreal Engine での空のプロジェクトの作成を参照してください。Unreal Editor の [Edit] タブで [Plugins] を選択します。
[MathWorks Interface]
プラグインが有効になっていることを確認します。無効になっている場合は有効にします。Unreal Editor を閉じます。
Visual Studio® を開いていない場合は開きます。
Visual Studio で、
TestSim3dGetSet
プロジェクトのビルド ファイルにMathWorksSimulation
の依存関係を追加します。[ソリューション エクスプローラー] で、プロジェクトのビルド ファイル
TestSim3dGetSet.Build.cs
はフォルダー...Games\TestSim3dGetSet\Source\TestSim3dGetSet
にあります。
ビルド ファイルで、11 行目を編集して
MathWorksSimulation
依存関係を追加します。PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "MathWorksSimulation"});
変更を保存して
TestSim3dGetSet
プロジェクトを閉じます。Visual Studio を閉じます。
モデルで Simulation 3D Scene Configuration ブロックを開きます。
[プロジェクト] を
に設定します。Your_Project_path
\TestSim3dGetSet.uproject[Unreal Editor を開く] を選択します。
手順 5: アクター クラスの作成
Unreal Editor の [Content Browser] タブ (左下) で、[Settings] の下にある [Show Engine Content] と [Show Plugin Content] を選択します。
Unreal Editor で、MathWorks Interface C++ classes ディレクトリから [Sim3dActor] を選択します。
右クリックして [Create C++ class derived from Sim3dActor] を選択します。
新しい Sim3dActor に
SetGetActorLocation
という名前を付けます。[Public] を選択します。[Create Class] をクリックします。Unreal Editor を閉じます。
手順 6: SetGetActorLocation.h
を開く
Visual Studio が開き、プロジェクト フォルダーに新しい C++ ファイルが表示されます。
SetGetActorLocation.h
SetGetActorLocation.cpp
Unreal Editor が閉じていることを確認してください。
Visual Studio でソリューション TestSim3dGetSet
をビルドします。
ソリューション エクスプローラーで、Games フォルダーにある [TestSim3dGetSet] を右クリックします。
[ビルド] を選択します。
ソリューションのビルドが完了したら、
SetGetActorLocation.h
を開きます。ファイルを次のように編集します。
手順 7: 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] を閉じます。
手順 9: アクターの配置とチェック
Unreal Editor の [Place Actor] タブで、「Set Get Actor Location」を検索して
TestMap
に配置します。[Outliner] タブで、インスタンス化された新しいアクター
SetGetActorLocation
がリストに表示されることを確認します。
手順 10: メッシュの追加
手順 9: アクターの配置とチェックで作成したアクターをクリックします。
[Details] パネルで、[Add] をクリックしてアクター
SetGetActorLocation
にメッシュを追加します。既定のメッシュであるCone
を選択します。アクター
SetGetActorLocation
の [Tags] プロパティを見つけます。[0 Array elements] の横のプラス記号をクリックしてタグを追加します。ConeLoc
という名前を付けます。ヒント
Simulink と Unreal Engine 環境との通信を確立するため、Simulation 3D Message Get ブロックと Simulation 3D Message Set ブロックで設定された [信号名] パラメーターと一致するように、C++ コードで
Get
とSet
がタグ名に追加されます。
手順 11: コーンの位置の設定
[Details] タブで [Cone] をクリックします。コーンを X = 0.0
、Y = 0.0
、Z = 0.0
に設定します。さらに、アクターの [Mobility] プロパティを Movable
に設定します。
手順 12: 親クラスの設定とシーンの保存
親クラスを設定します。
[Blueprints] で、[Open Level Blueprint] をクリックし、[Class Settings] を選択します。
[Class Options] で、[Parent Class] を
Sim 3d Level Script Actor
に設定します。
Unreal Editor のシーンを保存します。
手順 13: シミュレーションの実行
シミュレーションを実行します。シミュレーションの実行に進みます。
参照: Simulink のデータを送受信する C++ 関数
Simulink のデータを送受信するには、Sim3dSetup
、Sim3dStep
、および Sim3dRelease
から次の C++ 関数を呼び出します。
ブループリントのワークフロー: データを送受信するための Unreal Engine の設定
手順 4: エディター モードで Unreal Editor を開く
Unreal Engine ブループリント プロジェクトを作成します。プロジェクトに
TestSim3dGetSet
という名前を付けます。ブループリント プロジェクトを作成する手順については、Unreal Engine での空のプロジェクトの作成を参照してください。Unreal Editor の [Edit] タブで [Plugins] を選択します。
[MathWorks Interface]
プラグインが有効になっていることを確認します。無効になっている場合は、有効にして Unreal Editor を再起動し、変更を有効にします。Unreal Editor を閉じます。
モデルで Simulation 3D Scene Configuration ブロックを開きます。
[プロジェクト] を
に設定します。Your_Project_path
\TestSim3dGetSet.uproject[Unreal Editor を開く] を選択します。
Unreal Editor で、[Save Current] (左上) をクリックして現在のレベルを保存します。レベルに TestMap
という名前を付けます。[Edit] 、 [Project Settings] 、 [Maps&Modes] をクリックして、このレベルを既定のプロジェクト設定として追加します。次に、[Editor Startup Map] と [Game Default Map] の既定値として TestMap
を選択します。既定値を保存するには、[Project Settings] を閉じます。
手順 5: データを受信するためのシーンの構成
Simulation 3D Message Set ブロックを使用するには、Simulink モデルからデータを受信するように Unreal Engine 環境のシーンを構成する必要があります。
Unreal Editor で、
Cone
アクターをインスタンス化します。[Details] パネルで、アクターの [Mobility] プロパティを
Movable
に設定します。Unreal Editor で、Simulink モデルから受信するデータ型に対応する
Sim3DGet
アクターをインスタンス化します。次の例は、Unreal Editor のSim3DGet
のデータ型を示しています。Sim 3d Get Float
を選択します。[Details] パネルで、Simulation 3D Message Set ブロックの [信号名] パラメーターと一致するアクターのタグ名を指定します。この例では、タグ
ConeLocSet
を追加します。[Details] パネルで、[Read Array Float Max Num Elements] を
3
に設定します。レベル ブループリントに移動します。
親クラスを設定します。
[Blueprints] で、[Open Level Blueprint] をクリックし、[Class Settings] を選択します。
[Class Options] で、[Parent Class] を
Sim 3d Level Script Actor
に設定します。
プロジェクトのゲーム モードを
Sim3dGameMode
に設定します。Unreal Editor のツール バーで [Edit] 、 [Project Settings] 、 [Project] 、 [Maps & Modes] を選択します。Sim3dGameMode
を選択します。グラフを右クリックし、Simulink モデルから受信するデータ型とサイズに基づいて、
Sim3DGet
アクター クラスのブループリント メソッドを調べます。この例では、配列のサイズは 3 です。Unreal Editor の図から、サイズが 3 の
float
データ型の配列を受信するSim3dGetFloat
アクター クラスのメソッドはRead Vector Float
であることがわかります。メモ
読み取る必要のある要素数に応じて、次のいずれかのメソッドを使用します。
Read Scalar <DATA_TYPE>
— 1 要素を読み取る。Read Vector <DATA_TYPE>
— 3 要素ベクトルを 1 つ読み取る。Read Array <DATA_TYPE>
— X 要素の配列を 1 つ読み取る。
シーンをコンパイルして保存します。
手順 6: データを送信するためのシーンの構成
Simulink モデルにデータを送信するように Unreal Engine 環境のシーンを構成するには、次を行います。
Unreal Editor で、Simulink モデルに送信するデータ型に対応する
Sim3DSet
アクターをインスタンス化します。次の例は、Unreal Editor のSim3DSet
のデータ型を示しています。Sim 3d Set Float
を選択します。Simulation 3D Message Get ブロックの [信号名] パラメーターと一致するアクターのタグ名を指定します。この例では、タグ
ConeLocGet
を追加します。[Write Array Float Max Num Element] を3
に設定します。レベル ブループリントに移動します。
Simulation 3D Message Get ブロックの [データ型] パラメーターと [メッセージ サイズ] パラメーターで指定されたデータ型とサイズに基づいて、
Sim3DSet
アクター クラスのブループリント メソッドを調べます。この例では、配列のサイズは 3 です。Unreal Editor の図から、サイズが 3 の
float
データ型の配列を送信するSim3DSetFloat
アクター クラスのメソッドはWrite Vector Float
であることがわかります。メモ
書き込む必要のある要素数に応じて、次のいずれかのメソッドを使用します。
Write Scalar <DATA_TYPE>
— 1 要素を書き込む。Write Vector <DATA_TYPE>
— 3 要素ベクトルを 1 つ書き込む。Write Array <DATA_TYPE>
— X 要素の配列を 1 つ書き込む。
シーンをコンパイルして保存します。
手順 7: ブループリントの作成
Unreal Editor で、Get アクターと Set アクターを接続するレベル ブループリントを開きます。
レベル ブループリントで、たとえば次のように接続します。
メモ
Simulink と Unreal Editor は、Event Sim 3d step
イベントでデータを交換します。Event Sim 3d step
イベントは Tick イベントによってトリガーされ、レベル ブループリントと Simulink モデルが同期されます。
手順 8: シミュレーションの実行
シミュレーションを実行します。シミュレーションの実行に進みます。
シミュレーションの実行
Simulink モデルと Unreal Editor 環境を構成したら、シミュレーションを実行できます。実行時に Simulink モデルで [定数値] を変更して、対応するコーンの Unreal Editor 環境における位置の変化を調べます。
シミュレーションを実行します。
Simulink モデルで [実行] をクリックします。
Unreal Editor で開かれるプロジェクトがシーンのソースであるため、シミュレーションは開始されません。
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 で [Play] をクリックします。Unreal Editor で現在開いているシーンでシミュレーションが実行されます。
送受信できるデータ型は、double
、single
、int8
、uint8
、int16
、uint16
、int32
、uint32
、boolean
です。手順 7: SetGetActorLocation.cpp を開くのコードは、Simulink から single データ型の値 (または float の値) を読み取ります。
参考
ASim3dActor
| Sim3dSetup
| Sim3dStep
| Sim3dRelease
| Simulation 3D Scene Configuration | Simulation 3D Message Get | Simulation 3D Message Set