LoginSignup
3
3

More than 3 years have passed since last update.

C++のOpen3Dをビルドしてexampleを動作させる

Last updated at Posted at 2020-07-28

概要

目標としては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を削除します。

CmakeLists.txt
        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が立ち上がります。

plyViewer.PNG

利用したplyファイルは下記からダウンロードしました。
https://github.com/keijiro/Pcx/blob/master/Assets/nebulousflynn/anthidium-forcipatum.ply

これだけでも単純にViewerとして機能するので使いどころありそうですね。他にも点群の位置合わせなど色々なサンプルがあるので興味があれば試してみるとよいと思います。

まとめ

C++のOpen3Dをビルドできる環境を構築し、exampleを実行できるところまでやりました。目的としてはUnityPluginを作る所までやることでしたが、長くなるので別記事に分けます。

3
3
1

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
3
3