#概要
目標としてはOpen3DのnativePluginをUnityから利用してPointCloudの位置合わせをしたい。その為に必要なOpen3DのC++のビルド環境を整備してサンプルを実行できるところまでやります。
#環境
Windows10
VisualStudio2019
Cmake(cmake-gui)
git
#必要なものをインストール
VisualStudio2019
2019が必要です。
##git
下記を見ながらインストールしました。
https://qiita.com/taketakekaho/items/75161e1273dca98cb4e1
Cmake(cmake-gui)
以下を見ながらインストールしました。
https://www.kkaneko.jp/tools/win/cmake.html
Open3DプロジェクトCloneしてcmakeでビルド
Open3Dの公式ページを見ながら行います。
http://www.open3d.org/docs/release/compilation.html#windows
Open3DプロジェクトをClone
依存ライブラリも全部ダウンロードします。下記コマンドを適当なディレクトリで行います。
git clone --recursive https://github.com/intel-isl/Open3D
pythonインストール
Open3D C++のpythonバインディングの為に必要らしいです。以下を見ながらインストールします。
http://www.open3d.org/docs/release/compilation.html#id6
cmake gui設定
cmake-guiを立ち上げて、
[Where is the souce code]にOpen3Dのプロジェクトトップのディレクトリを、
[Where to build the binaries]にビルドした結果を出力させるディレクトリを入力します。ディレクトリは適当に作成したものを利用します。私はとりあえずOpen3Dプロジェクト直下にbuildディレクトリを作成して利用しました。
Configure -> Generate
Configureボタンを押すと最終的に作成されるVisualStudioプロジェクトの情報を設定するUIが立ち上がります。ここで利用するVisualStudioのバージョンを選択します。私はVisual Studio 16 2019を選択しました。残りの選択項目は空白でOKで、Finishを押すとOpen3Dプロジェクト直下のCMakeLists.txtを実行しようとします。幾つかwainingが出ますが、とりあず無視で大丈夫で、Generateボタンを押すとvisualstudioの環境一式がbuildフォルダ内に生成されます。
Open Project
Generateが成功するとOpenProjectボタンが押せるようになります。このボタンを押すとOpen3Dプロジェクトが開きます。
ビルド
ソリューション構成をRelWithDebinfoにし、ソリューションエクスプローラーからALL_BUILDを選択してビルドします。するとC2220コードのエラーが出力されビルドが失敗してしまいます。
これの解決策をネットで探して以下を見つけました。CmakeList中の/WXの記述を削除すれば回避できるみたいです。
https://suzulang.com/cmake-c2220-wx/
なので、プロジェクトTOPにあるCmakeLists.txtの313行目にある/WXを削除します。
if(MSVC)
target_compile_definitions(${target} PRIVATE NOMINMAX _USE_MATH_DEFINES _ENABLE_EXTENDED_ALIGNED_STORAGE)
# target_compile_options(${target} PRIVATE /EHsc /wd4522 /Wv:18 /WX)
target_compile_options(${target} PRIVATE /EHsc /wd4522 /Wv:18)
再びcmake-guiのContigure->Generate->OpenProject->リビルドを繰り返すと無事ビルドが出来ます。
exampleを動作させる
builds/bin/examples\RelWithDebinfoにexamplesのexeファイルが出力されています。それぞれ使い方はbuild/examples/cppの中にあるcppファイルを見ればわかると思います。一例としてpointCloudのファイルであるplyファイルをみるVisualizer.exeを実行してみます。Visualizer.exeのあるディレクトリまで移動してpowershell等で下記を実行します。
.\Visualizer.exe pointcloud {plyファイル}
上記を実行するとpointcloudViewerが立ち上がります。
利用したplyファイルは下記からダウンロードしました。
https://github.com/keijiro/Pcx/blob/master/Assets/nebulousflynn/anthidium-forcipatum.ply
これだけでも単純にViewerとして機能するので使いどころありそうですね。他にも点群の位置合わせなど色々なサンプルがあるので興味があれば試してみるとよいと思います。
まとめ
C++のOpen3Dをビルドできる環境を構築し、exampleを実行できるところまでやりました。目的としてはUnityPluginを作る所までやることでしたが、長くなるので別記事に分けます。