3Dプログラミング勉強会をやりました
( Hatsune Miku / Crypton Future Media inc. / CC BY-NC )
週末、3Dプログラミングに興味のある自称初心者が7人集まって勉強会をした。皆適当にピザ食べたりして語らないながら各自作業を進めて、終わって琉球料理食べて成果報告とか最近のプログラミング界隈の話とかをした。MikuMikuDanceをブラウザで動かす奴を作ろうと思って、MMDのモデルデータの歴史・仕様を調べ、PMD形式とその後継のPMX形式があること、PMDは仕様の詳細が公にされていないがPMXはPMX仕様.txtに少し書いてあること、PMXファイルはバイナリデータであること、ブラウザでバイナリデータを読み込むにはArrayBufferやDataViewが使えることなどを勉強した。PMXのデータ構造をBNFで記述してそれを元にコードを自動生成しようとしたのだけど、規則が色々複雑で、結局BNFを完成させたあと自前で再帰下降型PMXパーサを実装した。
勉強会ではバイナリデータのPMXをツリー構造のデータに変換するPMXパーサまでを完成させて、three.jsを利用して頂点データを3D空間上に配置して描画するコードをさっき家で実装した。ここまでのコードをGitHubに上げているので、改良して初音氏を踊らせてPull Requestを頂ければこちらでも喜びの舞を踊らさせて頂きます。
r7kamura/mmd.js · GitHub
https://github.com/r7kamura/mmd.js