はじめに
前回の記事では、3Dデータ圧縮ライブラリDracoのUnityネイティブプラグインをHoloLensで実行してみました。DracoのDLLをビルドするのに苦戦したので、今後のために手順をメモしておきます。CMakeを使ってビルドするライブラリをHoloLens(UWP)で利用する場合にも参考になるはずです。
開発・検証環境
- Draco Version 1.3.3 release
- CMake 3.11.4
- Visual Studio 2017 (Version 15.6.6)
- Unity 2017.4.2.f2
- Windows 10 Pro
Dracoとは
Dracoは、Google が開発している、3Dメッシュと点群データの圧縮/解凍のためのオープンソース・ライブラリです。3Dモデルデータの保存や転送を改善することを目的に開発されています。
https://google.github.io/draco/
DracoのUnity Native Pluginをビルドする
手順
- CMakeのインストール
- CMakeでVisual Studioのプロジェクトを生成
- Visual StudioでDLLのビルドを実行
1. CMakeのインストール(Windows)
https://cmake.org/download/にアクセスしてインストーラーをダウンロードする。ダウンロードしたインストーラーを実行する。
インストーラーでCMakeをPathに追加するように選択する。
インストール終了後、コマンドプロンプトでCMakeのバージョンを確認する。
cmake --version
2. CMakeでUWP用のVisual Studioプロジェクトを生成
Dracoのプロジェクトのルートディレクトリ直下にbuildディレクトリを作成する。
buildディレクトリに移動して、コマンドプロンプトで以下のコマンドを実行する。
cmake .. -G"Visual Studio 15 2017" -D"CMAKE_SYSTEM_NAME=WindowsStore" -D"CMAKE_SYSTEM_VERSION=10.0" -D"CMAKE_SYSTEM_PROCESSOR=x86" -D"BUILD_UNITY_PLUGIN=ON" -D"CMAKE_CXX_FLAGS=/DWIN32 /D_WINDOWS /W2 /DUNICODE /D_UNICODE /GR /EHsc /wd4146"
Visual Studio 2017のソリューションとプロジェクトが生成される。
3. Visual StudioでDLLのビルドを実行
buildディレクトリに生成された「draco.sln」をVisual Studio 2017で開く。
「ビルド->バッチビルド」から「dracodec_unity」のReleaseにチェックを入れて、ビルドを実行する。
ビルドが上手くいくと「build/Release」の直下にDLLファイルが生成されている。
CMakeコマンドのオプションについて
DracoのUnity Native Pluginをビルドするために実行したCMakeコマンド。
cmake .. -G"Visual Studio 15 2017" -D"CMAKE_SYSTEM_NAME=WindowsStore" -D"CMAKE_SYSTEM_VERSION=10.0" -D"CMAKE_SYSTEM_PROCESSOR=x86" -D"BUILD_UNITY_PLUGIN=ON" -D"CMAKE_CXX_FLAGS=/DWIN32 /D_WINDOWS /W2 /DUNICODE /D_UNICODE /GR /EHsc /wd4146"
UWP向けにVisual Studio 2017のプロジェクトを生成するオプション。
-G"Visual Studio 15 2017" -D"CMAKE_SYSTEM_NAME=WindowsStore" -D"CMAKE_SYSTEM_VERSION=10.0"
HoloLens用にDLLをビルドするためにx86を指定するオプション。
-D"CMAKE_SYSTEM_PROCESSOR=x86"
DracoのUnity Native Plugin(DLL)をビルドできるようにするオプション。
-D"BUILD_UNITY_PLUGIN=ON"
ビルド時に発生するコンパイラの警告「C4146」を無視するように設定するオプション。
-D"CMAKE_CXX_FLAGS=/DWIN32 /D_WINDOWS /W2 /DUNICODE /D_UNICODE /GR /EHsc /wd4146"
「/wd4146」以外のフラグは、オプションを指定しない場合でも設定されている値。オプションを指定しない場合にCMAKE_CXX_FLAGSに設定される値は、buildディレクトリに生成されるCMakeCache.txtを見ると確認できる。
オプションでコンパイラの警告「C4146」を無視するように設定しないと、ビルドした時に以下のようにエラーが発生する。
DLLの動作確認
前回の記事で紹介したサンプルプロジェクト「DracoSampleForHoloLens」に含まれているDLLを自分でビルドしたものに置き換えて動作すれば問題ありません。
HoloLens(UWP)用の「dracodec_unity.dll」を「Plugins\WSA\x86」に配置する時の設定は以下の通りです。
実行結果
まとめ
3Dデータ圧縮ライブラリDracoのUnity Native PluginをHoloLensで実行するためにDLLをビルドする手順を紹介しました。CMakeを使ってビルドするライブラリをHoloLens(UWP)で利用する場合の参考になればと思います。