﻿= MMM Graph Editor について =

== コンセプト ==

多くの 3D ソフトウェアには、グラフエディタと呼ばれる、移動量や回転量を時系列グラフに表示し、それを直接編集できる機能があります。これは一見初心者向けではないのは確かなのですが、3Dモデルの動作が多少複雑になってくると、どのように動いてるのかを把握するためにとても便利なツールです。

と言うわけで、MMM (or MMD) にも何とかしてグラフエディタ欲しい！　と思って実装してみた物がこれになります。

MMM Graph Editor はボーンの移動と回転の絶対値をグラフにして表示し、編集できるものを目指しています。少なくとも現時点ではモーフやプロパティなど、ボーン以外の変化を扱う予定はありません。

== 現在のステータス ==

PoC(概念実証)コードとして、グラフの最低限のところが実装されています。
最小の UI をもち、移動と回転のプロットができますが、編集機能は全くありません。
まだバグも多く、頻繁にクラッシュする可能性があります。

== インストール ==

ダウンロード: http://sourceforge.jp/users/hmml/pf/mmm_graph_editor/files/

1. ダウンロードした zip ファイルから DLL を取り出し、 MMM の Plugins フォルダに入れて下さい
2. MMM を起動し、編集を始めたらプラグインのボタンから 「Graph Editor」を有効にする
3. プラグインタブをドックして同時に表示しておくと便利です

== 読み方、使い方 ==

- 濃い色でマーカーが■のものが移動グラフ (Global座標)
- 薄い色でマーカーが●のものが回転グラフ (Global座標) グレーのラインで半回転です。下側のグレーのラインに達すると、上から出てきます。逆もおなじ。
- グラフ上で右ドラッグすると移動
- グラフ上でホイールを回すと拡大縮小
- グラフ上をマウスでポイントして、黄色い丸でハイライトされるものは左ドラッグで動かせます。即時反映。（現在UNDO不能）
- フレーム番号のルーラー上でクリックするとそのフレームに移動
- 左の操作ボタン
-- C をおすと、現在のマーカー位置にジャンプします
-- + - ボタンで拡大縮小
-- それぞれの回転と移動のボタンでグラフの表示/非表示を切り替えられます
-- 下の方にラジオボタンは、回転軸の決定順を示しています。グラフが変な時は切り替えてみて下さい。児童は多分役に立たないので選ばない方がいいです
- グラフ上で有効なショートカットキー
-- 左右矢印: 他と同じくマーカーを１つずつ移動します。
-- Enter: 現在のマーカー位置にキーフレームを打ちます（現在UNDO不能）
-- C: 現在のマーカー位置にジャンプ
- 現状 Y 軸の単位はありません。移動、回転でそれぞれ相対値で見て下さい。移動と回転でスケールは違います。

== 制限事項・既知の問題 ==

- グラフエディタ側からマーカー位置を動かすと、タイムライン表示がおかしくなります(マーカーと実際のキーフレームの表示がずれます)。タイムラインを少しでもスクロールすると正常にもどります。
- グラフの右側に変な(スクロールできない)縦スクロールバーが出た際は、一度ホイールを回して拡大率を変えてみて下さい。現状ウィンドウリサイズで縮小した場合などにこうなります。
- グラフ上での操作は、現在のところ一切 Undo できません。多分 MMM 本体の Undo バッファに入らないからですが、どうしたらいいか不明。
- グラフ上でキーフレームを編集した場合、マーカが編集対象のキーフレーム上にある場合 *のみ* 実際のモーション表示に即時反映されます。マーカがキーフレームとずれている場合は、一度でもマーカを移動すると反映されます。カレントモーションをリセットする方法がわからないため対応できずにいます。
- MMD は回転をクオータニオンで管理しており、オイラー角へ一意に変換できません。
-- そのためとりあえず軸の回転順の選択肢が3つ用意してあります。全ての場合で、２番目の軸は±90度に制限されます。
-- この変換されたオイラー角は全く直感的で無いかもしれませんが、とりあえず回転が滑らかかどうかを判断する事はできます。逆に言えば、その程度しか役に立ちません。

== ライセンス ==

Apache License 2.0 ( http://sourceforge.jp/projects/opensource/wiki/licenses/Apache_License_2.0 )

== 作者 ==

@gull08 on Twitter ( https://twitter.com/gull08 )
