やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

MMD読込ライブラリmmdpipyをビルドする

 前回のをPythonで動作させるライブラリ。

成果物

demo

情報源

スクリプト

install_opengl.sh

!#/bin/bash
sudo apt-get install -y libx11-dev xorg-dev \
                        libglu1-mesa libglu1-mesa-dev \
                        libgl1-mesa-glx libgl1-mesa-dev
sudo apt install -y libglfw3 libglfw3-dev
sudo apt install -y libglew-dev
sudo apt -y install freeglut3 freeglut3-dev
sudo apt -y install libglu1-mesa-dev mesa-common-dev
sudo apt -y install libgles2-mesa-dev libegl1-mesa-dev xorg-dev
sudo apt -y install libglew-dev
sudo apt -y install libbullet-dev

build.sh

cd .
build_mmdpi.sh
build_mmdpipy.sh

build_mmdpi.sh

git clone https://github.com/shirobu2400/mmdpi
cd mmdpi
cmake . -Dpi=on
make

sudo mkdir -p /usr/local/include/mmdpi
sudo cp ./libmmdpi/mmdpi.h /usr/local/include/mmdpi
sudo cp -r ./libmmdpi/vmd  /usr/local/include/mmdpi
sudo cp -r ./libmmdpi/pmx  /usr/local/include/mmdpi
sudo cp -r ./libmmdpi/pmd  /usr/local/include/mmdpi
sudo cp -r ./libmmdpi/model  /usr/local/include/mmdpi
sudo mkdir -p /usr/local/lib/mmdpi
sudo cp ./libmmdpi/libmmdpis.so /usr/local/lib/mmdpi/libmmdpis.so
cd ..

build_mmdpipy.sh

sudo apt -y install libboost-dev libboost-python-dev python-opengl
pip3 install pyopengl
git clone https://github.com/shirobu2400/mmdpipy
cp ./mmdpi/libmmdpi/libmmdpis.so ./mmdpipy/libmmdpis.so
cd mmdpipy
make
cd ..

run.sh

cd mmdpipy
python sample.py -p "pmxファイルパス" -v "vmdファイルパス"

all.sh

install_opengl.sh
build.sh
run.sh

 run.shsample.py引数にpmx(pmd)ファイルパスを渡すとそのモデルが表示される。また、vmdも渡せばモデルが動く。pmd,vmdは適当にググってダウンロードすること。

調査

 上記スクリプトを作るに当たって、mmdpypiのMakefileを調査した。mmdpiをインストールするパスが書いてあるので、そのとおりにmmdpiの各種ファイルを配置してやる。すると、mmdpypiをビルドする準備が整う。

INCLUDE_PATH   = -I/usr/local/include/mmdpi -I/usr/local/include/bullet -I/usr/include/bullet -I/usr/include/python2.7 -I/usr/include/python3.5
LIBRARY_PATH    = -L/usr/local/lib -L/usr/lib -L/usr/local/lib/mmdpi

所感

 Pythonなら簡単かも。と思ったが、コードの内容をみるとほぼC/C++APIをそのまま使うような状況。それでもメモリや文字列の扱いは簡単になるし、Makefileも作らずに済むから楽。

対象環境

$ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux