BuildForWindows_JP - CCSEPBVR/CS-IS-PBVR GitHub Wiki

Windows環境でのビルド

フィルタプログラムおよびサーバプログラムはC++で実装されており、コンフィグファイルで設定することで逐次処理版、スレッド並列処理用のOpenMP版、および、超並列処理用のMPI + OpenMP版を切り替えてビルドできる。 クライアントプログラムはC++、QtとOpenGLによって実装されている。

ソースコードのクローン

gitコマンドを利用して以下のようにクローンを行う。

git clone https://github.com/CCSEPBVR/CS-IS-PBVR.git
cd CS-IS-PBVR
git checkout release/vX.X.X

サーバ・フィルタ・KVSMLコンバータのビルド

任意のディレクトリにクローンされたソースコードパッケージの中でCS-IS-PBVR/CS_Server/ディレクトリは以下のpbvr.conf、Makefileによってコンパイルされる。 pbvr.confファイルによりmakeを設定し、フィルタ、サーバプログラムをビルドする。 CS-IS-PBVR/CS_server/ディレクトリの構成は以下の通りである。

CS-IS-PBVR
└── CS_server
    ├── main.cpp
    ├── Makefile ※2     - CS_server/配下のソースコードをコンパイルする
    ├── pbvr.conf ※2    - makeの設定ファイル
    ├── pbvr.sln
    ├── pbvr.v12.suo
    ├── Common          - プロトコル、通信、共通ライブラリ
    ├── Filter          - フィルタプログラム
    ├── FunctionParser  - 数式処理ライブラリ
    ├── arch            - 各環境のコンパイラの設定ファイル
    ├── VisModule       - 可視化ライブラリKVS※1とサーバプログラムを統合したもの
    ├── KVSMLConverter  - KVSMLコンバータ

※1. このKVSはクライアントプログラムでは使用されない、このKVSはサーバ上の並列可視化処理に特化した独自のバージョンである。
※2. Windows環境ではMakefileとpbvr.confの代わりにVisual Studio用のソリューションファイルpbvr.slnを用いる。

pbvr.confにおいて変数の入力値を変更することで、インストールする機能を指定する。
pbvr.confの変数一覧を以下に示す。

変数 入力値 説明
PBVR_MACHINE 文字列 arch/配下のコンパイル設定ファイル
PBVR_MAKE_FILTER 0 or 1 フィルタのサポートの有無
PBVR_MAKE_SERVER 0 or 1 サーバのサポートの有無
PBVR_MAKE_KVSML_CONVERTER 0 or 1 KVSMLコンバータのサポートの有無
PBVR_SUPPORT_VTK 0 or 1 VTKサポートの有無(フィルタのみ)

変数PBVR_MACHINEではコンパイル環境に応じてarch/ディレクトリ配下に格納されているMakeFileの設定ファイルを指定する。

ファイル名 説明
Makefile_machine_gcc gccによる逐次版コンパイルの設定
Makefile_machine_gcc_omp gccによるOpenMP版コンパイルの設定
Makefile_machine_gcc_mpi_omp gccによるMPI+OpenMP版コンパイルの設定
Makefile_machine_intel intelによる逐次版コンパイルの設定
Makefile_machine_intel_omp intelによるOpenMP版コンパイルの設定
Makefile_machine_intel_mpi_omp intelによるMPI+OpenMP版コンパイルの設定
Makefile_machine_s86_mpi_omp JAEA大型計算機上でコンパイルの設定
Intelコンパイラとmptライブラリを使用
Makefile_machine_fugaku_clang 富岳(ARM)clangモードでのコンパイルの設定
Makefile_machine_fugaku_trad 富岳(ARM)tradモードでのコンパイルの設定

サーバ・フィルタのビルド

  1. CS-IS-PBVR/CS_serverディレクトリ配下のpbvr.slnを実行し、MSVCを起動する。

  2. OpenMPにより並列化されたプログラムを生成する場合は、下記プロジェクトファイルのOpenMPのサポートを有効化する。

    • Common
    • Filter
    • FunctionParser
    • KVSMLConverter
    • VisModule

    VisModuleプロジェクトファイルのOpenMPのサポートを有効化する例を示す。

    1. VisModuleを右クリックする。 Local Image

    2. プロパティを選択する。 Local Image

    3. C/C++ -> 言語からOpenMPのサポートを「はい(/openmp)」にする。 Local Image

  3. ビルドの構成がRelease x64であることを確認する。 Local Image

  4. ビルド -> ソリューションのビルドを選択してビルドを開始する。 Local Image

  5. ビルド完了後、CS-IS-PBVR¥CS_server¥x64¥Release配下に、pbvr_filter.exe(フィルタ)、pbvr_server.exe(サーバ)の実行モジュールが生成されることを確認する。

データ形式を拡張したサーバのビルド

サーバプログラムは独自のKVSML形式によるボリュームデータのみ処理できるが、
KVS・VTKライブラリを使用してサーバプログラムの対応データ形式を拡張することもできる。
使用方法についてはチュートリアルに記載している。

KVS及びVTKは事前にインストールされているものとする。
インストール方法は各ライブラリリポジトリを参考にする。

また、VTKのインストールにあたってはCMake-guiにおいて以下の設定を行うこと。

  • BUILD_SHARED_LIBSオプションをオンにする。
  • CMAKE_BUILD_TYPEオプションを”Release”にする。
  • CMAKE_INSTALL_PREFIXをVTKをインストールする場所に設定する。

1.以下の環境変数を設定する。

変数
KVS_DIR d:\environments\KVS\install
VTK_VERSION n.n
VTK_LIB_PATH d:\environments\VTK\lib
VTK_INCLUDE_PATH d:\environments\VTK\include\vtk-n.n
PATH d:\environments\VTK\bin

ここで、n.nには使用するVTKのバージョンを入力し、パスはVTKライブラリのインストール環境に合わせて書き換えること。

2.CS-IS-PBVR/CS_serverディレクトリ配下のpbvr.slnを実行し、MSVCを起動する。
3.プロジェクト「VisModule_vtk」を右クリックし、「ビルド」を選択。
4.ビルド完了後、CS-IS-PBVR\CS_server\x64\Release配下に、pbvr_server.exe(サーバ)の実行モジュールが生成されることを確認する。

VTK用のフィルタビルド

VTK用のフィルタのビルドにはVTK6.0以上が必要である。 VTKライブラリのインストールについてはVTKウェブサイトを参照すること。 また、インストールにあたってはCMake-guiにおいて以下の設定を行うこと。

  1. BUILD_SHARED_LIBSオプションをオンにする。
  2. CMAKE_BUILD_TYPEオプションを”Release”にする。
  3. CMAKE_INSTALL_PREFIXをVTKをインストールする場所に設定する。

以下の環境変数を設定する。

変数
VTK_VERSION n.n
VTK_LIB_PATH d:\environments\VTK\lib
VTK_INCLUDE_PATH d:\environments\VTK\include\vtk-n.n

ここで、n.nには使用するVTKのバージョンを入力し、パスはVTKライブラリのインストール環境に合わせて書き換えること。

KVSMLコンバータのビルド

KVS及びVTKは事前にインストールされているものとする。
インストール方法は各ライブラリリポジトリを参考にする。

また、VTKのインストールにあたってはCMake-guiにおいて以下の設定を行うこと。

  • BUILD_SHARED_LIBSオプションをオンにする。
  • CMAKE_BUILD_TYPEオプションを”Release”にする。
  • CMAKE_INSTALL_PREFIXをVTKをインストールする場所に設定する。

1.以下の環境変数を設定する。

変数
KVS_DIR d:\environments\KVS\install
VTK_VERSION n.n
VTK_LIB_PATH d:\environments\VTK\lib
VTK_INCLUDE_PATH d:\environments\VTK\include\vtk-n.n
PATH d:\environments\VTK\bin

ここで、n.nには使用するVTKのバージョンを入力し、パスはVTKライブラリのインストール環境に合わせて書き換えること。

2.CS-IS-PBVR/CS_server/KVSMLConverterに移動し nmake /A を実行してビルドする。
3.CS-IS-PBVR/CS_server/KVSMLConverter/Example/Releaseにkvsml-converter.exeの実行モジュールが生成されることを確認する。

クライアントのビルド

本クライアントプログラムは、オリジナルのKVSではなく改良した独自バージョンのKVSを利用してビルドされる。

  • GLUTのインストール
    freeglutのWebサイトから'freeglut-MSVC-3.0.0-2.mp.zip'をダウンロードし解凍する。解凍後、以下のディレクトリ構造に合わせて配置する。

  • glewの配置
    GLEWのWebサイトから'glew-2.1.0-win32.zip'をダウンロードし解凍する。解凍後、以下のディレクトリ構造に合わせて配置する。

<BASE_DIR>
└── lib
    └── OpenGL
        ├── bin
        │   ├── freeglut.dll
        │   └── glew32.dll
        ├── include
        │   └── GL
        │       ├── eglew.h
        │       ├── freeglut.h
        │       ├── freeglut_ext.h
        │       ├── freeglut_std.h
        │       ├── glew.h
        │       ├── glut.h
        │       ├── glxew.h
        │       └── wglew.h
        └── lib
            ├── freeglut.lib
            ├── glew32.lib
            └── glew32s.lib

配置が完了したら以下のユーザー環境変数を設定する。

変数
KVS_GLUT_DIR <BASE_DIR>¥OpenGL
KVS_GLEW_DIR <BASE_DIR>¥OpenGL
Path <BASE_DIR>¥OpenGL¥bin
  • KVSライブラリのインストール
    「x64 Native Tools Command Prompt for VS 2022」を起動し任意のインストール先に移動する。その後、QTPBVR用KVSライブラリをクローンする。
git clone [email protected]:TO0603/KVS.git
cd KVS
git checkout main

KVS/kvs.confを以下の通りに編集する。

#=============================================================================
#  KVS enable/support flags
#  $Id: kvs.conf 1525 2013-04-11 02:58:08Z [email protected] $
#=============================================================================
KVS_ENABLE_OPENGL                = 1
KVS_ENABLE_GLU                   = 1
KVS_ENABLE_GLEW                  = 1
KVS_ENABLE_OPENMP                = 0
KVS_ENABLE_DEPRECATED            = 0

KVS_SUPPORT_CUDA                 = 0
KVS_SUPPORT_GLUT                 = 1
KVS_SUPPORT_GLFW                 = 0
KVS_SUPPORT_FFMPEG               = 0
KVS_SUPPORT_OPENCV               = 0
KVS_SUPPORT_QT                   = 1
KVS_SUPPORT_OPENXR               = 0 #imgui並びにOpenXR-SDKをインストールしている場合は1にする。
KVS_SUPPORT_PYTHON               = 0
KVS_SUPPORT_MPI                  = 0
KVS_SUPPORT_EGL                  = 0
KVS_SUPPORT_OSMESA               = 0
KVS_SUPPORT_EXTENDED_FILE_FORMAT = 0 

編集後、以下のユーザ環境変数を設定してプロンプトを再起動する。

変数
KVS_DIR <BASE_DIR> ¥KVS¥install

再起動後、<BASE_DIR> ¥KVSに移動し、ビルドとインストールを行なう。

c:¥>cd <BASE_DIR>¥lib¥KVS
<BASE_DIR>¥lib¥KVS>nmake
    ~~ビルドが完了するまで待つ~~
<BASE_DIR>¥lib¥KVS>nmake install
  • QTPBVRのビルド
  1. CS-IS-PBVR/QTPBVR/ディレクトリ配下のQTPBVR.proをQtCreatorで開く。
    開いた際に「有効な設定が見つかりません」と表示された場合は、「OK」ボタンをクリックする。 プロジェクトの設定画面で「Desktop Qt 6.2.4 MSVC2019 64bit」のキットにチェックを入れ、「Configure Project」のボタンをクリックする。 Local Image

  2. ビルド設定をReleaseに切り替える。 Local Image

  3. 下にスクロールし、環境変数KVS_DIRが設定されていることを確認する。 Local Image

  4. 編集からqtpbvr.confの設定を確認します。.fbx、 .3dsフォーマットを読み込ませる場合はPBVR_SUPPORT_FBX、 PBVR_SUPPORT_3DSを1にし、FBXSDK、 Assimpライブラリのinclude、libディレクトリのフルパスを入力する。 またOpenXRを利用してHMDに可視化結果を表示させる場合はDESKTOP_SCREEN_MODE = 0, OPENXR_SCREEN_MODE = 1にする。 Local Image

  5. プロジェクトを右クリックし、「qmakeの実行」をクリックする。 Local Image

  6. qmake完了後、プロジェクトを右クリックし、「ビルド」をクリックする。 Local Image

  7. ビルド完了後、画面左下の再生マークまたはCtrl+RでQTPBVRの実行ができることを確認する。 Local Image

⚠️ **GitHub.com Fallback** ⚠️