・TODO
Cameraの平行移動、コントロールとして扱うべきか?

readmeを詳しく、docを書く

パッケージをconenekoと統合

mqoiterator, subsetnameは別ファイル?
texture knowledge source, vertex knowledge source, motion matrix knowledge source

モーションがなくてもskeletonの操作ができるように

Boneは構造体の方が使いやすい?

スキンメッシュの法線の計算、重いので無理?

toDot

tonanami.exe 出力先ファイルの指定

mqoの予期せぬチャンクをスキップするように

スクリーンショット用に、viewerでlibpngをリンクして連番pngの出力
メモリリーク?
全フレームを書き出さなくてもいい?
savePngでメモリリークが発生している可能性がある
libpng, libzipをリンクすると異常に重くなる、別モジュールにするしかないか

mqoの新しいトークンへの対応

リソースは..\resourceへ

ボーン数制限、今のところ34

読み込む頂点のサイズが最大リリース範囲を超えた場合にリリースを繰り返す問題

rename pngreadwrite.cpp pngwriter.cpp




・使い方
mqo又はmqo, mkmファイルをtonanami.exeにドロップすると拡張子773のファイルを作ります。
データの定義が合わない場合には作成に失敗する場合もあります。

作った773ファイルをviewer.exeにドロップすると見れます。

古いビデオカードでは動きません。
ビデオカードのドライバがglslに対応していなくても動きません。
ビデオカードはdirectx9世代ぐらいのもので、ここ一年ぐらいのドライバなら動くと思います。

テクスチャのサイズは2^n


・subset
subset[y][x]:
0 <= x, 1 <= y
オブジェクト名の最初にsubset[y][x]:を加えることでデータの一部をsubsetとして利用できます。
一つのsubsetには一つのテクスチャのみを設定できます。
y = 0はデフォルトで自動的に生成されるので使えません。
y = 1は表示、非表示の切り替えが可能なものを設定します。
y >= 2はモーフアイテムとして利用します。

例えば、"subset[1][0]:服0", "subset[1][1]:服1"というオブジェクトを作ると、
服0、服1の表示を制御できるようになります。

"subset[2][0]:口", "subset[2][9]:口"というオブジェクトを作ると、
subset[2][1]からsubset[2][8]までは補完され、subset[2]をモーフアイテムとして利用できます。

一つのオブジェクトで使えるテクスチャは一つだけなので注意。
オブジェクトでテクスチャを使わない場合は、そのオブジェクトに複数のマテリアルを使えます。


・スクリーンショット
試験的に、viewerで's'を押すと連番pngをscreenshotディレクトリに書き出します。
ただし重い。


・頂点数、ボーン数
リアルタイムで動かすことが前提なので、できるだけ少なく
