﻿= MMM Graph Editor について =

== コンセプト ==

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

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

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

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

このプラグインはMMMをクラッシュさせる可能性があります（後述）。注意して使ってください。

キーフレームの移動と回転をグラフでプロットし、編集することができます。
グラフはポイントを掴んで直接編集することができます。ただし、回転の編集は一応できるようにはなっていますが、問題が多く、使わないほうがいいです。こは多分（一部のバグを除き）どうしようもありません。

== インストール ==

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

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

== 読み方、使い方 ==

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

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

- MMMが落ちることがあったら、多分、このプラグインのせいです。特に、編集中に別のファイルを開くと起きます。もしかしたら解決できるかもしれませんが、このプラグインはMMMのプラグイン仕様上非推奨な内部仕様になっているため、どうしようもないのかも。
- グラフエディタ側からマーカー位置を動かすと、タイムライン表示がおかしくなります(マーカーと実際のキーフレームの表示がずれます)。タイムラインを少しでもスクロールすると正常にもどります。
- グラフの右側に変な(スクロールできない)縦スクロールバーが出た際は、一度ホイールを回して拡大率を変えてみて下さい。現状ウィンドウリサイズで縮小した場合などにこうなります。
- グラフ上での操作は、現在のところ一切 Undo できません。多分 MMM 本体の Undo バッファに入らないからですが、多分方法はありません。
- グラフ上でキーフレームを編集した場合、マーカが編集対象のキーフレーム上にある場合 *のみ* 実際のモーション表示に即時反映されます。マーカがキーフレームとずれている場合は、一度でもマーカを移動すると反映されます。カレントモーションをリセットする方法がわからないため対応できずにいます。
- MMD は回転をクオータニオンで管理しており、オイラー角へ一意に変換できません。
-- そのためとりあえず軸の回転順の選択肢が3つ用意してあります。全ての場合で、２番目の軸は±90度に制限されます。
-- この変換されたオイラー角は全く直感的で無いかもしれませんが、とりあえず回転が滑らかかどうかを判断する事はできます。逆に言えば、その程度しか役に立ちません。
-- 回転編集は、ローカル座標で行われますが、
- 回転編集の開始時に、まれに初期値がおかしくなるバグがあります。そしてUndoできません！
- 現状 Y 軸の単位はありません。移動、回転でそれぞれ相対値で見て下さい。移動と回転でスケールは違います。
- 出来る範囲で対策はしていますが、重いです。これは外部プラグインで無理矢理実現しているためどうしようもないです。具体的には画面更新ごとに、表示される全キーをスキャンして再プロットしています。

== ライセンス ==

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

== 作者 ==

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