|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
|
指ボーン入りモデル |
|
|
目玉ボーンをよけて、指だけ動かせます? |
|
|
こういう表形式で編集したい |
|
Mikotoは下半身の動きだけをまとめてコピーしたり、ボーン角度をまとめて数値入力したりすることができません。 Shiftキーとかで複数ボーンを選択とか設定とかの、ごく基本的な操作もできません。 ボーンをひとつひとつクリックして、そのボーンに対してのみ、位置と角度を設定することになります。 爪楊枝一本だけでイクラ丼を食べるくらい面倒。アンドゥもないですし。
その欠点を補うため、EXCELを用いてモーションを編集できるようにしました。
テキストエディターのマクロを用いてEXCELに持って行ける形式にして、コピペ編集して書き戻す、 とゆーだけのもので、複数のツールをまたぐ必要があります。 本当は「mkmを直接読み込んで直接編集して直接書き出せる」ツールを作る方が良いのですが そーいうモノはないので、ノウハウだけの公開となります。
|
|
Date: 2006/10/19/03:04:09
No.132
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
|
手だけの動きを準備する |
|
|
mkmテキスト |
|
|
テキスト変換 |
|
■概要 mkm(Mikotoモーションファイル)を、テキストエディターのマクロを用いて変換し、EXCELに貼り付けて編集できるようにする。 編集後、EXCELからテキストエディターに貼り付け、再変換マクロを用いてmkmフォーマットに戻す。
■メリット 「手首から先」「上半身だけ」といった、部分的なポーズのコピーを容易に行うことができる。 手の表情(グーとかパーとか)を、別ファイルのmkmであらかじめ作成しておいて、体全体のモーションを施したmkmにコピペで反映 表計算ソフトを使うことで、一括で位置をオフセット移動させたり、一定範囲内のフレームだけポーズを差し替えたりすることができる。
■操作手順概略 1.簡略ボーンセットで全身の動きを作成する 2.指ボーンセットで「指の動きだけ」を作成する 3.Mikotoの「コントロール群補完」機能を使って、ボーンセットの差異を吸収する 4.mkmをEmEditorマクロで変換する 5.EXCELに貼り付け、モーションをコピペ編集する 6.EXCELからEmEditorに貼り付けして、マクロで再変換する
■補足とか制限とか ・EXCELの列数制限(最大255)により、キーフレームは最大29個までしか認識できません。 (ヘッダーで20列、キー1つあたり8列を使用する) ・ダブルクォーテーションを■に変換しているので、EXCEL上での見栄えが悪いです。
|
|
Date: 2006/10/19/03:28:24
No.133
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
|
先に指なし版キャラで動かす |
|
|
指ボーンあり版との差分をコントロール補間で吸収 |
|
<手順1.Mikoto既存mkm(全身モーション版)> 1-1.簡略版のボーンセットで、全身モーション設定を作成し、mkmを出力する。 このmkmには、指の動きは当然含まれていない。
<手順2.Mikoto既存mkm(指だけモーション版)> 2-1.指ボーン仕込み版のキャラモデルをMikotoに読み込み、指の動きのみを作成する。 グー、チョキ、パー、指さし、色っぽい手等。両手とも同じポーズを作っておくこと。 ポーズコピー→貼り付け→姿勢反転を行うか、ボーン毎に姿勢鏡面化を行う。
<手順3.指ボーンとかを認識させるためのMikoto操作> 3-1.指仕込み版のキャラモデルをMikotoに読み込む 3-2.上記Aのmkmファイル(=簡略ボーンによる全身モーション)を読み込む 3-3.任意のモーションを選択して右クリックし、「コントロール群補完」を行う。 これにより、指とかのボーン部分も認識される。 ※指部分はキーが打たれていない。後で手動で入れる。 3-4.コントロール群補完済みのmkmを出力する。
|
|
Date: 2006/10/19/03:40:41
No.134
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
|
指の動き部分だけを選択する |
|
|
全身モーションの手の部分に上書き |
|
<手順4.テキスト文字列変換> 4-1.コントロール群補完済みのmkmファイルを、テキストエディターで開く。 4-2.mkm文字列を変換する。詳細は後述。 4-4.指ポーズ仕込み版mkmファイルも、同様に変換する。
<手順5.Excel操作> 5-1.指ボーン補完済みmkmテキストを全選択し、EXCELシートに貼り付ける。 このとき、貼り付け範囲を色替えしておくと、後で再選択しやすくなる。 5-2.指ポーズmkmテキストを全選択し、別のEXCELシートに貼り付ける。 コレを1に貼り付けていくことになる。 5-3.ボーンの動き方向はキーフレームごとにまとまっているので、上記2から 任意のボーンの固まりをまとめて選択し、上記1のシートの指のキーフレーム箇所に貼り付ける。
<手順6.テキスト文字列 再変換> 6-1.修正したEXCEL上のモーション文字列を、すべて選択してコピーし、テキストエディター貼り付ける。 6-2.再変換を実行し、正しいmkmフォーマットに戻す。 6-3.任意の名前をつけてmkmファイルを保存し、Mikotoに読み込む。
|
|
Date: 2006/10/19/03:48:57
No.135
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
文字列変換は、下記のパターンを用いました。単なるJavaScript型のマクロです。
●読み込み前編集 document.selection.Replace("\x22","■",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); ダブルクオーテーションを■に変換(後々の処理の誤変換をなくすため) document.selection.Replace("(","(\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\n","",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace(")","\\t)",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); 括弧をTabで区切ったり、改行コードを全部消したり document.selection.Replace("Bone","Coordinate",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\tQuaternion","\\n\\tQuaternion",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\tString","\\n\\tString",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("Motion {","\\nMotion {",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); QuaternionとかMotionとかの単語のある部分の頭に改行を入れたり document.selection.Replace(" ","\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\tVector","\\n\\tVector",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Find("Vector",eeFindNext | eeFindReplaceEscSeq); document.selection.EndOfLine(true,eeLineView); document.selection.Replace(")","\\t)",eeFindNext | eeFindReplaceEscSeq | eeReplaceSelOnly | eeReplaceAll); Vector文字列を検索して、行のおしりまで選択して、その行の括弧にTabをくっつけたりして整形
●EXCEL編集後の再変換 document.selection.Replace("■\\t\\t","■\\n\\t\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("{","{\\n",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t)",")\\n",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t)",")",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t(\\t"," (",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); { を { +改行に変換したり、括弧の後ろに改行をつけたりして整形 document.selection.Replace("Mikoto\\tMotion\\tVer\\t2","Mikoto Motion Ver 2",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("Motion\\t{","\nMotion {",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t}}Eof","\\n\\t}\\n}\\nEof",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\tendframe","\\n\\tendframe",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\tloop","\\n\\tloop",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t}}","\\t}\\n}",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t\\t\\t","",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t"," ",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\n ","\\n\\t\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\n ","\\n\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\n\\n","\\n",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); 適当に文字列の見た目を直す document.selection.Replace("■ }","■\\n\\t}",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("■","\x22",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); 最後に■をダブルクオーテーションに変換
|
|
Date: 2006/10/19/03:57:03
No.136
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
|
うんと縮小すればただの模様 |
|
EXCELで表示倍率を10%くらいにすると、モーションデータもただの模様に見えるようになります。 モーションライブラリー(?)には適当に色をつけておくと、割と視認性も良いです。
モーション名(グーとかチョキとか)をデカ字フォントのテキストボックスに記述して、 縮小表示中にもモーション名が分かるようにしています。
この画像の例では、グーとかチョキとかの静止ポーズを貼り付けているだけですが、 一連の動きを記録した複数のキーフレームをまとめて貼り付けるのも出来ています。 キーフレーム位置の辻褄はそれなりに合わせないとならないですが。
なお、PCはMikotoとEXCELは別々の画面に表示すると、EXCEL上のキーフレーム数値とMikoto上の実際のキーフレーム位置を 比較しながら作業できるので、作業効率がちょこっと上昇します。
個人的な経験則では、デュアルディスプレイより、安物のPC本体を2セットの方が使いやすいです。 片方が重い処理中でも、別な作業ができるので。
|
|
Date: 2006/10/27/09:09:16
No.137
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
|
124キーまで編集できるよう改良 |
|
|
使い回しポーズは画像付きに |
|
コミケ直前とゆーかクリスマスあたりに、MikotoモーションファイルのExcel変換マクロを改良しました。
10月半ばに導入して以降、ボーン角度数値のオフセット編集とかは全然使わなかったので、 数値部分を単なる文字列と割り切り、その分多くのキーフレームを編集できるようにしたモノ。
EXCELの列数制限が最大255なのはあいかわらづですが、ヘッダー20列→7列、キー1つあたり8列→2列に圧縮したことで 最大キーフレーム数を29個→124個にしました。
あとグーチョキパーは使用頻度がすごく高いので、キャプ画面を貼り付けて、ポーズを判断しやすくしています。
|
|
Date: 2007/01/07/04:39:38
No.138
|
|
まつい
|
区分: 説明
打たれ強さ: 強
論拠・確実性: 経験則
|
|
改良版EXCEL化マクロは下記の通り。
■mkm→Excel //ダブルクオーテーションを■に置き換え document.selection.Replace("\x22","■",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //改行削除、余計なTab削除 document.selection.Replace("■\\n","■",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t\\t","\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace(" (","\\t(",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //改行削除 document.selection.Replace(")\\n",")",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("{\\n","{",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //Mikoto 0.4fのデータを0.4c2用に変換 document.selection.Replace("Bone","Coordinate",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
■EXCEL→mkm再変換 //最初に余計なTabとか空行を削除 document.selection.Replace("\\t\\t","",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t\\n","\\n",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //改行を戻し、見栄えを修正 document.selection.Replace(")",")\\n\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //見栄え修正 document.selection.Replace("Quaternion {\\tname","Quaternion {\\t\\tname",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("Vector {\\tname","Vector {\\t\\tname",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("String {\\tname","String {\\t\\tname",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t("," (",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("{","{\\n",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\tendframe","\\n\\tendframe",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\n\\n","\\n",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //改行+Tab修正 document.selection.Replace("■\\t","■\\n\\t\\t",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); document.selection.Replace("\\t\\t}","\\t}",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //EOFを最後に持ってくる(2006/12/28 matsui add) document.selection.Replace("}EOF","]\\nEOF",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll); //ダブルクオーテーションを戻す document.selection.Replace("■","\x22",eeFindNext | eeFindReplaceEscSeq | eeReplaceAll);
|
|
Date: 2007/01/07/04:42:50
No.139
|
|