お世話になっております。
しゃまとんです。

テストで実装してみたいことがあり、assimp2jsonというツールが必要になったので準備していたのですが、 使えるようになるまでの備忘録です。

cmakeというものを知らなかったのですが、当たり前な内容かもしれません。
cmake便利ですね!そもそもcmakeとは

assimp2jsonとは3DのファイルをJSON(assimp)に変換してくれるものです。
3Dを何かしらやるやつですね。

はい。それではcmakeから使えるようにしていきます。
https://cmake.org/download/からOSにあったものを選びます。(今回はmacのdmg)
実行して、Applicationsに入れるだけ。

今回はコマンドラインで実行するので、Applicationsのappからリンクをはります。

sudo ln -s /Applications/CMake.app/Contents/bin/ccmake /usr/bin/ccmake
sudo ln -s /Applications/CMake.app/Contents/bin/cmake /usr/bin/cmake
sudo ln -s /Applications/CMake.app/Contents/bin/cmake-gui /usr/bin/cmake-gui
sudo ln -s /Applications/CMake.app/Contents/bin/cmakexbuild /usr/bin/cmakexbuild
sudo ln -s /Applications/CMake.app/Contents/bin/cpack /usr/bin/cpack
sudo ln -s /Applications/CMake.app/Contents/bin/ctest /usr/bin/ctest

次にassimp2jsonをビルドします。まずはgithubからcloneします。
任意のディレクトリでやればOK。

git clone [email protected]:acgessler/assimp2json.git

cloneした状態だとassimp2json/assimpが空になっています。assimp以下はsubmoduleとして設定されているので、取得します。

cd assimp2json
git submodule init
git submodule update

これを行うと commit : 93bb63fdb40d9682e60ca97b0eda4951a552c742 の状態のassimpがcloneされます。

これでビルドの準備が整ったので、topに移動して下記のコマンドを実行します。

cmake CMakeLists.txt -G 'Unix Makefiles' # makefile生成

実行すると下記のように表示されます(はず)

-- The C compiler identification is AppleClang 7.0.0.7000176
-- The CXX compiler identification is AppleClang 7.0.0.7000176
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.28")
-- Building a non-boost version of Assimp.
-- Looking for ZLIB...
-- Checking for module 'zzip-zlib-config'
--   Package 'zzip-zlib-config' not found
-- Found ZLIB: optimized;/usr/lib/libz.dylib;debug;/usr/lib/libz.dylib
-- Checking for module 'minizip'
--   Package 'minizip' not found
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Configuring done
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  MACOSX_RPATH is not specified for the following targets:

   assimp

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/xxxxxxxx/Downloads/assimp2json

makeします。

$ make
Scanning dependencies of target assimp
[  0%] Building CXX object assimp/code/CMakeFiles/assimp.dir/Assimp.cpp.o
[  0%] Building CXX object assimp/code/CMakeFiles/assimp.dir/BaseImporter.cpp.o
[  1%] Building CXX object assimp/code/CMakeFiles/assimp.dir/BaseProcess.cpp.o

... ビルドが続く ...

[ 99%] Building CXX object assimp/test/CMakeFiles/unit.dir/unit/utNoBoostTest.cpp.o
[100%] Linking CXX executable ../../bin/unit
[100%] Built target unit

ビルドが通ると bin配下にassimp2jsonが作られます。

実行できるか簡単にテストしてみます。こちらからデータを取得します。

git clone [email protected]:golang-samples/gopher-3d.git
assimp2json gopher.stl > gopher.json

PATHを通してない場合、bin配下を指定してください。
エディタ等でひらくと結構長めなjsonが記載されていれば変換されています。

以上です。

モデルデータは下記のサイト等で確認できます。(github上でも見れますが)