Overview
今回の目的として、ルービックキューブなどの立体パズルをシミュレーションするものを作りたいと思っている。
3Dのポリゴンなども表示したいので、3DCGのためのパッケージとしてOpenGLを使うことにした。
Visual Studio2019で開発したいのでGLUTも使用。
今後使うことになりそうな、CGALというCG分野の色々な便利アルゴリズムが詰まったライブラリも使用できるようにした。
この分野はど素人なので、手探りでやっていきます。
OpenGL 4.6.0 /GLUT 環境整備
非常に参考になったサイト。
https://tokoik.github.io/opengl/libglut.html
Visual Studioで空のプロジェクトを作成したのち、「プロジェクトタブ→NuGetパッケージの管理」を開く。
参照タブの検索欄で「nupengl」を検索し、nupengl.coreをインストール。
nupenglはもう古くなっていて非推奨であるというようなことを言われるが問題なかった。
これだけで終わり。必要なものをGL/glut.hからインクルードすれば問題なく動く。
CMake 3.17.3 環境整備
いずれCMakeが必要になるので先にCMakeをインストール。
https://cmake.org/download/
公式から最新のCMAKE 3.17.3のBinary Distributionの「Windows win64-x64 Installer」をダウンロード。
案内に従い、環境変数にCMakeを追加する以外はデフォルトでインストール完了。
CGAL 5.0.2 環境整備
公式マニュアルを見ながら。非常に丁寧なマニュアル。
https://doc.cgal.org/latest/Manual/windows.html
今回はこのマニュアルの中の、Vcpkg Library Managerを使ってCGALをインストールすることにした。
PowerShellを開いて、適当なフォルダで
C:\dev> git clone https://github.com/microsoft/vcpkg
C:\dev> cd vcpkg
C:\dev\vcpkg> .\bootstrap-vcpkg.bat
vcpkg.exe install cgal
デフォルトでは32bitバージョンがインストールされる。
64bitバージョンを入れたい場合は環境変数を追加で設定しておく必要があるらしい。
これで関連するもの全部入れてくれるが、自分の環境ではウイルスソフト(Norton)が誤作動してうまくいかなかった。
データプロテクタをオフにすれば問題なくなった。
サンプルプログラムの各種設定
まずはサンプルのダウンロード。
ダウンロードリンク(ダウンロードされます)
解凍して、目的のサンプルプログラムのフォルダでビルド用フォルダを作りcmake使用。
CGAL-5.0.2\examples> cd .\Kernel_23\
CGAL-5.0.2\examples\Kernel_23> mkdir build
CGAL-5.0.2\examples\Kernel_23> cd .\build\
CGAL-5.0.2\examples\Kernel_23\build> cmake-gui ..
これでCMakeのGUIが起動する。
Configureを一回クリック、設定画面が出てくる。
1番上のgeneratorは使うVisual Studio(今回は2019)。
2番目の「Optional Platform for generator」は、vcpkgでのインストール時の設定に合わせる。
デフォルトの32bitをインストールした場合はWin32を指定。64bitの時はx64かな?
3番目は空欄。
4番目のラジオボックスは「Specify toolchain file for cross compilation」を選ぶ。
これでNextを押してvcpkgのcmakeを指定してやる。
vcpkg/scripts/buildsystems/vcpkg.cmake
これで進むと「Configure Done」が画面下のコンソールに表示されるとともに上のリストに赤い項目がたくさん出てくる。
もう一回Configureを押して全項目が白に戻る。
ここでCMakeの設定を見たり変更したりできる。
デフォルトだとインストール先を指定するCMAKE_INSTALL_PREFIXがProgram Files の直下なので、変更したほうがいいかもしれない。
あとはGenerateを押せば完了、Visual Studioのソリューションファイル(~.sln)がbuildディレクトリ直下に生成されるので、ダブルクリックすればVisual Studioが起動する。
サンプルプログラムのコンパイル・実行
Visual Studioで生成されたソリューションを開く。
exampleのそれぞれの.cppファイルにつき1つのプロジェクトが生成されている。
もし「ALL_BUILD」と「ZERO_CHECK」の二つしかソリューションエクスプローラに表示されないなら、cmakeが何か間違えている。
一旦左上のFile->Delete Cacheでリセットしてからやり直そう。
正常にここまで出来ているならこうなってるはず。(example/Kernel_23を使った場合)
あとはプロジェクトを右クリックしてデバッグすれば動くはず。
ただし、一部のプログラムはQtなどのvcpkgで入れなかったものを必要とするので、それらを動かしたい場合はライブラリやらを追加する必要がある。
実行した時にコンソールが一瞬で閉じてしまって、出力が全く確認できないときは、Visual Studioの設定を変更しよう。
「ツール→オプション→デバッグ→全般」の下あたりにある「デバッグの停止時に自動的にコンソールを閉じる」をオフにすれば、コンソールが残るようになる。
To Be Continued...
次はOpenGLとGLUT、CGALを一緒に使い、ポリゴンを画面に表示してみようと思います。
特に点群からSurface Meshを生成したいので、Scale-Space Surface Reconstruction あたりのクラスを使うことになりそう。