このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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 4 Projects サポート パッケージがインストールされていることを確認してください。詳細については、サポート パッケージのインストールと環境の構成を参照してください。
次に、以下のワークフロー ステップに従って、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 4 Projects サポート パッケージを既にダウンロードしてインストールしている場合は、次の手順に進みます。
サポート パッケージをインストールして構成するには、サポート パッケージのインストールと環境の構成を参照してください。
サポート パッケージをインストールする前に、ご使用の環境が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 を開く
モデルで Simulation 3D Scene Configuration ブロックを開きます。[Open 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
はフォルダー...\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[Open Unreal Editor] を選択します。
手順 5: アクター クラスの作成
Unreal Editor の [Content Browser] タブで、[View Options] の下にある [Show Engine Content] と [Show Plugin Content] を選択します。
Unreal Editor で、MathWorksSimulation 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
をビルドします。
ソリューション エクスプローラーで [Solution 'TestSim3dGetSet' (2 projects)] を右クリックします。
[ソリューションのビルド] を選択します。
ソリューションのビルドが完了したら、
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 で、「Set Get Actor Location」を検索して
TestMap
に配置します。[World Outliner] タブで、インスタンス化された新しいアクター
SetGetActorLocation1
がリストに表示されることを確認します。
手順 10: メッシュの追加
手順 9: アクターの配置とチェックで作成したアクターをクリックします。
[Details] パネルで、[Add Component] をクリックしてアクター
SetGetActorLocation1
にメッシュを追加します。既定のメッシュであるCone
を選択します。アクター
SetGetActorLocation1
のプロパティ タグを検索します。[0 Array elements] の横のプラス記号をクリックしてタグを追加します。ConeLoc
という名前を付けます。
手順 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: データを受信するためのシーンの構成
Simulation 3D Message Set ブロックを使用するには、Simulink モデルからデータを受信するように Unreal Engine 環境のシーンを構成する必要があります。
Unreal Editor で、Simulink モデルから受信するデータ型に対応する
Sim3DGet
アクターをインスタンス化します。次の例は、Unreal Editor のSim3DGet
のデータ型を示しています。Simulation 3D Message Set ブロックの [信号名] パラメーターと一致するアクターのタグ名を指定します。
レベル ブループリントに移動します。
Simulink モデルから受信するデータ型とサイズに基づいて、
Sim3DGet
アクター クラスのブループリント メソッドを調べます。たとえば、次の Unreal Editor の図から、
int32
データ型のサイズのスカラーを受信するSim3DGetInteger
アクター クラスのメソッドはRead Scalar Integer
であることがわかります。シーンをコンパイルして保存します。
手順 5: データを送信するためのシーンの構成
Simulink モデルにデータを送信するように Unreal Engine 環境のシーンを構成するには、次を行います。
Unreal Editor で、Simulink モデルに送信するデータ型に対応する
Sim3DSet
アクターをインスタンス化します。次の例は、Unreal Editor のSim3DSet
のデータ型を示しています。Simulation 3D Message Get ブロックの [信号名] パラメーターと一致するアクターのタグ名を指定します。
レベル ブループリントに移動します。
Simulation 3D Message Get ブロックの [データ型] パラメーターと [メッセージ サイズ] パラメーターで指定されたデータ型とサイズに基づいて、
Sim3DSet
アクター クラスのブループリント メソッドを調べます。この例では、配列のサイズは 3 です。Unreal Editor の図から、float データ型のサイズが 3 の配列を送信する
Sim3DSetFloat3
アクター クラスのメソッドはWrite Array Float
であることがわかります。シーンをコンパイルして保存します。
メモ
必要に応じて、パフォーマンスを向上させるには、アクター ブループリントで [Read Array Float Max Num Elements] を [Num El]
に設定します。
手順 6: ブループリントの作成
Unreal Editor で、Get アクターと Set アクターを接続するレベル ブループリントを作成します。
アクターのタグの値を設定します。
Sim3dGetFloat1
— Simulation 3D Message Set ブロックの [信号名、SigName] パラメーターの値 (例:ConeLocSet
)Sim3dSetFloat1
— Simulation 3D Message Get ブロックの [信号名、SigName] パラメーターの値 (例:ConeLocGet
)
親クラスを設定します。
[Blueprints] で、[Open Level Blueprint] をクリックし、[Class Settings] を選択します。
[Class Options] で、[Parent Class] を
Sim 3d Level Script Actor
に設定します。
レベル ブループリントで、たとえば次のように接続します。
手順 7: シミュレーションの実行
シミュレーションを実行します。シミュレーションの実行に進みます。
シミュレーションの実行
Simulink モデルと Unreal Editor 環境を構成したら、シミュレーションを実行できます。
メモ
BeginPlay イベントでは、Simulink は Unreal Editor からデータを受信しません。Simulink は Tick イベントでデータを受信します。
シミュレーションを実行します。
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