6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPi でMMDのファイルを表示、動作させたい!

Last updated at Posted at 2018-03-27

そこそこ前に作り始めたものですが...

MMDPI

公開中です。
https://github.com/shirobu2400/mmdpi
mmdpi_screen.png
こんな感じのことができる。

使い方(ビューア)

mmdpiv -p "モデルパス" -v "モーションパス"

メソッド群(C++ ライブラリ)

int mmdpi::load( const char* model_name ) モデルファイル(.pmd, .pmx)の読み込み(PATH で指定)
int mmdpi::vmd_load( const char* file_name ) モーションファイル(.vmd)の読み込み(PATH で指定)
void mmdpi::draw( void ) 表示
void mmdpi::set_bone_matrix( uint bone_index, mmdpiMatrix& matrix ) 指定されたボーンのindexと対応するボーンの姿勢行列を matrix で上書き。
void mmdpi::set_bone_matrix( const char* bone_name, mmdpiMatrix& matrix ) 指定されたボーンの名と対応するボーンの姿勢行列を matrix で上書き。
mmdpiVmd* mmdpi::get_vmd( int index ) vmd情報の取得。indexはvmdを複数読み込んだうちの読み込んだ順番でvmdを変更できる。
*mmdpi::get_vmd( int index ) += frame frame 分だけモーションフレームを進める
*mmdpi::get_vmd( int index ) = frame 指定されたフレームにジャンプ
mmdpi::get_vmd( int index )->is_end() モーションの終了判定
void mmdpi::set_fps( int fps ) モーション実行時のfps を指定。
void mmdpi::set_projection_matrix( const GLfloat* p_projection_matrix ) プロジェクション行列の指定。
void mmdpi::set_projection_matrix( const mmdpiMatrix_ptr p_projection_matrix ) プロジェクション行列の指定。

コンパイル

cmake . (-Dpi=on ラスパイモード -Dbullet=on Bullet Physics インストール時のみ物理演算可)
make -j N (Nは並列スレッド数)
make install <= お好みで

ここからは開発のあれこれ

動機

RaspberryPi で 3DCG をやってみたい。
RaspberryPi 上で3DCG 関連のことができたらうれしい! <= 手軽に!
やっぱり、可愛らしいモデルを躍らせたい!
3DCG の勉強したい!!
mmdpi_screen.png
上みたいなことしたい

問題発生

ラズベリーパイは OpenGL ES 2.0 にしか対応してないらしい。。
=> 頂点シェーダで頂点テクスチャ使えないらしい!
各シェーダ共通でアクセスできるメモリがない。
頂点と関連するボーンの情報をどうしよう。。。
(OpenGL でMMD 表示したという記事でよく見るのは頂点テクスチャ上にボーンの情報を置いて各頂点シェーダから共通でアクセスするらしいのに・・・)
モデルをバラバラにして(細かい部分に分けて)頂点シェーダで使う GPU キャッシュに収めればいけるかも。。

完成

何とかそれっぽい動きをしているのでいいのかな・・・?

6
4
0

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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?