LoginSignup
11
8

More than 5 years have passed since last update.

AirSimをUnreal Engine, Visual Studio 2017でビルドする(Windows編)

Posted at

この記事では、以下に関して記載しています

  • AirSimについて
  • 事前準備の概要
  • AirSimプラグインのビルド
  • Unreal EngineのプロジェクトにAirSimを仕込む手順

1. AirSimについて

AirSimは、Unreal Engineで実装されたドローンや車のシミュレータです。
マイクロソフトが中心となってオープンソースで開発されています。
Unreal Engineのプラグインとして実装されているので、
比較的簡単にUnreal Engineのプロジェクトに組み込むことができます。

ソースコードやバイナリは、github上で公開されています。

APIも公開されているので、外部アプリからドローンや車をコントロールしたり、
写真撮影したりもできます。

Windows向けにはビルド済みのバイナリも公開されていますが、
独自機能実装したり、APIでできること以上の挙動をカスタマイズしたり、
マップやオブジェクトのカスタマイズ等する場合は、
ビルド環境作る必要があります。

Windows環境で単に飛ばして試してみる場合は、以下を参照ください。

2. 事前準備の概要

必要な環境は、Windowsか、Linuxかや、
AirSimのバージョンなどによっても異なります。

今回は、2018年05月24日現在でのWindowsでビルドする場合の、事前準備に関してです。
微妙に違っても、手探りでなんとかできるかもしれませんが、
以下の環境だとすんなりできました。

OSは、Windows 10 Pro 64ビット バージョン1803で試しました。

以下の事前準備でインストール済みでないものに関しては、
インストールしておきます。

2.1. Visual Studio 2017の準備

Visual Studio 2017の各種エディションで動作するはずです。

無償のVisual Studio Communityの利用条件に合致している場合は、
Visual Studio Communityも利用可能だと思います。
(※ ただし、手元の環境では、Visual Studio Communityでは未確認です。)

Visual Studio Installerでは、以下のワークロードやオプションを選んでおきます。
(新規インストール時、または、
インストール後で不足があれば、Visual Studio Installerを起動して、[更新]から追加インストール。)

  • [モバイル&ゲーム]カテゴリから、[C++によるゲーム開発]
  • 右側の[オプション]または、[個別のコンポーネント]タブから、[Windows 10 SDKのどれか]と[Windows 8.1 SDK]

必要なWindows SDKのバージョンは、Unreal Engineのバージョンによります。
AirSimのプラグインをビルドするだけなら、最新バージョンでも多少設定変更だけでビルド可能ですが、
Unreal Engine利用時に苦労すると思うので、
2018年05月24日時点では、Windows 8.1 SDKもインストールしておくのが無難です。

2.2. Unreal Engineの準備

※ HDDに25GB程度の空き容量が必要になると思います。

Unreal Engineの公式サイトから、入手可能です。

ここをクリックして、[ダウンロード]ボタンを探して、
ダウンロードします。
Epic Gamesアカウントを持っていない場合は、サインアップしてアカウントを作成します。

2018年05月24日時点では、Unreal Engineのエンドユーザライセンス同意は、
開発者にとってかなり自由度の高い(嬉しい)ものになっています。
基本的には無料で利用開始できます。
Unreal Engineを利用したアプリを販売した場合、4半期ごとに3,000米ドルを超えた部分に対して、
支払い義務が発生します。

ダウンロードしたインストーラを起動して、指示に従ってインストールします。
インストール後には、[Epic Games Launcher]を起動して、[Epic Gamesアカウント]でログインします。

2.2.1 Unreal Engine 4.18のインストール

  1. [Epic Games Launcher]の[UNREAL ENGINE]タブを選択します(たぶん選択されている)。
  2. 左側のメニュから、[Library]を選択します。
  3. [ENGINE VERSION]の右の[+]ボタンを押します。
  4. [4.19.2]などの数字が出ていると思いますが、数字をクリックして、 [4.18.3]などの、[4.18.x]を選択します。
  5. [Install]ボタンを押してインストールします。あとは指示に従ってインストールを進めます。

※ 必要なUnreal Engineのバージョンは、AirSimのバージョンによります。

準備できるとこんな感じ。

UnrealEngineInstall.png

3. AirSimプラグインのビルド

これまでで、だいたいの準備は完了です。

CMakerpclibEigen3や各種モデルデータなども
必要となりますが、ビルド時にダウンロードされます。

CMakeは、3.9以降を先にインストールして、
インストーラでパスを通すようにオプション入れておくと、多少楽かもしれません。
以下は、CMakeがインストールされていない前提です。

多少スムーズに進むように公式の手順から少しだけ違う手順で進めます。

3.1. AirSimのソースコードの入手

まずは、ソースコードを入手しましょう。

GitHubのリポジトリは以下です。

Git使っている人は、適当なディレクトリにクローンします(2018年05月24日現在、400MBくらい)。
(使ってない人は、[Clone and download] > [Download ZIP]でダウンロードして解凍とか。)

command> git clone https://github.com/Microsoft/AirSim.git

3.2. CMakeの入手

公式手順だと、この時点でVisual Studioのコマンドプロンプトから、
build.cmdを実行することになっていますが、
手順的に手間になることがあるので、先にCMakeを入手しちゃいます。

既に、CMake 3.9以降がインストールされていてパスも通っていれば、
この手順は飛ばして構わないと思います。

先ほど、入手したAirSimのソースコードのディレクトリ(リポジトリ)内の
check_cmake.bat(OS設定によっては、拡張子ないはず)を実行します。
ダブルクリックでもいけるはず。

ダブルクリックだとわかりずらいですが、
すでにインストールしてパスが通っている場合は、
"Found cmake version: x.y.z"と表示されるはずです。

Press any key to download and install cmake (make sure to add it in path in install options)

と表示された場合は、何かキーを押します。

インストーラがダウンロードされて、起動するので指示に従ってインストールしますが、
オプションでパスに追加するように設定します。
[Add CMake to the system PATH to the current user]
などを選んでおきます。

3.3. ソリューションの再ターゲットを行う

入手したVisual Studioのツールセットのバージョン等が、
自分の環境にあっていない場合があるので、
再ターゲットしておきます。

入手したソースコードのディレクトリの、
Visual StudioソリューションAirSim.sln(環境によっては拡張子なし)を
ダブルクリックなどして、Visual Studioで開きます。

開いた時点で、[ソリューション操作の再ターゲット]ウィンドウが
表示された場合は、指示に従ってターゲットのツールセット等をアップグレードします。

その後、[ソリューションエクスプローラー]から、
[ソリューション'AirSim']を右クリックして[ソリューションの再ターゲット]から、
ソリューション全体の再ターゲットを行います。

SolutionRetarget01.png

Windows 10 SDKの最新のものなどに再ターゲットしておきます。

SolutionRetarget02.png

3.4. プラグインをビルドする

通常、(いろいろ凝った設定をしていない場合は)、
[VS 2017 用 x64 Native Tools コマンド プロンプト]からビルドする必要があります。

STEP1. プログラム一覧などから、
[VS 2017 用 x64 Native Tools コマンド プロンプト]を探して起動します。

STEP2. AirSimのソースコードディレクトリに移動します。

command> cd /d pathto\AirSim

pathto\AirSimがAirSimのソースコードのフルパスです。
/dオプションは、ドライブ変更までしない場合は不要です。

STEP3. あとは、build.cmdを実行。

command> build.cmd

必要なライブラリやモデルデータ等がダウンロードされて、
ビルドも行われます。

※ 環境によっては、ビルドが失敗すると思います。

#### Build failed - see messages above.

と表示されていた場合は、失敗しています。

Windowsが日本語版の場合は、デフォルトのコードページがMS932の場合、
Eigen3の、あるファイルの読み込みで問題が発生して失敗します。
試してませんが、chcp 65001などで、コードページをUTF-8に変更などでもいけるかもしれませんが、
後々、Visual Studioからビルドする場合などは、どのみち苦労しそうなので、
今回は問題が発生するファイルを修正します。

build.cmd実行時にダウンロードされたEngen3のソースコードファイルのうち以下を探します。
AirLib/deps/eigen3/Eigen/src/Core/arch/CUDA/Half.h
です。

2018年05月24日時点では、
このファイルの先頭付近のコメント中に、MS932として読み込もうとして問題が発生する文字が含まれています。

// “AS IS”

の部分の引用符の文字コードが該当箇所です。
Unicode的には、0x201cと0x201dのコード値の文字になります。

Byte Order Mark(BOM)付きのUTF-8で保存するなどで解決します。
または、引用符をASCIIコードの引用符に変更してもOKです("AS IS"にする)。

変更した後に再度、build.cmdを実行するとうまくいくはずです。

ちょっと分かりづらいですが、

#### Build failed - see messages above.`

と表示されずにコマンドが終了していれば、
たぶん成功しています。

上記をやっても失敗する場合は、個別にいろいろ頑張って調べるしかないかも。

4. Unreal EngineのプロジェクトにAirSimを仕込む手順

Unreal Engineには無償のサンプルがたくさんあるので、
これを使って組み込んでみます。

4.1. サンプルのプロジェクトを作成する

[Epic Games Launcher]の[UNREAL ENGINE]タブの左側のメニュにある、
[Learn]から各種サンプルが入手できます。

例えば、
[Landscape Mountains]のサンプルを選ぶと、[Free]というボタンがあって、
押すと入手できます。

※ Landscape Mountainsの場合は、Debugでビルドした時点で、
プロジェクトのディレクトリは、中間ファイル含めて2.5GB程度になります。

※AirSimはプラグインなので、Unreal Engine 4.18と互換性のあるサンプルなら、
なんでも大丈夫だと思いますが、
プレイヤーの位置調整やカメラワークの調整等が比較的簡単なので、
最初に試す時点では、Landscape Mountainsがおススメです

[Create Project]でサンプルのプロジェクトを作成できます。
適当なディレクトリに、
[Select Version of the Engine for Project]では、[4.18]を選ぶと、
AirSimを仕込めるプロジェクトが作成できます。
コンテンツのダウンロード等に少し時間がかかると思います。

4.2. プロジェクトをビルドする

作成したプロジェクトのディレクトリに行くと、Unreal Engine Projectの
ProjectName.uproject(拡張子付きかはOS設定による)があるので、
ダブルクリックなどで、Unreal Editorで開きます。

Visual Studioのソリューションの作成とビルドをするために、いったん、空のC++ファイルを作っておきます。

Unreal Editorの[ファイル] > [新規C++クラス...]を選びます。
親クラスの選択では、[なし]を選択します。
[次へ]ボタンを押して、ファイル名はとりあえず適当でOKです。
[クラスを作成]でファイルが作成されます。

この時点で、Visual Studioのソリューションが作成されて、ビルドが開始されるはずです。
また、Visual Studioが起動すると思います。

4.3. プロジェクトにAirSimプラグインを仕込む

AirSimのディレクトリ内に、Unrealというディレクトリがあって、
その中に、Pluginsというディレクトリがあるので、
Pluginsディレクトリごと、Unrealのプロジェクトディレクトリ内にコピーします。

ProjectName.uprojectファイルをテキストエディタなどで開いて編集します。

例えば、こんな感じになります。

{
    "FileVersion": 3,
    "EngineAssociation": "4.18",
    "Category": "Samples",
    "Description": "",
    "Modules": [
        {
            "Name": "LandscapeMountains",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "AdditionalDependencies": [
              "AirSim"
            ]
        }
    ],
    "TargetPlatforms": [
        "MacNoEditor",
        "WindowsNoEditor"
    ],
    "Plugins": [
        {
            "Name": "AirSim",
            "Enabled": true
        }
    ],
    "EpicSampleNameHash": "1226740271"
}

追加したのは、以下の2か所になります。

,
"AdditionalDependencies": [
  "AirSim"
]

"Plugins": [
        {
            "Name": "AirSim",
            "Enabled": true
        }
    ],

です。

JSON形式なので、形式に間違いがないかを確認して保存します。

4.4. Visual Studioプロジェクトファイルの生成とUnreal Editorの起動

ここで一旦、Visual StudioとUnreal Editorは閉じておきます。

Unreal Engineのサンプルプロジェクトのディレクトリ内で、
ProjectName.uprojectを右クリックして、
[Generate Visual Studio project files]を選んで、プロジェクトファイルを生成します。

生成が完了後に、同じディレクトリ内のVisual Studioソリューション、
ProjectName.slnをダブルクリックなどして、Visual Studioで開きます。

[ソリューション構成]で、[Debug Game Editor]を選択しておきます。

Debug.png

これで、[F5]などでデバッグ開始すると、Unreal Editorが開きます。

4.5. Unreal Editor上で動かして遊ぶ

[ワールドセッティング]などからゲームモードを変更しておきます。
[ワールドセッティング]ウィンドウが表示されていない場合は、
[ウィンドウ] > [ワールドセッティング]を選んで表示させます。

[ワールドセッティング]の[GameMode Override]で、
[AirSimGameMode]を選びます。

ここで、一旦、保存しましょう。

Unreal Editorの上側にある、[プレイ]ボタンを押すと、動作するはずです。

Play.png

これで、挙動カスタマイズしたり、新機能入れたりもできるようになります。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8