
　VMD twist motion separator (VMDTMS)  V1.21i10 
　learningposePMX  V1.21a5 
　　セット版 

    　　　　　　               Copyright(c) F.Issiki 2015, 2026 

　　本 ReadMe に記載している内容の要点を、ニコニコ静画
　　　http://seiga.nicovideo.jp/comic/16699
　に上げていますので、併せてご参照ください。
  
  -- 
  
　　Miku Miku Dance (MMD) で踊るモデルの手腕の動きを、表示の破綻が
　少なくなる様に、自動変換するツールです。VMD ファイルを変換します。
　
　　
　　「腕」「ひじ」「手首」に含まれる捩れの動きを、「腕捩」「手捩」へ
　配分し、腕全体のテクスチャがスムーズにつながる様に変換します。
　(これにより各関節近くの表示が綺麗になります。 )
　　
  　V1.15 以降は、「腕」⇔「腕捩」⇔「ひじ」⇔「手捩」⇔「手首」 で
　連動し、 全腕補正ができます。腕全体 (「腕」「腕捩」「ひじ」「手捩」
　「手首」ボーン) の動きが、人間の関節の自然な曲がり方に合う様に、
　全体的に再調整されます。
　　従来 (V1.05～1.20) の使い方も、オプションで再現できます。
　
　　VMDTMS では、Windows 上の通常操作以外に、コマンドライン操作 (スク
　リプト処理) も可能になっているため、本 ReadMe では、その (設定・操
　作の) 共通点を説明しています。
　　Windows 上の通常操作のみで使われる方は、先に、ニコニコ静画の閲覧
　をお奨めします。
　　　http://seiga.nicovideo.jp/comic/16699


【 使用法 (簡単な) 】

　　変換したい VMD ファイルを、本ツール VmdTms.exe ファイルへドロップ
　して起動します。
　（VmdTms.exe をダブルクリックして、起動後に VMD ファイルを選択して
　　もＯＫです。）
　　
　　すると、ファイル名に「-cnv」と追加された、変換済ファイルが生成され
　ます。
　　

【 カスタマイズ (学習) 方法 】

　　本ツールは、未学習の状態では、腕角度が「あにまさ式初音ミクVer.2」 
　と同じと仮定して変換を行います。(Ａポーズ) 
　　学習を行わないと、変換後に腕角度がズレる症状が発生します。
　　より正確に変換したい場合や、Ｔポーズモデルなど、腕角度が大きく異
　なるモデル用にモーション変換する場合は、学習が必須です。
　
　（１）追加ツール learningposePMX を使用する場合
　
　　モデルの PMX ファイルが手元にある場合は、PMX ファイルを 
  learningposePMX.exe 上へドラッグ＆ドロップすると、それだけで学習が
　完了します。（学習成功メッセージのダイアログが表示されます）

　
　（２）本セット標準添付の learningposeVMD を使用する場合
　　　　
　　PMX 以外のモデル(.PMD/.X 等)を使用する場合は、V1.05～1.10 と同様、
　従来の方法(以下)で学習します。

　　使用したいモデル (.PMD/.X) の腕角度が記録された VMD ファイルを
　MMD で作り、learningposeVMD.exe へ読み込ませることで、希望のモデル
　に合わせて変換できるようになります。
　
　　以下、手順です。

　(2-1) MMD 上へ、対応させたい .PMD/.X モデルを読み込ませます。
　
　(2-2) MMD 上で、左右の手の捩りボーン(「左腕捩」「左手捩」「右腕捩」
　　　「右手捩」の４つ) を、各 45°程ずつ捩って、それぞれ「登録」
　　　でキーフレーム登録します。

　(2-3) 上記の、４つの登録されたキーフレーム点が選択された (赤色の◆で
　　　表示された) 状態 (または全選択) で、MMD のメニューから、
　　　
　　　　ファイル(F)　＞　モーションデータ保存(L) 
　　　
　　　を行い、適当な名前をつけて VMD ファイルへ保存します。
　
　(2-4) 保存された VMD ファイルをフォルダ内でつかんで、
　　　「 learningposeVMD.exe 」へドラッグ＆ドロップしてください。


　(１)(２)どちらの場合も、正常に学習できた時は、
　　「 モデル　～　の状態を学習しました. 」
　と、学習に成功したことが表示されます。
　　学習結果は、「 vmdsetup.ini 」へ保存され、自動参照されるように
　なります。
　
　　VMD を用いる場合は、ボーンの捩り角度が少なすぎたり、または４つ
　のボーンすべてが正しく記録されていない VMD がドロップされた場合、
　　「 学習に失敗しました. 」
　と表示されますので、その際は、(2-1)～(2-4) を再度試してみてくだ
　さい。
　　捩りボーンの捩り角度は 45°丁度でなくとも、10～90°の範囲内で
　あれば、通常は問題なく学習可能です。



【 捩り変換モード／分配比の指定 (上級) 】

　　例えば、自動捩り分散ボーン(「腕捩戻」など)を持つモデルでは、
　モデル側へ捩りを任せるため、本ツールの捩り分離の機能を OFF し
　たい場合があります。また、一部モデルで、捩り分離を使うと片腕のみ
　が不具合が起きるモデルもあります。
　　そういったモデルへ対応するため、「左腕」「左ひじ」「右腕」「右
　ひじ」各ボーンの捩り分離は、個別に ON/OFF できます。
　(-LA -LH -RA -RH オプション)(V1.10-)

　　また、モデルによっては、「腕捩」を使える場合でも、関節部が捩りに
　弱い場合もあります。(装備や布との干渉、太さ) 
　　そういったモデルへ対応するため、例えば、「左腕」の捩れ成分の内、
　６割だけを「左腕捩」へ移し、残り４割を元の「左腕」に残しておく、
　といった分配比(分離比)の調節ができます。
　(-kLA -kLH -kRA -kRH オプション)(V1.10-)

    例１) > vmdtms -LA2 -kLA0.60  (filename).vmd 
    
    例２) > vmdtms -LA2 -LH2 -RA2 -RH2 
                   -kLA0.6 -kLH0.7 -kRA0.8 -kRH0.9 (filename).vmd 
  
    例３) > vmdtms -LA1 -LH1 -RA1 -RH1  (filename).vmd 

  ここで、
     
　・「 -LA 」 左腕変換モード (0～3) 
　・「 -LH 」 左手変換モード (0～3) 
　・「 -RA 」 右腕変換モード (0～3) 
　・「 -RH 」 右手変換モード (0～3) 
　・「 -kLA 」 左腕捩り分離比 (0.001～1.0) 
　・「 -kLH 」 左手捩り分離比 (0.001～1.0) 
　・「 -kRA 」 右腕捩り分離比 (0.001～1.0) 
　・「 -kRH 」 右手捩り分離比 (0.001～1.0) 

  なお、
   ・モード=0: 無変換 
   ・モード=1: 統合(ミキシング)のみ  (分離比=0に似た状態) 
   ・モード=2: 指定の捩り分離比で分配  (分離比=0.0～1.0), 
   ・モード=3: 捩り分離比=1.0(固定) (V1.04～1.08互換) 
　
  例１）では、「左腕」の捩れ成分のうち、６割だけを「左腕捩」へ移し、
　残り４割を元の「左腕」に残します。
　この時、他の「左手」「右腕」「右手」は、デフォルト設定 (モード=2,
  分離比=1.0) となります。
　 (-LH2 -RA2 -RH2 -kLH1.0 -kRA1.0 -kRH1.0 と同じ). 
  
　「モード=2」でも 分配比=1.0 であれば、V1.04～1.08 と同じ動作になります。
  
  例２）では、
　「左腕」　の捩れ成分の６割を「左腕捩」へ移す (２割が「左腕」に残る)、
　「左ひじ」の捩れ成分の７割を「左手捩」へ移す (３割が「左ひじ」に残る)、
　「右腕」　の捩れ成分の８割を「右腕捩」へ移す (４割が「左腕」に残る)、
　「右ひじ」の捩れ成分の９割を「右手捩」へ移す (５割が「右ひじ」に残る)、
  となります。
  
  例３）では全て、「モード=1:統合(ミキシング)のみ」となり、
  VmdTms.exe は VmdMix.exe と同じ動作をします。 
  
　　-LA0 のように「モード=0」を指定すると、そのボーンについては、
　VMDTMS は一切変更を行いません。(無変換)
　　これを応用して、「左腕」「左手」「右腕」「右手」一つずつを、
　捩り分離／統合したりする、といった使い方もできます。   
　


【 手首～ひじ間の捩り緩和(相殺)機能の使用および
　 　　　　　　　捩り分配比の指定 (V1.11alpha2 より) 】

　　左手首・右手首ボーンに、捩り成分が含まれる場合には、その軸捩り
　成分を分離して、左手捩・右手捩と相殺できるよう、V1.11alpha2 から
　機能追加されました。

　・-WTE オプションが指定され、-LH のモードが 2 以上(2 or 3) に
　　なっている場合、「左手首」の軸捩り成分は自動で、左手捩へ吸収／
　　相殺されます。
  
　・-WTE オプションが指定され、-RH のモードが 2 以上(2 or 3) に
　　なっている場合、「右手首」の軸捩り成分は自動で、右手捩へ吸収／
　　相殺されます。
  
    例１) > vmdtms -WTE -LH2 -RH2  (filename).vmd 
　
  ここで、
　
　　・「 -WTE 」 手首-ひじ間 (Wrist-to-Elbow) 補正=ON  
　  
　この時、捩り分配比も指定することができます。(標準時 1.0(100%))
　
    例２) > vmdtms -WTE -LH2 -kLW0.85  (filename).vmd 
　
    例３) > vmdtms -WTE -LH2 -RH2 -kLW0.85 -kRW0.90  (filename).vmd 
　
  ここで、
　
　　・「 -kLW 」 左手首捩り分離比 (0.001～1.0) 
　　・「 -kRW 」 右手首捩り分離比 (0.001～1.0) 
　
　これらのオプションは "modsetup.ini" 中で有効化されていて、
  この手首補正機能は、標準で ON になっています。



【 ひじの自然補正機能 (V1.14alpha1より) 】

　　ひじから先(前腕:肘～手首)の方向・手のひらの向きを反映して、
　最もひじが自然な曲がり方になるよう、腕～ひじ～手捩りまで連動して
　補正できるようになりました。
　　この機能を ON にすると、腕捩り（左腕捩・右腕捩）は、ひじの曲が
　り方が正しく(自然に)なるよう、計算によって、新たに再設定されます。
　　前述の、手首～ひじ間の捩り緩和(相殺)機能(WTE)と併用することで、
　全腕補正となります。
　
　・-ATE オプションが指定され、-LA のモードが 2 以上(2 or 3) に
　　なっている場合、左腕～左ひじ～左手捩までを連動して補正します。
  
　・-ATE オプションが指定され、-RA のモードが 2 以上(2 or 3) に
　　なっている場合、右腕～右ひじ～右手捩までを連動して補正します。
  
    例１) > vmdtms -ATE -LA2 -RA2  (filename).vmd 
　
  ここで、
　
　　・「 -ATE 」  腕-ひじ間(Arm-to-Elbow)補正=ON  
　  
　この補正では、捩り分配比指定はなく、分配比＝1.0 に固定されていま
　す。（それ以外では姿勢が破綻するため）
　
　このオプションは "modsetup.ini" 中で有効化されていて、この
  ひじ補正機能は、標準で ON になっています。



【 ひじの関節軸角度の指定 (V1.15より) 】

　　より人間に近いひじ関節の動きを再現するために、全腕補正使用時に、
　ひじ関節軸の角度を、Ｙ軸(Ｔポーズ標準)から何度ずらすかを、
　オプション -EHA により指定できるようになりました。
　
    例１) > vmdtms -ATE -LA2 -RA2 -EHA14.0 (filename).vmd 
　
  ここで、
　
　　・「 -EHA 」 ひじ関節折曲げ軸角度(Elbow Hinge-joint Axis angle)  
　
　　3D人体モデルの慣例によって、多くのモデルでは(ＡポーズでもＴポー
　ズでも)、Ｙ軸(垂直軸:0度)がひじ関節の折曲げ軸となるようモデリング
　されていることが多いですが、
　　より実際の人間のひじの形に近いモデリングをしているモデルの場合、
　ひじ関節折曲げ軸を15度付近 (通常 12～16 度) に設定すると、人間の
　肘に近い動き方になります。
　　この仕組みを使うと、特に、手を真上へ上げるポーズや、手で頭の後
　ろを掻くポーズ等で、「腕」ボーンへかかる負担が減らせます。
　　
　　このオプションは "angsetup.ini" 中で設定されますが、互換性優先
　のために標準で 0度になっています。(「-EHA0」) 



【 長袖用変換機能 (V1.16alpha1より) 】

　　人間の腕は、長袖の服の中では空回りします。服の袖自体は、あまり
　捩れなくなります。これをモーション上で再現する機能が、「長袖(用)
　変換」です。
　　Sleeve type 1 (-SLV1) と type 2 (-SLV2) があります。
　　Sleeve type 1 では、どの程度の割合で、服の中で空回りするか、と
　いう割合を、-kSLV オプションで調節できます。
　　Sleeve type 2 では、腕全体の捩れ量が常に最小に抑えられ、その
　捩り全量を手捩り／腕捩りへ配分する比率を -kSLV で調節できます。
　　この機能は、全腕補正が動く条件 (-ATE -WTE) で機能します。

　　例１）> vmdtms -SLV -ATE -WTE 
                   -LA2 -RA2 -LH2 -RH2 (ファイル名).vmd 
　　例２）> vmdtms -SLV2 -ATE -WTE 
                   -LA2 -RA2 -LH2 -RH2 (ファイル名).vmd 
　　例３）> vmdtms -SLV1 -kSLV=0.70 -ATE -WTE 
                   -LA2 -RA2 -LH2 -RH2 (ファイル名).vmd 
 
　これらでは、

　・「 -SLV  」長袖変換モード(タイプ:標準) 
　・「 -SLV1 」長袖変換モード(タイプ１指定)  
　・「 -SLV2 」長袖変換モード(タイプ２指定)  
　・「 -kSLV 」空回りの割合(0.001-1.0)(タイプ１の場合)
　             手捩り／腕捩り配分比(0.001-1.0)(タイプ２の場合)

　の意味です。
  
  例１）は、標準の長袖服変換タイプで変換します。
  例２）は、長袖服変換タイプ＝２を選ぶことを明示します。
　　　　（タイプ＝１：袖内で腕が空回りする率を指定）
　　　　（タイプ＝２：最小腕捩を、手捩と腕捩で配分）
　例３）は、長袖の中で、人間の腕が 70% 空回りするよう変換します。
　　　　(V1.15 以前の通常の腕捩りが 30% 残ります。)  
  
　-kSLV を指定しない場合は、-kSLV=1.0 (すなわち100%) と扱われ
　ます。
  -kSLV は、モデル(腕の太さ・体格)によって、0.3～0.8 (比率)で調整
  するのがおすすめです。
  
　この -SLV のオプションは V1.17 版以降のリリースでは、標準では 
　"modsetup.ini" 中で 無効化されています。長袖変換する場合は、 
　"modsetup.ini" の -SLV オプション前の「//」(行末迄無効化) の部
　分を消して、有効化してください。



【 変換エラー箇所の表示機能 (V1.17より) 】

　　V1.17 より、-CHK オプション指定が追加されました。このオプショ
　ンを指定すると、変換中、腕の動きに異常がある可能性があると判断
　された場合は、変換後に、異常の発生理由とフレーム(時間)を、ダイ
　アログで表示します。
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。

　　例）> vmdtms -CHK -ATE -WTE (ファイル名).vmd 
 
　ここでは、

　・「 -CHK  」レポート表示機能ON  

　の意味です。

 　 -ND2 (非表示レベル２)以上のオプションと同時に指定した場合、表
　示はスキップされます。
  
　このオプションは "modsetup.ini" 中で有効化されていて、標準で ON 
　になっています。



【 ニューラルネット姿勢推定機能 (V1.18alphaより) 】

　　V1.18 より、姿勢推定に小型 Neural Net (いわゆるAI) を搭載しま
　した。-NN オプションを指定すると、AI によるポーズ推定(姿勢推定)
　が働きます。特に、スタート直後のポーズ(姿勢)推定精度が、典型的
　に１桁上がります。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例）> vmdtms -NN -AI -ATE -WTE (ファイル名).vmd 
　
　ここでは、
　
　・「 -NN  」ニューラルネット姿勢推定ON  
　
　の意味です。
　
　　このオプションは "modsetup.ini" 中で有効化されていて、標準で 
　ON になっています。



【 通常処理終了後の捩りボーン再統合機能 (V1.18alpha2より) 】

　　V1.18alpha2 より、-RMX オプション (-RMXLA, -RMXLH, -RMXRA, 
　-RMXRH) によって、通常変換の終了後に、再度捩りボーン(腕捩・手捩)
　を再統合できる機能が加わりました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例）> vmdtms -RMXLA -LA2 -kLA=0.8 (ファイル名).vmd 
　
　ここでは、
　
　・「 -RMXLA  」左腕捩の通常変換終了後再統合ON  
　・「 -RMXLH  」左手捩の通常変換終了後再統合ON  
　・「 -RMXRA  」右腕捩の通常変換終了後再統合ON  
　・「 -RMXRH  」右手捩の通常変換終了後再統合ON  
　
　の意味です。
　
　　このオプションは "modsetup.ini" 中で無効化されていて、標準で 
　OFF になっています。



【 グルーブ・センター統合機能 (V1.20eより) 】

　　V1.20e より、-MXGTC オプションによって、グルーブボーンの動き
　をセンターボーンへ統合できる機能が加わりました。
　　またその際、-EAP オプション併用によって、XYZ 移動を含むボー
　ン統合時の許容位置誤差を調節できます。
　　V1.20f23e 以降では、-GRVDH オプション併用によって、
　グルーブ／センター間の位置差をより正確に補正できるようになり
　ました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例1）> vmdtms -MXGTC=1  (ファイル名).vmd 
　　例2）> vmdtms -MXGTC=1 -EAP0.02 -GRVDH=0.20  (ファイル名).vmd 
　
　ここでは、
　
　・「 -MXGTC=1 」グルーブモーションのセンター統合ON  
　・「 -GRVDH=(高さ差) 」 グルーブ／センター間の高さ差 (MMD長さ) 
　・「 -EAP(位置誤差値) 」ボーン統合時の許容位置誤差指定
　
　の意味です。
　
　　-GRVDH の単位は MMD 長です(通常1/13.5メートル)。
　PMX モデルでは、記録されたボーン座標の高さ差そのものですが、
　VRM モデル等では、モデル内に記録された長さの 13.5 倍にする必要
　があります。 
　　-GRVDH の標準値は V1.2023e までは 0.20 でしたが、
　V1.20f24 以降は 0.0 となりました。オプション省略時は 0.0 となり
　ます。
　　
　　-MXGTC オプションと -MXGTM オプションを同時に指定すると、
　グルーブとセンターを一度統合し、その後 XYZ 移動の Y 成分だけを
　グルーブへ再振分けする処理が、他のグルーブ／センターの処理に
　先立って行われます。(V1.20f24a 以降、V1.21d 改善) 
　　シンプルにこの機能のみを有効にしたい場合は、-MXGTC=0 -MXGTM=0
　を指定してみてください。
　
　　オプション -MXGTC と -EAP は "modsetup.ini" 中で無効化されて
　いて、標準では指定 OFF になっています。



【 全ての親・センター統合機能 (V1.20f21より,V1.20f23拡張) 】

　　V1.20f21 より、-MXMTC オプションによって、全ての親ボーンの動き
　をセンターボーンへ統合できる機能が加わりました。
　　またその際、-EAP オプション併用によって、XYZ 移動を含むボー
　ン統合時の許容位置誤差を調節できます。
　　V1.20f23c から、「全ての親」の全方向の回転に対応しました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例1）> vmdtms -MXMTC=1 -EAP=0.02 (ファイル名).vmd 
　
    例2) > vmdtms -MXMTC=1 -EAP=0.02 -CENTERH=8.2 
                  -nameLAK='左腕ＩＫ' -nameRAK='右腕ＩＫ' 
                  -nameLLK='左足ＩＫ' -nameRLK='右足ＩＫ'
                  -nameLLKP='左足IK親' -nameRLKP='右足IK親' 
                  (filename).vmd 
  
　ここでは、
　
　・「 -MXMTC=1 」全ての親モーションのセンター統合ON  
　・「 -CENTERH=8.2 」センター高さの指定 (MMD長さ単位) 
　・「 -EAP=(位置誤差値) 」ボーン統合時の許容位置誤差指定
　・「 -nameLAK='(名前)' 」 左腕IKモーションのボーン名変更  
　・「 -nameRAK='(名前)' 」 右腕IKモーションのボーン名変更  
　・「 -nameLLK='(名前)' 」 左足IKモーションのボーン名変更  
　・「 -nameRLK='(名前)' 」 右足IKモーションのボーン名変更  
　・「 -nameLLKP='(名前)' 」 左足IK親モーションのボーン名変更  
　・「 -nameRLKP='(名前)' 」 右足IK親モーションのボーン名変更  
　
　の意味です。
　標準では、
　   -CENTERH=8.403, 
　   -EAP=0.06, 
     -nameLAK='左腕ＩＫ', 
     -nameRAK='右腕ＩＫ', 
     -nameLLK='左足ＩＫ', 
     -nameRLK='右足ＩＫ', 
     -nameLLKP='左足IK親', 
     -nameRLKP='右足IK親', 
　へセットされています。  
　　非標準のＩＫボーン名を使用している場合は、オプションを有効
　にし、変更してください。
　
　　オプション -MXMTC と -EAP は "modsetup.ini" 中で無効化されて
　いて、標準では指定 OFF になっています。

　(参考) -CENTERH の指定を省いた場合、VMD Retarget では、学習した
　変換先モデル情報 trgpose.ini から読み込まれた「センター」ボーン
　の位置へセットされます。



【 肩P／親指０(ゼロ) 統合機能 (V1.20fより) 】

　　V1.20f より、-MXSP オプションによって、肩Pボーンの動きを、肩
　および腕へ分配して統合できる機能が加わりました。
　　また、-MXTZ オプションにより、親指０ボーンの動きを、親指１へ
　加算して統合できる機能が加わりました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例）> vmdtms -MXSP=1 -MXTZ=0.8  (ファイル名).vmd 
　
　ここでは、
　
　・「 -MXSP=1 」肩Pボーンの肩＋腕への配分統合ON  
　・「 -MXTZ=0.8 」親指０ボーンの回転角の80%を親指１へ加算統合ON 
　
　の意味です。

　　-MXSP=0.7 の様に指定した場合(70%統合)、V1.20f18 以降は、残り
　の 30% は肩Pボーンに残るようにしました。
　　-MXTZ=0.8 の様に指定した場合(80%統合)、V1.20f18 以降は、残り
　の 20% は親指０ボーンに残るようにしました。
　
　　オプション -MXSP と -MXTZ は "modsetup.ini" 中で無効化されて
　いて、標準では指定 OFF になっています。(Unity向けセットを除く)



【 首／上半身2/3 統合機能 (V1.20f16より、V1.20f23e、V1.21c拡張) 】

　　V1.20f6 より、-MXNEK オプションによって、首ボーンの動きを、頭
　へ統合できる機能が加わりました。
　　また、-MXUB2 オプションにより、上半身2 ボーンの動きを、上半身
　へ統合できる機能が加わりました。
　　V1.21c より、-MXUB3 オプションにより、上半身3 ボーンの動きを、
　上半身2 へ統合できる機能が加わりました。-MXUB3 と -MXUB2 を両方
　指定することで、上半身3 も 上半身2 も 上半身 へ統合することが
　可能です。 
　　MXNEK本機能は、主に、VRM 1.0 以降の形式で、neck または chest 
　ボーンが必須でなくなった (neck chest が存在しないモデルが認め
　られる) ことへ、VMD 変換でも対応できるようにしたものです。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例1）> vmdtms -MXNEK=1 -MXUB2=1  (ファイル名).vmd 
　　例2）> vmdtms -MXNEK=1 -NECKDH=0.807  (ファイル名).vmd 
　　例3）> vmdtms -MXUB2=1 -UBDH=1.09  (ファイル名).vmd 
　　例4）> vmdtms -MXUB3=1 -MXUB2=1  (ファイル名).vmd 
　
　ここでは、
　
　・「 -MXNEK=1 」首ボーンモーションを頭ボーンへ統合ON  
　・「 -MXUB2=1 」上半身2ボーンモーションを上半身ボーンへ統合ON 
　・「 -MXUB3=1 」上半身3ボーンモーションを上半身2ボーンへ統合ON 
　・「 -NECKDH=0.807 」頭／首ボーンの高さ差 (MMD 長さ) 
　・「 -UBDH=1.09 」上半身2／上半身ボーンの高さ差 (MMD 長さ) 
　
　の意味です。
　
　　-NECKDH の標準値は V1.2023e までは 0.807 でしたが、
　V1.20f24 以降は 0.0 となりました。オプション省略時は 0.0 となり
　ます。
　　-UBDH の標準値は V1.2023e までは 1.09 でしたが、
　V1.20f24 以降は 0.0 となりました。オプション省略時は 0.0 となり
　ます。
　　
　　オプション -MXNEK と -MXUB2 は "modsetup.ini" 中で無効化されて
　いて、標準では指定 OFF になっています。
　　オプション -MXUB3 は VRM 用セット中の "modsetup.ini" では有効化
　されていますが、汎用 MMD (PMX) 用セット中の "modsetup.ini" では
　標準で無効化 (指定 OFF) されています。
　　これらのオプションは、小数値によるミキシング量の調節はなく、
　=0 か =1、つまり ON と OFF の２通りのみの選択となります。 



【 足IK親／足ＩＫ 統合機能 (V1.20f23bより) 】

　　V1.20f23b より、-MXLIKP オプションによって、足IK親ボーンの動き
　を、足ＩＫへ統合できる機能が加わりました。
　　本機能は、足IK親ボーンを持たないモデルで、足IK親の動きを足ＩＫ
　へ反映するために使えます。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例1）> vmdtms -MXLIKP=1 -HEELH=1.62  (ファイル名).vmd 
　　例2）> vmdtms -MXLIKP (ファイル名).vmd 
　
　ここでは、
　
　・「 -MXLIKP=1 」足IK親ボーンモーションを足ＩＫボーンへ統合ON  
　・「 -HEELH=1.62 」かかと高さを 1.62 として補正する  
　・「 -MXLIKP 」→ -MXLIKP=1 と同じ  
　
　の意味です。
　
　　かかと高さ (HEELH) は、足IK親／足ＩＫボーン位置(高さ)の差を
　補正するために使われます。
　　HEELH の標準値(デフォルト)は 1.624 (Tda式ミクさんモデルの場合
　のかかと高さ)で、単位は MMD 内の長さです。MMD 内の長さは、多く
　の場合、実長(メートル単位)の 13.5 倍付近になっています。
　　VRM モデル(メートル単位で記録されてるものが多い)を用いる場合
　は、VRM モデルに記録されているのかかと高さの 13.5 倍にして指定
　する必要があります (VMDTMSの場合)。
　　
　　HEELH オプションを指定した場合、他のモデル情報の値よりも優先
　して、このオプション指定値を用います。
　　かかと高さ分の自動補正を行いたくない場合は、-HEELH=0 を指定する
　ことができます。
　
　　オプション -MXLIKP は "modsetup.ini" 中で無効化されていて、標準
　では指定 OFF になっています。(Unity向けセットを除く)
　　この -MXLIKP オプションは、小数値によるミキシング量の調節はなく、
  =0/=1 どちらか、つまり ON と OFF の２通りのみの選択となります。 



【 下半身／センター 統合機能 (V1.20f25より) 】

　　V1.20f25 より、-MXLBTC オプションによって、下半身ボーンの動きを
　センターへ統合できる機能が加わりました。
　　V1.21d より、-MXPLBTC オプションによって、下半身ボーンの動きの
　うち、Y(水平)回転とXYZ移動のみをセンターへ統合できる機能が加わり
　ました。
　　本機能は、VRM モデルなど下半身ボーンを持たないモデルで、下半身
　の動きをセンターへ反映するために使えます。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例1）> VmdTms -MXLBTC=1 -EAP0.02 
                  -LBCTRDH=4.75 -LBCTRDZ=-0.51  (ファイル名).vmd 
　
　　例2）> VmdTms -MXPLBTC=1 -EAP0.02 
                  -LBCTRDH=4.75 -LBCTRDZ=-0.51  (ファイル名).vmd 
　
　ここでは、
　
　・「 -MXLBTC=1 」下半身ボーンをセンターボーンへ統合ON  
　・「 -MXPLBTC=1 」下半身ボーンの動きのうちY(水平)回転とXYZ移動のみ
                     をセンターボーンへ統合ON  
　・「 -LBCTRDH=4.75 」 下半身とセンターの高さ差を 4.75 として補正  
　・「 -LBCTRDZ=-0.51 」下半身とセンターの前後差を 4.75 として補正  
　・「 -EAP=(位置誤差値) 」ボーン統合時の許容位置誤差指定
　
　の意味です。
　
　　下半身とセンターの高さ差 (LBCTRDH) や前後差 (LBCTRDZ) は、
　下半身／センターボーンの位置の差を補正するために使われます。
　　LBCTRDZ オプションの指定がない場合は、平均的な特性を持つ Tda 
　式ミクさんの値 (-0.51) がデフォルト値となります。
　　LBCTRDH オプションの指定がない場合は、デフォルト値はゼロとな
　ります。
　　
　　LBCTRDH、LBCTRDZ オプションを指定した場合、他のモデル情報の値よ
　りも優先して、このオプション指定値を用います。
　　位置差の分の自動補正を行いたくない場合は、LBCTRDH=0、LBCTRDZ=0 
　を指定することができます。
　
　　オプション -MXLBTC、-MXPLBTC、-LBCTRDH、-LBCTRDZ は "modsetup.ini" 
　中で無効化されていて、標準では指定 OFF になっています。
　(Unity向けセットを除く)
　　この -MXLBTC/-MXPLBTC オプションは、小数値によるミキシング量の
　調節はなく、=0/=1 どちらか、つまり ON と OFF の２通りのみの選択と
　なります。



【 下半身／センター統合の打消し変換(逆変換)機能 (V1.21f21より) 】

　　V1.20f21 より、-REVLBTC オプションによって、-MXLBTC により下半身
　／センター統合されたボーンの動きを、再度下半身へ分離できる機能が
　加わりました。
　　本機能は、-MXLBTC によってモデル／環境依存性のある状態へ変換さ
　れたモーションを、より互換性の高いモーションへ変換する準備として、
　-MXLBTC による統合処理前に近い状態へ戻すために使えます。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　　この機能が働くためには、「下半身」ボーンが空いている (未使用で
  ある・実効的なキーが存在してない) ことが必要になります。また、
　腰・グルーブ (の回転) が使われてないことが正確な変換の要件になり
　ます。
　　もし、下半身ボーンがすでに使われている (キーが存在している) 場
　合や、腰・グルーブの回転が使用されてる場合は、-MXLBTC、-MXWTC、
　-MXGTC を用いて事前に統合し、空の状態にしてください。
　
　　例1）> VmdTms -REVLBTC -LBCTRDH=4.75 -LBCTRDZ=-0.51 
                                                (ファイル名).vmd 
　
　　例2）> VmdTms -REVLBTC=1 -EAP0.02 
                  -LBCTRDH=4.75 -LBCTRDZ=-0.51  (ファイル名).vmd 
　
　ここでは、
　
　・「 -REVLBTC=1 」-MXLBTC の逆変換機能のON  
　・「 -REVLBTC 」   -REVLBTC=1 と同じ
　・「 -LBCTRDH=4.75 」 下半身とセンターの高さ差を 4.75 として補正  
　・「 -LBCTRDZ=-0.51 」下半身とセンターの前後差を -0.51 として補正  
　・「 -EAP=(位置誤差値) 」ボーン統合時の許容位置誤差指定
　
　の意味です。
　
　　下半身とセンターの高さ差 (LBCTRDH) や前後差 (LBCTRDZ) は、
　下半身／センターボーンの位置の差を補正するために使われます。
　　LBCTRDZ オプションの指定がない場合は、平均的な特性を持つ Tda 
　式ミクさんの値 (-0.51) がデフォルト値となります。
　　LBCTRDH オプションの指定がない場合は、デフォルト値はゼロとな
　ります。
　　
　　LBCTRDH、LBCTRDZ オプションを指定した場合、他のモデル情報の値よ
　りも優先して、このオプション指定値を用います。
　
　　オプション -REVLBTC、-LBCTRDH、-LBCTRDZ は "modsetup.ini" 中で
　無効化されていて、標準では指定 OFF になっています。
　(Unity向けセットを除く)
　　この -REVLBTC オプションは、小数値によるミキシング量の調節はな
　く、=0/=1 どちらか、つまり ON と OFF の２通りのみの選択となります。



【 腰／センター 統合機能 (V1.20f26より) 】

　　V1.20f26 より、-MXWSTC オプションによって、腰ボーンの動きを
　センターへ統合できる機能が加わりました。
　　本機能は、VRM モデルなど腰ボーンを持たないモデルで、腰の動きを
　センターへ反映するために使えます。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例）> VmdTms -MXWSTC=1 -EAP0.02 
                 -WAISTDH=3.92 -WAISTDZ=0.26   (ファイル名).vmd 
　
　ここでは、
　
　・「 -MXWSTC=1 」腰ボーンをセンターボーンへ統合ON  
　・「 -WAISTDH=3.92 」 腰とセンターの高さ差を 3.92 として補正  
　・「 -WAISTDZ=0.26 」 腰とセンターの前後差を 0.26 として補正  
　・「 -EAP=(位置誤差値) 」ボーン統合時の許容位置誤差指定
　
　の意味です。
　
　　腰とセンターの高さ差 (WAISTDH) や前後差 (WAISTDZ) は、
　腰／センターボーンの位置の差を補正するために使われます。
　　WAISTDZ オプションの指定がない場合は、平均的な特性を持つ Tda 
　式ミクさんの値 (+0.26) がデフォルト値となります。
　　WAISTDH オプションの指定がない場合は、デフォルト値はゼロとな
　ります。
　　
　　WAISTDH、WAISTDZ オプションを指定した場合、他のモデル情報の値よ
　りも優先して、このオプション指定値を用います。
　　位置差の分の自動補正を行いたくない場合は、WAISTDH=0、WAISTDZ=0 
　を指定することができます。
　
　　オプション -MXWSTC、-WAISTDH、-WAISTDZ は "modsetup.ini" 中で無
　効化されていて、標準では指定 OFF になっています。
　(Unity向けセットを除く)
　　この -MXWSTC オプションは、小数値によるミキシング量の調節はなく、
　=0/=1 どちらか、つまり ON と OFF の２通りのみの選択となります。



【 ＩＫ強制 OFF 機能 (V1.20f25より) 】

　　V1.20f25 より、-IKFZL、-IKFZLP、-IKFZT オプションによって、足ＩＫ
　を強制的に OFF できる機能が加わりました。
　　FK 焼込みがされているモーションで、IK を無視して、FK によりモデル
　を踊らせたい場合に使えます。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
　
　　例）> VmdTms -IKFZL=1 -IKFZLP=1 -IKFZT=1  (ファイル名).vmd 
　
　ここでは、
　
　・「 -IKFZL=1 」      足ＩＫを強制 OFF 
　・「 -IKFZLP=1 」     足IK親を強制 OFF 
　・「 -IKFZT=1 」      つま先ＩＫを強制 OFF 
　
　の意味です。
　
　　コマンドラインから、=1 に代えて =0 とし、例えば -IKFZL=0 と指定
　した場合は、modsetup.ini の設定を上書きして本機能をキャンセルでき
　ます。
　　オプション -IKFZL は "modsetup.ini" 中で無効化されていて、標準で
　は指定 OFF になっています。(Unity向けセットを除く)



【 足ＩＫの足間隔補正 機能 (V1.21f20より) 】

　　V1.21f20 より、-CLIKLW、-LEGDW、-LEGDWR オプションによって、
　足ＩＫの間隔を補正できる機能が加わりました。

　　-CLIKLW オプションは、左足ＩＫと右足ＩＫの間隔の補正機能を ON 
　して、その補正方法を指定値によって選択するオプションです。

  　-LEGDW オプションは、単純に、変換後のモーションで、足間隔を
　任意に広げたい時に、広げ量を指定するオプションです。
　
  　-LEGDWR オプションは、正しい元モデルか変換先モデルが入手できな
　い場合に、実際のモデルの足間隔の差の代わりに、-LEGDWR の指定値を
　強制的に使うことを指定するオプションです。
　　モデルの足間隔は、モデルの左足と右足の付け根 (腰) のボーン節点
　の間隔が基準となります。-LEGDWR には、その２つのモデルの差の値を
　セットします。  
　　通常、VmdRetarget では、-LEGDWR の値は自動的にセットされます。
　VMDTMS では、-LEGDWR の値を手動でセットすることで、VmdRetarget と
　同様の変換をすることができます。  
  
　　これらのオプションは、modsetup.ini 中またはコマンドラインで指定
　できます。
　
    例1) > VmdTms -CLIKLW=1  (ファイル名).vmd 

    例2) > VmdTms -CLIKLW=1 -LEGDW=2.4  (ファイル名).vmd 

    例3) > VmdTms -CLIKLW=-1 -LEGDW=2.4  (ファイル名).vmd 
  
    例4) > VmdTms -CLIKLW=1 -LEGDWR=1.58 -LEGDW=2.4 
                                              (ファイル名).vmd 

  ここでは、 
　
　・「 -CLIKLW=1 」     足ＩＫの足間隔補正を ON (水平方向)
　・「 -CLIKLW=-1 」    足ＩＫの足間隔補正を ON (水平・垂直方向共) 
　・「 -LEGDW=2.4 」    足間隔の自由追加補正量 (単位はMMD長さ)
　・「 -LEGDWR=1.58 」  モデル足間隔の補正量 (強制指定) 
　　　　　　　　　　　　　　　　　　　　　　　(単位はMMD長さ)
　の意味です。
　
　　もし、-LEGDW に 2.4 の代わりに -2.4 (負値) が指定された場合、
　足ＩＫ間隔を広げるのではなく、狭める方向へ補正されます。
　　また、-CLIKLW=2 のように「２」を指定した場合、補正は、足ＩＫ
　のキーのタイミングだけでなく、「左足」「右足」の付け根が体の姿
　勢の動きによって変化した場合、その動きも時間的に細かく反映して
　補正します。(足ＩＫキーの間隔がまばらなモーションで、補正がより
　正確になります) 
　　なお、足ＩＫの代わりに 足IK親 が主に使われてるモーションでは、
　足ＩＫの代わりに、足IK親 に対して補正がかかります。
　　オプション -CLIKLW は "modsetup.ini" 中で有効化されていて、
　標準で ON となっています。
　　オプション -LEGDW は "modsetup.ini" 中で無効化されていて、
　標準では指定 OFF になっています。



【 出力ファイル名固定機能 (V1.21e4より) 】

　　V1.21e4 より、-FNFIX オプションによって、出力ファイル名を強制的
　に固定できる機能が加わりました。
　　-FNFIX 指定時は、出力ファイル名を指定した名前にでき、保存フォル
　ダが VmdTms.exe と同じフォルダ内へ固定されます。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
  
　　例）> VmdTms -FNFIX=tmp1  (filename).vmd 
  
　ここでは、
　
　・「 -FNFIX=tmp1 」      ファイル名を [tmp1.vmd] へ固定し、
　　　　　　　　　　　　　保存場所を VmdTms.exe と同じフォルダ内
　　　　　　　　　　　　　にする 
　の意味です。

　　指定するファイル名には、拡張子 (.vmd) は不要です。
  （省いてください。）
　　ファイル名に使える文字は、いずれも半角で、英文字 ('A'-'Z' と 
　'a'-'z')、数字 ('0'-'9')、アンダーバー ('_')、ハイフン ('-') (但し
　ハイフンは冒頭を除く)、に限られます。
　(それ以外の文字は禁止／無効)
　
　　この機能は、コマンドスクリプト (.bat／.cmd) 用の機能です。
  
　　オプション -FNFIX は "modsetup.ini" 中で無効化されていて、標準で
　は指定 OFF になっています。



【 360 度腕が捩れて戻る可能性がある場合に、
　　腕捩・手捩保持モードで自動再変換する機能　(V1.21e4より) 】

　　V1.21e4 より、-RETRY360 オプションによって、360 度腕が捩れて戻
　る可能性があるモーションの場合に、自動的に全腕補正を OFF して、
　腕捩・手捩保持モードで再変換できる機能が加わりました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
  
　　例）> VmdTms -ATE -WTE -NN -RETRY360  (filename).vmd 
  
　ここでは、
　
　・「 -RETRY360 」      360 度腕が捩れる動きが検出された場合、
　　　　　　　　　　　　腕捩・手捩保持モードで自動再変換する
　　　　　　　　　　　　
　の意味です。

　　腕が 360 度捩れる動きが検出された場合、-ATE/-WTE/-NN オプショ
　ンを OFF して、腕の変換を自動再スタートします。この際、腕と腕捩、
　ひじと手捩の間のみの捩り統合／分離のみが行われ、各部各々の捩り
　量は、元のモーションと同じになるよう保持して変換されます。 
  
　　本来、腕が 360 度捩れる動きがある場合は、人間にはできない動き
　となっている可能性が高いため、MMD で手修正・確認が必要ですが、
　そういった修正をする時間がない場合、またはカメラに映らない場合
　に、修正をスキップして、可能な範囲でベストな状態で次の作業へ進
　む場合に使用します。
  
　　-RETRY360 オプションは、全自動処理用のセットでは標準で有効化
　されていますが、マニュアル処理用のセットでは標準で無効化されて
　います。("modsetup.ini" ファイルをご確認ください) 



【 姿勢推定のリセット機能 (V1.21e6より) 】

　　V1.21e6 より、-RESET (-RESETL, -RESETR) オプションによって、
　踊りの途中でも、指定したフレームタイミングで、腕 (左腕・右腕) 
　の姿勢追従をリセットし、Neural Net で推定した姿勢へ再設定 (リ
　セット) できる機能が加わりました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
  
　　例1）> VmdTms -ATE -WTE -NN -RESET=2100  (filename).vmd 

　　例2) > VmdTms -ATE -WTE -NN -RESETL=1300
                                -RESETR=1700,2500  (filename).vmd 
  
　　例3) > VmdTms -ATE -WTE -NN 
                       -RESET=3041,6852,8937  (filename).vmd 

　ここでは、
　
　・「 -RESET=2100 」    両腕の姿勢推定を、2100 フレームで
　　　　　　　　　　　　リセットする 
　・「 -RESETL=1300 -RESETR=1700,2500 」
　　　　　　　　　　    左腕の姿勢推定を 1300 フレームで
　　　　　　　　　　　　リセット、 
　　　　　　　　　　    右腕の姿勢推定を 1700 と 2500 フレーム
　　　　　　　　　　　　でリセットする。
　・「 -RESET=3041,6852,8937 」
　　　　　　　　　　    両腕の姿勢推定を 3041 と 6852 と 8937 
　　　　　　　　　　　　フレームでリセットする。

　の意味です。

　　これらの指定は、複数シーンのモーションを１つの VMD ファイル
　へ収めている様なモーションで、シーン切替で腕のポーズが急に変
　わるような場合に使うことができます。その際 '=' の後ろに指定す
　るフレーム番号は、新しいシーンの開始 (スタート) フレームの番
　号を指定してください。

　　「 -RESET=0 」(先頭フレーム) の指定は、不要です。
　　VMD ファイルの先頭は、常に自動的に姿勢推定がリセットされる
　ようになってます。

　　-RESET オプションは、「腕が 360 度捩れて戻って」いる途中で、
　異常(不自然)な腕捩りをリセットするために使うこともできます。
　この場合は、腕捩りをリセットしたいタイミングでフレーム番号を
　指定してください。
　
　　オプション -RESET (-RESETL/-RESETR) は、通常 "modsetup.ini" 
　中では指定されていません。



【 姿勢推定の自動リセット機能 (V1.21g6より) 】

　　V1.21g6 より、-AUTORESET オプションによって、360 度腕捩れが
　検出された際に、いち早く AI (Neural Net) がポーズ異常を検出した
　時点で、自動で姿勢追従をリセットし、AI で推定した姿勢へ再設定 
　できる機能が加わりました。
　
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
  
　　例1）> VmdTms -AUTORESET  (filename).vmd 

　　例2) > VmdTms -AUTORESET=1 -ATE -WTE -NN  (filename).vmd 
  
　　例3) > VmdTms -AUTORESET=0  (filename).vmd 

　ここでは、
　
　・「 -AUTORESET 」     360度腕捩れ検出時に、AIが推定した正しい
　　　　　　　　　　　　姿勢へ自動再設定(リセット)する 
　　　　　　　　　　　　(-AUTORESET は -AUTORESET=1 と同じ)  
　・「 -AUTORESET=1 」   360度腕捩れ検出時に、AIが推定した正しい
　　　　　　　　　　　　姿勢へ自動再設定(リセット)する (=ON) 
　・「 -AUTORESET=0 」   360度腕捩れ検出時の姿勢追従リセットを
　　　　　　　　　　    行わない (=OFF) 

　の意味です。

　　-AUTORESET=0 は、手動での確認や、MMD を使った手動編集／修正
　をしたい時、異常のあった 360 度腕捩れの箇所を、よりはっきりと
　見えるようにしたい場合に使えます。
　
　　-AUTORESET オプションは、標準(デフォルト)で ON となっていて、
　"modsetup.ini" 内やコマンドラインで指定されてない場合でも、
　通常 ON となっています。



【 ボーン名／モーフ名リストの生成機能  (V1.21g7より) 】

　　V1.21g7 より、-LIST オプションによって、VMD ファイル中に記録さ
　れてるボーンやモーフの名前のリストを生成できる機能が加わりまし
　た。
　　このオプションは、modsetup.ini 中またはコマンドラインで指定で
　きます。
  
　　例）> VmdTms -LIST  (filename).vmd 
  
　ここでは、
　
　・「 -LIST 」      全ボーンとモーフのリストを生成する 
　
　の意味です。
　　リストファイルには、全てのボーン／モーフの名前と、その16進数
　コードが一覧化されます。例えば、
     -- 
     bone 1 (    1 keys): 操作中心    %91%80%8D%EC%92%86%90%53
     bone 2 (    2 keys): 全ての親    %91%53%82%C4%82%CC%90%65
     bone 3 (   67 keys): 腰          %8D%98
     bone 4 (  395 keys): 上半身      %8F%E3%94%BC%90%67
     -- 
     morph 1 (   7 keys): まばたき    %82%DC%82%CE%82%BD%82%AB
     morph 2 (  12 keys): 笑い        %8F%CE%82%A2
     morph 3 (   4 keys): ウィンク    %83%45%83%42%83%93%83%4E
     -- 
  といったファイルとなります。
　　これらは、マクロスクリプト(macro.ini)処理通過後のボーン名／
　モーフ名のリストである点にご注意ください。すなわち、このリスト
　は、正しく処理できてない (未処理の) ボーンやモーフをチェックす
　る用途でも使えます。
　　16進数コードは、マクロスクリプト(macro.ini)中で、日本語環境で
　は入力できないコードの文字のボーン名やモーフ名を指定する際にも
　使えます。 
　　-LIST オプションは、"modsetup.ini" では無効化されていて、標準
　では指定 OFF になっています。



【 マクロスクリプト機能   (V1.20f8より、1.21f4、V1.21f6、V1.21f7、
                   V1.21f10、V1.21f12、V1.21f15、V1.21g、V1.21g4、
                   V1.21g5、V1.21g7、V1.21i、V1.21i5、V1.21i8拡張) 】

　　V1.20f8 より、テキストファイルを読み込んで、記述されたコマンドを
　順に実行する、マクロスクリプト機能が追加されました。
  
　　"macro.ini" というファイルが、VmdTms.exe と同じフォルダ内に 
  存在すると、VMD ファイル変換ごとに自動実行されます。    
  
　　"macro.ini" 内では、以下のコマンドが使えます。
      
      b"(ボーン名)"+= <x y z>  --- 一連のボーンを指定量平行移動する
      
      b"(ボーン名)"+= (X 角度値)  --- 一連のボーンを指定量X回転する
      b"(ボーン名)"+= (Y 角度値)  --- 一連のボーンを指定量Y回転する
      b"(ボーン名)"+= (Z 角度値)  --- 一連のボーンを指定量Z回転する
                                        (角度値の単位は°度 (deg))
                                        (方向+/-は MMD と同じ)
      b"(統合先ボーン名)" = b"(親ボーン名)" + b"(子ボーン名)" 
                                --- ２種類の一連のボーンを統合(ミキ
                                    シング)して、統合先ボーンへ格納
                                    する            (new V1.21f12) 
      b"(ボーン名)".x *= 値   --- ボーンのX移動量に指定値を乗算する 
      b"(ボーン名)".y *= 値   --- ボーンのY移動量に指定値を乗算する 
      b"(ボーン名)".z *= 値   --- ボーンのZ移動量に指定値を乗算する 
      b"(ボーン名)".xz *= 値  --- ボーンのXZ移動量に同時に指定値を 
                                     乗算する 
      b"(ボーン名)".xyz *= 値 --- ボーンのXYZ移動量に同時に指定値を 
                                     乗算する 
      b"(ボーン名)".rot *= 値 --- ボーンの回転角に指定値を乗算する 
      b"(ボーン名)".x += 値   --- ボーンのX移動量に指定値を加算する 
      b"(ボーン名)".y += 値   --- ボーンのY移動量に指定値を加算する 
      b"(ボーン名)".z += 値   --- ボーンのZ移動量に指定値を加算する 
                                                      (new V1.21g) 
      
      m"(統合先モーフ名)" = m"(モーフ名1)" + m"(モーフ名2)" 
                                --- ２種類のモーフを加算(ミキシング)
                                    して、統合先モーフへ格納する
                                                     (new V1.21g4) 
      m"(モーフ名)"+= 値   --- 一連のモーフ値に、指定値を加算する
      
      m"(モーフ名)"-= 値   --- 一連のモーフ値から、指定値を減算する
      
      m"(モーフ名)"*= 値   --- 一連のモーフ値に、指定値を乗算する
      
      m"(モーフ名)"/= 値   --- 一連のモーフ値を、指定値で除算する
      
      m"(モーフ名)"~= 値   --- 一連のモーフ値の上限を、指定値で
　　　　　　　　　　　　　　　 リミットする。指定値を超えるモーフ値
　　　　　　　　　　　　　　　 は、指定値へリセットされる。
                               
      m"(モーフ名)"_= 値   --- 一連のモーフ値の下限を、指定値で
　　　　　　　　　　　　　　　 リミットする。指定値を下回るモーフ値
　　　　　　　　　　　　　　　 は、指定値へリセットされる。
      
      cam += <x y z>        --- 一連のカメラ位置を指定量平行移動する
                               
      cam += (X 角度値)     --- 一連のカメラ角度Xに指定値を加算する 
      cam += (Y 角度値)     --- 一連のカメラ角度Yに指定値を加算する 
      cam += (Z 角度値)     --- 一連のカメラ角度Zに指定値を加算する 
      
      cam *= 値            --- 一連のカメラ位置XYZおよびカメラ距離に 
　　　　　　　　　　　　　 　　 指定値を乗算する 
                                  ( cam.pos *= (値)  と同じ) 
                                                  (new in V1.20f10) 
      cam.x *= 値          --- 一連のカメラ位置Xに指定値を乗算する 
      cam.y *= 値          --- 一連のカメラ位置Yに指定値を乗算する 
      cam.z *= 値          --- 一連のカメラ位置Zに指定値を乗算する 
      cam.xz *= 値         --- 一連のカメラ位置XZに指定値を乗算する 
      cam.xyz *= 値        --- 一連のカメラ位置XYZに指定値を乗算する 
      cam.dist *= 値       --- 一連のカメラ距離に指定値を乗算する 
      cam.va *= 値         --- 一連のカメラ視野角に指定値を乗算する 
      cam.rx *= 値         --- 一連のカメラX回転角に指定値を乗算する 
      cam.ry *= 値         --- 一連のカメラY回転角に指定値を乗算する 
      cam.rz *= 値         --- 一連のカメラZ回転角に指定値を乗算する 
      cam.x += 値          --- 一連のカメラ位置Xに指定値を加算する 
      cam.y += 値          --- 一連のカメラ位置Yに指定値を加算する 
      cam.z += 値          --- 一連のカメラ位置Zに指定値を加算する 
      cam.dist += 値       --- 一連のカメラ距離に指定値を加算する 
      cam.va += 値         --- 一連のカメラ視野角に指定値を加算する 
      cam.rx += 値         --- 一連のカメラX回転角に指定値を加算する 
      cam.ry += 値         --- 一連のカメラY回転角に指定値を加算する 
      cam.rz += 値         --- 一連のカメラZ回転角に指定値を加算する 
                                                      (new V1.21g) 
      
      light += <x y z>      --- 一連のライト位置を指定量平行移動する
      
      light += (X 角度値)   --- 一連のライト位置を指定量X回転する
      light += (Y 角度値)   --- 一連のライト位置を指定量Y回転する
      light += (Z 角度値)   --- 一連のライト位置を指定量Z回転する
                                        (中心は原点(0,0,0))
                                        (角度値の単位は°度 (deg))
                                        (方向+/-は MMD と同じ)
                                                  (new in V1.20f10) 
      light.x *= 値         --- 一連のライト位置Xに指定値を乗算する 
      light.y *= 値         --- 一連のライト位置Yに指定値を乗算する 
      light.z *= 値         --- 一連のライト位置Zに指定値を乗算する 
      light.xz *= 値        --- 一連のライト位置XZに指定値を乗算する 
      light.xyz *= 値       --- 一連のライト位置XYZに指定値を乗算する 
      light.rgb *= 値       --- 一連のライト色RGBに指定値を乗算する 
      light.r *= 値         --- 一連のライト色Rに指定値を乗算する 
      light.g *= 値         --- 一連のライト色Gに指定値を乗算する 
      light.b *= 値         --- 一連のライト色Bに指定値を乗算する 
      light.x += 値         --- 一連のライト位置Xに指定値を加算する 
      light.y += 値         --- 一連のライト位置Yに指定値を加算する 
      light.z += 値         --- 一連のライト位置Zに指定値を加算する 
      light.r += 値         --- 一連のライト色Rに指定値を加算する 
      light.g += 値         --- 一連のライト色Gに指定値を加算する 
      light.b += 値         --- 一連のライト色Bに指定値を加算する 
                                                      (new V1.21g) 
      ALLB.xyz *= 値        --- 全ボーンのXYZ移動量に同時に指定値を
                                     乗算する 
      ALLM *= 値            --- 全モーフ値に、指定値を乗算する
                                                      (new V1.21i) 
      ren b"(元ボーン名)" b"(新ボーン名)" 
　　　　　　　　　　　　   --- 一連のボーンキーを、別名へ変更する
      ren m"(元モーフ名)" m"(新モーフ名)" 
　　　　　　　　　　　　   --- 一連のモーフキーを、別名へ変更する
      
      copy b"(元ボーン名)" b"(コピー先ボーン名)" 
　　　　　　　　　　　　   --- 一連のボーンキーを、別名で複製する
      copy m"(元モーフ名)" m"(コピー先モーフ名)" 
　　　　　　　　　　　　   --- 一連のモーフキーを、別名で複製する
      
      del b"(ボーン名)"    --- 一連のボーンキーを削除する
      
      del allbut b"(ボーン名1)" b"(ボーン名2)" ...  
                           --- 指定ボーン以外の全ボーンキーを削除する
                                                       (new V1.21i8) 
      del ALLB             --- 一連の全ボーンキーを削除する
                                                       (new V1.21f12)       
      del m"(モーフ名)"    --- 一連のモーフキーを削除する 
      
      del allbut m"(モーフ名1)" m"(モーフ名2)" ...  
                           --- 指定モーフ以外の全モーフキーを削除する
                                                       (new V1.21i8) 
      del ALLM             --- 一連の全モーフキーを削除する
                                                       (new V1.21f12)       
      del cam              --- 一連のカメラキーを削除する 
                                                       (new V1.21f10) 
      del light            --- 一連のライトキーを削除する 
                                                       (new V1.21f10) 
      del shadow           --- 一連のセルフ影キーを削除する
                                                       (new V1.21f12)       
      del showik           --- 一連の表示・IK制御キーを削除する
                                                       (new V1.21f12)       
      
      inskey b"(ボーン名)"= <x y z> (qx qy qz qw) [Lx Ly Rx Ry] 
                                                    to (フレーム時間) 
      inskey b"(ボーン名)"= <x y z> (X 角度値) (Y 角度値) (Z 角度値) 
                                 [Lcx Lcy Rcx Rcy]  to (フレーム時間)  

　　　　　　　　　　　　   --- ボーンキーを１点作成する
                               (指定ボーン名、指定値、指定フレーム時間) 
                           
      inskey m"(モーフ名)"=(値) to (フレーム時間) 
　　　　　　　　　　　　   --- モーフキーを１点作成する
                               (指定モーフ名、指定値、指定フレーム時間) 
                           
      extract b"(元ボーン名)".x m"(新モーフ名)" 
      extract b"(元ボーン名)".y m"(新モーフ名)" 
      extract b"(元ボーン名)".z m"(新モーフ名)" 
                            --- ボーンの x/y/z 成分をモーフとして抽出
                                する                  (new V1.21i8) 
      
      option "(オプション指定)"   
                            --- madsetup.ini またはコマンドライン指定 
                                より優先して追加オプション指定する 
                                                       (new V1.21i5) 
                           
      mirrorX b"(ボーン名)" --- 指定ボーンの動きをX軸に対して反転する 
                           
      mirrorX ALLB          --- 全ボーンの動きをX軸に対して反転する 
                           
      mirrorX cam           --- 一連のカメラの動きをX軸に対して反転する 
                                                       (new V1.21f10) 
      mirrorX light         --- 一連のライトの動きをX軸に対して反転する 
                                                       (new V1.21f10) 
      
      timeshift  値         --- 全てのキーを指定フレーム数(値)だけ
                                タイムシフトする 
                                    (ボーン、モーフ、カメラ、ライト、
                                     セルフ影、IK on/off ) 
                                    (値(フレーム数): ＋なら後方へ移動) 
                                    (値(フレーム数): －なら前方へ移動) 
                                                       (new V1.21f10) 
      
      timestretch x 倍率値   --- 全てのキーを時間軸方向に、指定倍率
                                 拡縮する  (倍率= 0.0-100.0) 
                                    (ボーン、モーフ、カメラ、ライト、
                                     セルフ影、IK on/off ) 
                                    (倍率:＞1.0001 なら動きはスロー) 
                                    (倍率:＜0.9999 なら動きは速く) 
                                                       (new V1.21f15) 
      timestretch from __ to __ fitto __ 
                            --- 'from'～'to' 間の全キーが、 
                                'from'～'fitto' の間へ収まるよう 
                                時間軸方向に拡縮する
                                    (ボーン、モーフ、カメラ、ライト、
                                     セルフ影、IK on/off ) 
                                                       (new V1.21f15) 
                                   
      // (コメント)        --- '//' 以降は行末までコメントとして無視
      
      type b"(ボーン名)"   --- ボーンのフレームキー情報を表示する 
      
      type ALLB            --- 全ボーンのフレームキー情報を表示する 
                           
      type m"(モーフ名)"   --- モーフのフレームキー情報を表示する 
                           
      type ALLM            --- 全モーフのフレームキー情報を表示する 
      
      setmodelname "(モデル名)" 
                           --- VMD 中に記録される元モデル名を変更する
                                                       (new V1.21f16) 
                           
    
      if (条件):        --- 後続のコマンドは、(条件) 成立時にのみ実行
                              する
      ifnot (条件):     --- 後続のコマンドは、(条件) 成立しない時に
                              のみ実行する
      -- 
        if    VMDFILENAME="(vmdファイル名)": 
        ifnot VMDFILENAME="(vmdファイル名)": 
            -- 変換中の .vmd ファイル名が指定ファイル名(拡張子なし) 
               に一致する(しない)時は、後続のコマンドを実行
        if    VMDMODELNAME="(vmd記録モデル名)": 
        ifnot VMDMODELNAME="(vmd記録モデル名)": 
            -- 変換中の .vmd ファイルに記録されてるVMD作成モデル名
               に一致する(しない)時は、後続のコマンドを実行
        if    SRCMODELNAME="(src学習モデル名)": 
        ifnot SRCMODELNAME="(src学習モデル名)": 
            -- Sourceとして学習したモデル内のモデル名
               に一致する(しない)時は、後続のコマンドを実行
        if    TRGMODELNAME="(trg学習モデル名)": 
        ifnot TRGMODELNAME="(trg学習モデル名)": 
            -- Targetとして学習したモデル内のモデル名
               に一致する(しない)時は、後続のコマンドを実行
        if    SRCMODELTYPE="PMX": 
        if    SRCMODELTYPE="VRM": 
        if    SRCMODELTYPE="VMD": 
        ifnot SRCMODELTYPE="PMX": 
        ifnot SRCMODELTYPE="VRM": 
        ifnot SRCMODELTYPE="VMD": 
            -- Sourceとして学習したモデルのファイル形式(PMX/VRM/VMD)
               に一致する(しない)時は、後続のコマンドを実行
        if    TRGMODELTYPE="PMX": 
        if    TRGMODELTYPE="VRM": 
        ifnot TRGMODELTYPE="PMX": 
        ifnot TRGMODELTYPE="VRM": 
            -- Targetとして学習したモデルのファイル形式(PMX/VRM/VMD)
               に一致する(しない)時は、後続のコマンドを実行
        if    EXIST b"(ボーン名)": 
        ifnot EXIST b"(ボーン名)": 
            -- モーションにボーン名のキーが含まれる(含まれない)場合 
               後続のコマンドを実行
        if    EXIST m"(モーフ名)": 
        ifnot EXIST m"(モーフ名)": 
            -- モーションにモーフ名のキーが含まれる(含まれない)場合 
               後続のコマンドを実行
        if    USED b"(ボーン名)": 
        ifnot USED b"(ボーン名)": 
            -- モーションに有効な回転移動のあるボーン名のキーが 
               含まれる(含まれない)時に、後続のコマンドを実行
        if    USED m"(モーフ名)": 
        ifnot USED m"(モーフ名)": 
            -- モーションに有効な回転移動のあるモーフ名のキーが 
               含まれる(含まれない)時に、後続のコマンドを実行
      -- 
      "if"/"ifnot" 指定子は、２重／３重に重ねて指定可能です。 
        if SRCMODELTYPE="PMX": if TRGMODELTYPE="VRM": ... 
      "vmdファイル名", "vmd記録モデル名", "src/trg学習モデル名" 
        には、ワイルドカード (?/*) を含めることができます。 
　　
　　
   コマンドの後ろに、"from (フレーム番号)"  "to (フレーム番号)" 
   をつけておくと、そのコマンドが影響を与えるフレーム区間を制限する
   ことができます。
   
   スクリプト例は以下のようになります。
     
　　 例)
         del m"びっくり" 
         del m"がーん"           from 1000 to 2000
         copy m"瞳小" m"がーん"  from 1000 to 2000 
         m"瞳小" += 0.61         from 1000 to 2000 
         m"瞳小" ~= 1.0 
         m"瞳小" _= 0.0 
           // → 0.61 を加算、最小０～最大１へ制限  
   　　　inskey m"にっこり"=0.123 to 456 
           // →「にっこり」 456 フレームに値 0.123 でキー１点作成  
   　　　inskey b"全ての親"= <1.2 0 0> to 0 
           // →「全ての親」 0 フレームに位置シフト +X値 1.2 
           //     でキー１点作成 (全体が +1.2 右方向へシフト) 
         b"左腕" += (Y-10)  from 453 to 473 
         b"右腕" += (Y+10)  from 453 to 473 
           // 体の正面で、左手と右手を近づける (453-473フレーム間)  
         b"センター" += <0 +1.2 0>  from 520 to 530  
           // フレーム520～530間だけ身体全体の高さを +1.2 上げる 
         timeshift +3  from 1000  
           // フレーム1000以降のキーを全て後方へ３フレームずらす 
         timestretch x0.5  from 1000 to 1500   
           // フレーム1000～1500間の動きを２倍速にする  
         timestretch  from 1000 to 1500  fitto 1400   
           // フレーム1000～1500のキーを1000～1400へ収めるよう拡縮 
   
   
   ボーン名の前の「b」は、後続が「ボーン名」であることを示す接頭辞
   です。
   モーフ名の前の「m」は、後続が「モーフ名」であることを示す接頭辞
   です。
   「 ALLB 」は、すべての名前のボーン(全ボーン) を意味します。
   「 ALLM 」は、すべての名前のモーフ(全モーフ) を意味します。
   「 cam 」は一連のカメラ制御キーを意味します。
   「 light 」は一連のライト制御キーを意味します。
   「 shadow 」は一連のセルフ影制御キーを意味します。
   「 showik 」は一連の表示・IK制御キーを意味します。
   
   スペースは、行頭、モーフ名と演算子の間、演算子と値の間に挿入されて
　 いても、適宜スキップされます。(スペースを挟んでも大丈夫です)
   
   ボーン名／モーフ名以外は、全角文字は不可です。
     (国際環境互換の為)(全角スペースは不可のためご注意ください) 
   
   "inskey" コマンドで指定する補間曲線は、[Lx Ly Rx Ry] に代えて、 
   X,Y,Z,R の曲線を別々に指定することもできます。その場合、 
     [X Lx Ly Rx Ry]   [Y Lx Ly Rx Ry] 
     [Z Lx Ly Rx Ry]   [R Lx Ly Rx Ry] 
   の４つの指定に分けて書けます。 
  
   "inskey" コマンド内の指定値の、
     <x y z> (qx qy qz qw) [Lx Ly Rx Ry]
   各項目は、それぞれ省略可です。 
   (省略された場合、標準値＝無効値 (<0 0 0>, (0 0 0 1), [20 20 107 107] 
    が指定されたことと同じになります。) 
   
   ボーン名／モーフ名で(日本語)漢字コードを使用する場合、スクリプト
   全体を UTF-8 か SJIS としてください。(Windows 10/11 メモ帳では SJIS 
   は ANSI というモード名になっています。)  
   もし、言語環境の違いなどで、VMD に記録されてるボーン名／モーフ名の
   文字をうまく入力できない場合、16進数 (HEXコード) でも記載できます。
   例えば、
       del b"%91%53%82%C4%82%CC%90%65"  
   と記入することは、
       del b"全ての親" 
   と同じことになります。
   もし、VMD ファイル中に記録されてるボーン名／モーフ名の16進数コード
   が分からない (他国の言語コード等が混ざってる) 場合、-LIST オプショ
   ンでリストファイルを生成して確認することができます。  



【 ボーン XYZ 移動量の拡大縮小  (V1.20f10より) 】

　　オプション指定することで、全ボーンの X/Y/Z 移動量を、一斉に
　定数倍することができます。
　　　　
　　・"-ALLKX=(値)"　全ボーンの X 移動量を、一斉に指定値倍する
　　・"-ALLKY=(値)"　全ボーンの Y 移動量を、一斉に指定値倍する
　　・"-ALLKZ=(値)"　全ボーンの Z 移動量を、一斉に指定値倍する
　　
　　各オプションを modsetup.ini 中へ追記することで、変換後の VMD 
  ファイルの X/Y/Z 座標が変化します。
　　
  

【 センターボーンの XYZ 位置シフト機能  (V1.20f10より) 】

　　オプション指定することで、「センター」ボーンの X/Y/Z 位置を、
　一斉にシフトすることができます。
　　　　
　　・"-ADDCX=(値)"　センターボーンの X 位置を一斉に指定量シフトする
　　・"-ADDCY=(値)"　センターボーンの Y 位置を一斉に指定量シフトする
　　・"-ADDCZ=(値)"　センターボーンの Z 位置を一斉に指定量シフトする
　　
　　各オプションを modsetup.ini 中へ追記することで、変換後の VMD 
  ファイルの X/Y/Z 位置がシフトします。
　　値にはマイナス値も指定できます。 
　　


【 上半身2 ボーン名の書換え機能  (V1.20f10より) 】

　　オプション指定することで、「上半身2」「上半身２」ボーン名前を、
　どちらかに統一することができます。

　　・"-RENUB2=0"　 変換なし (標準) 
　　・"-RENUB2=1"　「上半身2」(半角2)へ統一する 
　　・"-RENUB2=2"　「上半身２」(全角２)へ統一する 

　一般に、MMD では、「上半身2」(2は半角) が良く使われています。
　UnityVMDPlayer ライブラリを用いたアプリ(VRM Live Viewer等)では、
　標準で「上半身2」のみ対応となっていて、"-RENUB2=1" を使うと、
　モーション再生の互換性が上がります。
　


【 ポーズ角度許容誤差の指定 (上級) 】

　　モーションの「捩り成分」を分離すると、キーフレーム点上ではポー
　ズが完全一致しても、キーフレーム間で補間で生成されるポーズが、変
　換前の元のポーズとずれるという誤差が、MMD で原理的に避けられない
　誤差として発生します。(ニコニコ静画 mg188854 参照) 
　　
　　本ツールは、変換後の、キーフレーム間(キーフレームのない場所) 
　で起こるポーズの角度誤差を予測して、自動で中間キーフレームを打ち
　ます。
　(この機能は、「 modsetup.ini 」内の「-AI」を削除すると OFF にで
　 きます。その場合、キーフレーム自動追加はされず、補間曲線のみで
　 可能な限り調整を試みます。)
　
　　デフォルトでは、変換後の角度誤差が、最大 1.5 度を超える時に、
　自動でキーフレーム追加します。この 1.5 度の設定値は、
　「 angsetup.ini 」内に「 -EA1.5 」として書かれています。
　
　　この値を例えば「 -EA0.5 」へ変更すると、許容誤差角度が 0.5 度
　になり、より正確に変換できるようになります。（但し、モーションに
　よっては、フレーム間が追加キーで埋まってしまいます。）
　　
　　または、コマンドラインより起動して、オプション（追加指定）を
　入れることでも変更できます。

　　例１）> vmdtms -EA0.5 (ファイル名).vmd 
　　例２）> vmdtms -EA3.0 (ファイル名).vmd 

　これらでは、

　・「 -EA 」許容角度誤差(単位：度(deg)) 
　
　の意味です。
　　ポーズずれが気にならない場合、-EA は 3～5 度程度まで許容すると、
　キーの追加を最低限にできます。



【 ジンバルロック予測回避機能 (上級) 】

　　モーションの「捩り成分」を分離すると、腕や肘がほぼ真っすぐに伸び
　たポーズの前後で、変換後モーションが不安定となる (ジンバルロック) 
　現象が、原理的に発生しやすくなります。
　　これを防ぐよう、自動キーフレーム追加する機能が V1.09 より追加さ
　れています。

　　変換後キーフレーム間で異常な回転が生じやすくなることを予測検出
　した場合、自動でキーフレーム追加します。

　　例１）> vmdtms -TA140 (ファイル名).vmd 
　　例２）> vmdtms -SR5.5 (ファイル名).vmd 
　　例３）> vmdtms -SA90  (ファイル名).vmd 

　これらでは、

　・「 -TA 」捩り角度変化許容値(単位：度(deg)) 
　　　　　　　(130～180 の間での調節を想定：標準 140)
　・「 -SR 」分離後ボーン角度和変化比(単位：倍) 　
　　　　　　　(4.0～7.5 の間での調節を想定：標準 5.5)
　・「 -SA 」分離後ボーン角度和変化許容値(単位：度(deg)) 　
　　　　　　　(10～360 の間での調節を想定：標準 90)

　の意味です。
　　通常の使用では、デフォルト値のままで大丈夫ですが、もし腕や肘が
　真っすぐなポーズや、肘を深く曲げたポーズの前後で、不安定な動きが
　みられた場合は、これらの値(主にSA)を小さくすることで、回避できる
　確率が上がります。



【 ダイアログの非表示化 (上級) 】

　　確認メッセージ(ダイアログ)の「ＯＫ」ボタンを押す手間を省きたい
　場合、「 modsetup.ini 」中にある、「 -ND0 」(エヌ・ディ・ゼロ) 
　の値「０」を、メモ帳等で書き換えることで、ダイアログがスキップで
　きるようになります。

　・「 -ND0 」：確認メッセージを表示します(通常)
　・「 -ND1 」：変換前の確認メッセージをスキップします
　・「 -ND2 」：変換前/終了時の確認メッセージをスキップします

　ND は no dialogue の略です。
　　また、この機能を用いることで、スクリプトによるバッチ処理化がで
　きます。



【 補助ツール ArmTwistMix について 】(旧名称 VmdMix.exe)

　　ArmTwistMix.exe は、
　　　「左腕」　＋「左腕捩」　 → 「左腕」
　　　「左ひじ」＋「左手捩」 　→ 「左ひじ」
　　　「右腕」　＋「右腕捩」 　→ 「右腕」
　　　「右ひじ」＋「右手捩」 　→ 「右ひじ」
　のボーン統合を行う専用のツールです。(分離の逆)
　　使用法は、VMDTMS.exe と同様、VMD ファイルを ArmTwistMix.exe へ
　ドラッグ＆ドロップするだけです。
　　変換後のファイル名後尾には「-mix」が付きます。
　　統合のみの場合、モデル腕角度の情報は不要なので、学習は不要です。



【 セットアップ (設定記憶用) ファイルについて 】

　　以下のファイルが、設定の保存用に、本ツールフォルダ内に自動生成
　されることがあります。

　「 vmdsetup.ini 」 ボーン角度の学習結果 
　「 angsetup.ini 」 起動時のオプション指定 (許容角度誤差用) 
　「 modsetup.ini 」 起動時のオプション指定 (変換モード(ON/OFF)用) 
　「 timsetup.ini 」 起動時のオプション指定 (変換時間範囲用) 
　


【 Ｑ＆Ａ 】

　・「捩り分離後、腕を上へ上げたポーズで、腕角度がズレる」

　　→　この症状は、VMDTMS を未学習のまま使用すると、典型的に発生
　　　　します。
　　　　「学習」操作を行ってください。
　　　　
　　（解説）
　　　　　変換角度誤差は、関連する「ボーンの数」が増える程、また
　　　　回転角が大きいほど、積算されます。
　　　　　Ａポーズ(斜め下)に対し、角度差が大きくなるのは、腕を真上へ
　　　　上げるポーズなので、手を上げたポーズで誤差が特に目立つように
　　　　なります。
　　　　　必ず「学習」操作を行ってください。


　・「捩りを『統合』すると、腕角度がズレる」

　　→　この症状は、前項の「逆の原理」で発生します。
　　　　一致を確認するには、元モーションが作成されたモデルと同じモ
　　　　デルを用いて、変換前後の比較をしてください。
　　　　
　　（解説）
　　　　　配布された VMD 等を用いる場合、VMD には、モーションが作成
　　　　された時のモデルの腕角度に従って、回転が記録されています。
　　　　　VMDTMS や VMD Retarget では、「モーション作者の方の手元の
　　　　モデルで捩り統合した状態」を再現しています。
　　　　
　　　　　つまり、ユーザの方が使用するモデルが、モーション作成した
　　　　モデルとは異なる場合、「統合」の瞬間に、腕角度がズレる様に
　　　　見えることになります。
　　　　　正しく一致を確認するには、元モーションが作成されたモデルと
　　　　同じモデルを用いて、変換前後の比較をしてください。
　　　　
　　　　　VMDTMS では、捩り分離を行う前に、「学習」を行うことを推奨
　　　　してますが、これは、「分離」や「統合」の瞬間に、VMD 中に記録
　　　　される腕捩り軸と、使用するモデルの腕捩り軸の方向が一致しない
　　　　と、分離／統合で腕角度がずれてしまうためです。
　　　　　
　　　　　見方を変えると、配布された VMD には、モーション作成に使われ
　　　　た元モデル上で正しく統合するための腕角度情報が「残っている」
　　　　ことになります。
　　　　

　・「変換後モーションがガタつく」

　　→　この現象は、VMDTMS を未学習のまま、モーションキャプチャ
　　　　データの変換に使用すると、高確率で発生します。
　　　　「学習」操作を行ってください。
　　　　
　　（解説）
　　　　　確認のため、変換後のデータを、一度 VmdMix で「再統合」し
　　　　て、MMD で使用してみてください。
　　　　　統合してガタが無くなる場合は、変換自体は正常です。
　　　　
　　　　　「未学習」状態では、ジンバルロック現象が原因となって、世界
　　　　地図の北極点や南極点付近が無限に拡大されるように、変換後に
　　　　ポーズ誤差が大きく拡大されて、その誤差が、１コマ１コマずれ
　　　　て見えることで、ガタつきやブレとして現れます。
　　　　　必ず「学習」操作を行ってください。
　　　　

　・「本来のポーズより腕が 180/360°捩れている」(全腕補正時)

　　→　原因は何通りかあります。
　　　　元モーションが「人間にできる」モーションであるかを
　　　　まず確認してください。
　　　　　(→変換前/変換後のどちらを修正すべきか分かります) 

　　（解説）
　　　　原因として、
　　　　・トレースされたモーションの腕捩れが 360 度ぐるっと一回転
　　　　　して戻ってくる (実際にありえない) モーションになってる
　　　　・腕角度の大きく違うモデル用に変換した場合、厳しい変換と
　　　　　なり、±180度を超える動きが生じてしまう
　　　　という２通りがあり得ます。
　　　　　従って、モーションとモデルの組合せによって、常に発生する
　　　　可能性があります。
　　　　　V1.17 以降では、このような腕が 360°捩れた可能性がある箇
　　　　所は、ダイアログで表示が出ます。
　　　　
　　　　　トレース用モデルで確認しないかぎり、MMD 表示でほとんど差
　　　　がないモデルも多いので、気にならない場合は無対応で構いませ
　　　　んが、念のため、表示されたフレーム番号の前後±３キーの範囲
　　　　を MMD で見て頂き、大丈夫か確認して頂けると良いと思います。
　　　　
　　　　　修正時は、まず実際に腕を動かしてみて人間の動きと比較して、
　　　　元 VMD が「人間にできない」モーションになってないかを、確認
　　　　してください。
　　　　　・元が「人間にできる」モーションだった場合
　　　　　　　→　変換後のモーションのみを修正してください。
　　　　　　　　　　(MMD表示に問題ない場合、対応不要です。)
　　　　　　　　　　(確認が済んだらメッセージは無視してください)
　　　　　・元が「人間にできない」モーションだった場合
　　　　　　　→　変換前の元モーションを修正すると早い場合が多いで
　　　　　　　　　す。
　　　　　　　　　360°捩れが発生するキーより前に、正しい方向から
　　　　　　　　　腕回転するよう、キー追加してください。
　　　　　　　　　　(実際の人間で出来る動きへ修正してください) 
　　　　
　　　　　なお、「全腕補正」を OFF にすれば (modsetup.ini 中の 
　　　　-WTE -ATE を消す)、「捩り分離のみ」となり、これら 360°捩
　　　　れに関する処理は起こらなくなります。
　　　　
　　　　　なお、初期ポーズ推定に異常があった場合、スタート時点で腕が
　　　　360°捩れる可能性がありますが、作者手元ではまだ見つかって
　　　　いないため、もし見つかった場合は、Twitter 等で #VMDTMS 
　　　　タグをつけて、モーション名(sm******)、モデル名(sm******) 
　　　　を添えてお知らせ頂けると助かります。
　　　　


【 その他使用法補足 】
　
　　学習は何度でもやり直すことができます。
　　学習時は vmdsetup.ini というファイルが生成されます。ここに腕角
　度の情報が記録されています。
　　新たなモデルを学習させた時は、vmdsetup.ini の内容は上書きされ
　ます。
　
　　また、本ツールは、PC一台中に、いくつでも(フォルダを分けて)複数
　コピーして使うことができます。
　　各フォルダごとに、別のモデルを学習をさせて、各モデル専用の変換
　ツールのように使う、といった使い方ができます。
　

【 動作環境 】

　OS: Windows 8, 8.1, 10, 11  (x32, x64)   
　　　(Windows 10 以降の UTF-8 モードにも対応 (V1.11から))
  RAM: 0.6 GB 以上 

　・本ソフトは、Windows 95 互換形式のソフトウェアです。
　　ランタイム等が不要で、インストールのトラブルが少ない利点が
　　ありますが、
    (標準設定では) OS により SJIS 互換モードで起動されるため、
　　Unicode でしか表せない特殊文字をファイル名またはフォルダ名に
　　含む(親フォルダ含む)場合、正しく動作しない場合があります。
　　その場合、ファイル名／フォルダ名を SHIFT-JIS コード互換文字へ
　　名前変更するか、又はデスクトップ上へ移動して実行するか、又は 
　　Windows 10 であれば「ワールドワイド言語サポートで UTF-8 使用」
　　する OS モード設定へ切り替えて実行してください。 
　　 (一般的に、ファイル／フォルダ名に顔文字を含まなければ大丈夫
　　　です。)
　　（「UTF-8」モードは、Windows 10 の設定＞地域(追加設定)で、
　　　再起動により追加・解除できる機能として提供されています。）

　・旧 Symantec 社のアンチウィルスソフト (Norton Sonar) 等によって、
　　ウィルス等の付着がなくても、未知の実行ファイルとして「危険」判
　　定される場合があります。手動で再スキャンを行って、安全であると
　　確認できた場合は、お手数ですが Norton の処理メニューから復元・
　　除外指定を行ってください。


【 VMDTMS 履歴 】
　
　V1.04a 初公開版
　V1.04c 「-ND」オプション (ダイアログ非表示) が効かなかったバグ修正
         (連続処理用機能) 
　V1.05a 学習機能追加 （「-R」オプション）
　V1.05c VMDファイル中に記録されているモデル名が20文字一杯かつ漢字
　　　　 コードの途中であった場合のバグ修正(対応) 
　V1.05e 変換範囲に重なるキーフレームデータがある場合の警告表示に、
　　　　 (frame番号)の表示を追加。  
　　　　 変換したフレーム数の表示間違い修正。 
         変換区間を分割して、１回目と２回目の変換区間の始点・終点が
　　　　 重なる場合に、左ひじ→左手捩 の初期ポーズがずれるバグ修正。 
　V1.06  キーフレーム自動追加版 (修正あり)(未公開)、
　　　　 変換フレーム数表示ミスの修正
　V1.07a 補間曲線自動調整版 
　V1.07b バグ修正：VMDデータの最終フレームが変換後欠ける症状を修正
  V1.08a 補間曲線の自動調整を高速化 (1.07比：汎用的なもので2～3倍)。 
         学習用ツールを learningpose.exe へ分離して独立化し、任意の
　　　　 フォルダから学習用 VMD をドロップできるよう改善。   
  V1.08b さらに高速化 (1.08a比：+5%程度)。 
  V1.09alpha1 変換後の捩りモーション安定化のための自動キーフレーム
　　　　　　　挿入機能追加(オプション -TA)。
  V1.09alpha2 変換後の捩りモーション安定化のための自動キーフレーム
　　　　　　　挿入機能追加(オプション -TR, -SA, -SR)。
  V1.09alpha3 変換後の捩りモーション安定化のための自動キーフレーム
　　　　　　　挿入機能拡張(捩りボーンの可動範囲制限に対応)。
  V1.09alpha4 バグ修正： キーフレーム間の回転差分が 180°超となる
　　　　　　　表現で記録された VMD ファイルでの動作不具合修正。
  V1.09alpha5 すでに一部捩りボーンが使用されている元 VMD の場合に、
　　　　　　　残る未使用捩りボーンのみ変換する部分変換に対応。
　　　　　　　alpha2-3 自動調整用パラメータ値の再調整。
  V1.09alpha6 すでに一部捩りボーンが使用されている元 VMD の場合に、
　　　　　　　事前に統合処理を行って再変換する処理を追加。
  V1.09alpha10 alpha6 の統合(合成)機能で、一部の設定処理がスキップ
　　　　　　　 されていたバグを修正。
  V1.10   「左腕」「左手」「右腕」「右手」の部分変換が可能に (オプ
　　　　　ション -LA, -LH, -RA, -RH)。
　　　　　捩り成分の分配比を指定可能に (オプション -kLA, -kLH, -kRA, 
          -kRH)。 
          VmdMix.exe を独立ツールとして追加。
  V1.11alpha1 Windows 10 の「UTF-8 モード」に対応。
  V1.11alpha2 手首捩り緩和(相殺)機能を追加。  
  V1.11alpha3 バグ修正： 自動キーフレーム挿入(統合時)の必要なフレー
　　　　　　　　　　　　 ム間への挿入を見落としてしまうケースがあっ
　　　　　　　　　　　　 た不具合を修正。
  V1.14alpha1 ひじの自然補正機能を追加。
  V1.14alpha2 自動挿入するキーを少なく、より正確に補間曲線調整できる
              よう改善。
  V1.14alpha3 全腕補正の改善・安定性向上。
  V1.14alpha4 alpha3 版で残っていたデバッグ情報表示を削除。
  V1.14alpha5 全腕補正の安定性向上。 
  V1.14alpha6 Ｔポーズモデルに対する安定性向上。 
  V1.14alpha7 捩れの強いモーションに対する安定性向上。 
  V1.14alpha8 補間曲線調整の安定化。 
  V1.15   腕可動範囲の拡大。ひじ関節軸の指定追加(オプション -EHA)。
  V1.15a  捩りの強いモーションに対応できるよう、アルゴリズム改良。
  V1.15b  フレーム０に回転のある捩りがある VMD に対するメッセージ表示
　　　　　を改善。
  V1.15c  オプション -EHA を、「-EHA15」「-EHA=15」どちらの表記でも
　　　　　対応できるよう改善。
  V1.15e  姿勢推定の改善。 
  V1.15f  learningposeVMD (旧learningpose.exe) で学習した場合、腕を
　　　　　正面(腹)側へ45度捩ったファイルで学習した場合は正しく変換で
　　　　　きるが、腕を背中側へ45度捩ったファイルで学習した場合、正し
　　　　　く全腕補正できなかった(V1.11-V1.15eまで)バグを修正。
  V1.16alpha1 長袖変換の機能を追加。(-SLV1)
              -kSLV により、袖内で腕が空回りする率を指定可。 
  V1.16alpha2 長袖変換モードを追加。(-SLV2) 
              -kSLV により、腕全体で常に最小の捩りを、手捩りと腕捩り
              で配分する配分比を指定可。 
              姿勢推定の高信頼化。
  V1.16alpha3 補間曲線調整の高速化と高精度化。
  V1.17   変換異常箇所のレポート表示機能追加。  
  V1.18alpha1 ニューラルネット姿勢推定機能追加。  
  V1.18alpha2 通常処理終了後の捩りボーン再統合機能追加(仮実装)。  
  V1.20   仮実装だった処理終了後の捩りボーン再統合機能の本実装。
          V1.15- 以降、腕捩り軸と手捩り軸方向が完全に一致すると、
          変換異常が発生していたバグを修正。
          V1.16alpha2- 以降、捩り分離時に一定確率で前後の姿勢が混じる
          変換異常が発生することがあったバグを修正。
  V1.20a  変換後の終了メッセージの修正。(360度腕捩れ発生の可能性時) 
  V1.20e  グルーブボーンのセンターボーンへの統合機能追加 (-MXGTC オプ
          ション、-EAP オプション) 
  V1.20f  肩Pボーンの肩＋腕への配分統合機能追加 (-MXSP オプション)、
          親指０ボーンの親指１への加算統合機能 (-MXTZ オプション) 
  V1.20f2 一度に複数ファイルドロップして変換すると発生してたバグ修正。  
  V1.20f8  マクロスクリプト機能 "macro.ini" のサポート。 
  V1.20f9  ren/inskey コマンドのサポート。  
  V1.20f10 -ALLKX  -ALLKY  -ALLKZ 
           -ADDCX  -ADDCY  -ADDCZ 
           -RENUB2  オプションのサポート。
  V1.20f11 ダイアログメッセージのタイトル表示修正.  
  V1.20f12 ダイアログメッセージの変換ファイル名表示が消えてしまうケー
           スがあったバグ修正。
  V1.20f16 -MXNEK -MXUB2 オプションのサポート。
           (VRM 1.0 に対応するボーンミキシング機能) 
  V1.20f18 -MXTZ オプションの小数指定で、親指０の一部のみを親指１へ
           統合した場合、残りが非ゼロであれば、親指０ボーンを消去せず 
           残すように変更。
  V1.20f20 -MXSP オプションの小数指定で、肩Pの一部のみを肩/腕へ
           統合した場合、残りが非ゼロであれば、肩Pボーンを消去せず 
           残すように変更。
           ダイアログメッセージの修正・簡略化。(Windows 11対応) 
  V1.20f21 -nameLAK -nameRAK -nameLLK -nameRLK 
           -MXMTC オプションのサポート。
           一部英語化されてなかったメッセージの修正。 
  V1.20f22 Windows 11 Power Shell のコンソールログが欠ける OS bug への 
           暫定対策追加。 
  V1.20f23 全ての親／センターの統合機能(-MXMTC)で、「左足IK親」「右足
           IK親」が存在する場合の自動判別に対応。 
           -nameLLKP -nameRLKP オプション追加。 
 V1.20f23a 複数 VMD ファイルをドロップ／選択して変換した際に、２つめ以降の
           変換後の VMD ファイルの上半身データが壊れていたバグを修正。 
 V1.20f23b 「左足IK親」「右足IK親」と「左足ＩＫ」「右足ＩＫ」への統合
　　　　　 機能を追加。-MXLIKP -HEELH オプション追加。  
 V1.20f23c 全ての親／センター統合機能で、センター高さを反映して変換を
           正確化。-CENTERH オプションの追加。 
           統合時許容誤差の標準値を 0.02→0.06 へ変更。  
           ボーン統合時の補間曲線処理の安定性向上。 
 V1.20f23d V1.20f23c で -MXLIKP オプション指定時に、足IK親と足ＩＫの
           統合に失敗することがあったバグを修正。 
 V1.20f23e グルーブ／センター統合機能で、グルーブ-センター間高さ差を反映
           して変換を正確化。-GRVDH オプションの追加。 
           上半身2／上半身統合機能で、上半身2-上半身間高さ差を反映して
           変換を正確化。-UBDH オプションの追加。
 V1.20f24  上半身2 (半角)／上半身２(全角)のデータが混在する場合、ダイア
　　　　　 ログが表示されて、どちらかを削除できるようにした。
           (削除せずそのまま残すことも可能)
           首／頭統合機能で、頭-首高さ差を反映して変換を正確化。
           -NECKDH オプションの追加。
 V1.20f24a VMDファイルを開くことに失敗した場合に、文字コード問題の可能性
           がある場合のメッセージ表示を追加。
           -MXGTC オプションと -MXGTM オプションを同時指定した場合に、
           一度グルーブ・センターを統合し、XYZ 移動の Y 成分のみを
           グルーブへ抽出する機能追加。
 V1.20f25  下半身／センター統合機能追加。
           足ＩＫ、足IK親、つま先ＩＫの強制 OFF 機能追加。
           -MXLBTC、-LBCTRDH、-LBCTRDZ、-IKFZL、-IKFZLP、-IKFZT オプション
           追加。
 V1.20f26  腰／センター統合機能追加。
           -MXWSTC、-WAISTDH、-WAISTDZ オプション追加。
           下半身／センター統合時に、腰ボーンのデータが削除されてしまう
           ことがあった V1.20f25 のバグを修正。
 V1.20f27  UTF-8 モード (Windows 10/11) での実行時に、ダイアログメッセージ
           上のファイル名表示を OFF するよう変更。(OS がダイアログメッ
           セージを ANSI で表示するモードとなっていた際に、OS 側の処理が
           不安定になることを避けるため。) 
 V1.21     UTF-16 ファイルパス (自動 ANSI/UTF-8/UTF-16 切替) に対応。
           IK ボーンの使用判定を改善。 
           learningposeVMD の腕角度学習を改善。 
 V1.21a    同名の出力ファイル名が既に存在する場合、自動で (1) (2) 番号付
           の別名で保存するよう変更。 
           (-cnv.vmd => -cnv(1).vmd, -cnv(2).vmd, etc.) 
           上半身および下半身で、XYZ 移動を含むボーンの動きがある場合へ
           対応。
           IK 以外のボーンに XYZ 移動を含む場合に表示される警告(注意)
           メッセージを短縮。 
           英語モードかつ UTF-16 時、統合処理のみの場合に、ダイアログ中の 
           出力ファイル名 (-mix.vmd) が正しくなかったバグを修正。 
 V1.21b    肩P統合機能で、回転角が大きいと変換後の肩/腕角度が、MMD と
           異なっていたバグを修正。 
 V1.21c    上半身3 統合機能を追加。オプション -MXUB3 追加。
           ０フレーム目にキーが無い VMD モーションの変換がエラーとなって
           いたバグ修正。 
 V1.21d    下半身／センター統合機能で、下半身の水平回転とXYZ移動成分のみ
           をセンターへ統合する機能を追加。
           -MXPLBTC オプション追加。
           グルーブ／センター統合機能で、さらに全ての親へのグルーブ加算
           (-MXGTM) が同時指定されて、かつセンターに水平回転以外の回転が
           含まれていた場合に、変換がずれていたバグを修正。
           腕以外の統合機能が指定されてても、腕変換が全 OFF されている
           場合に、変換が強制中断されていたバグを修正。
           Windows のコード署名に対応。  
           企業内での使用について、ライセンスに追加条項を付加。
 V1.21e    フォルダ名に環境依存文字があるフォルダの内部へ VmdTms を置い
           て実行した場合、起動に失敗することがあったバグを修正。
 V1.21e4   -RETRY360 オプション、-FNFIX オプション追加。 
 V1.21e6   -RESET, -RESETL, -RESETR オプション追加。 
 V1.21e7   フルキャプチャーモーション以外で -MXPLBTC オプションによる下
           半身の統合が失敗してたバグ修正。
           XYZ 移動＋回転を同時に含むボーンの自動キー挿入における変換精
           度向上。
 V1.21f    変換後の表示メッセージを改善 (統合処理を反映)。
 V1.21f2   ボーン変換なしでIK設定変更のみの動作を可能にするよう変更。
 V1.21f3   フォルダ名に環境依存文字があるフォルダの内部へ VmdTms を置い
           て実行した場合、設定ファイル (.ini) の読込みに失敗することが
           あったバグを修正。
           空行を含む macro.ini の読込みに失敗してたバグを修正。
 V1.21f4   macro.ini 内のボーン操作コマンド、
           del b"(ボーン名)" 
           ren b"(元ボーン名)" b"(新ボーン名)" 
           copy b"(元ボーン名)" b"(複製ボーン名)" 
           inskey b"(ボーン名)" 
           を追加。
           inskey m"(モーフ名)" 実行時、既存のモーフ名が存在してた場合、
           キー挿入が失敗することがあったバグ修正。
 V1.21f6   macro.ini 内の操作コマンド、
           b"(ボーン名)"+= ... 
           type b"(ボーン名)"
           type m"(モーフ名)"
           を追加。 
 V1.21f7   macro.ini 内の操作コマンド、
           mirrorX b"(ボーン名)" 
           mirrorXALLB 
           を追加。 
           360度腕捩れ検出時の表示メッセージ改訂。
 V1.21f8   PMX モデル用変換時に、センターボーン回転が打消されてしまう
           バグを修正。(V1.21d-1.21f7で発生)   
 V1.21f10  処理の一部シンプル化／高速化。
           macro.ini 内の操作コマンド、 
            mirrorX cam 
            mirrorX light 
            del cam 
            del light 
            cam *= (値) 
            cam += <x y z> (X )(Y )(Z ) 
            light += <x y z> (X )(Y )(Z )  
            timeshift (値) 
           を追加。 
 V1.21f11  複数ファイル処理360度捩れ時のファイル名表示修正。
           左足/右足の delete コマンドの腰統合の併用時バグの修正。 
 V1.21f12  macro.ini 内の操作コマンド、 
            del shadow 
            del showik 
            del ALLB 
            del ALLM 
            type ALLB 
            type ALLM 
           および２ボーン間の統合(ミキシング)コマンドを追加。 
           複数 VMD ファイルの結合ツール AllVMDMix.exe を新規追加。 
           360度腕捩れ区間の開始フレームが正しく表示されてなかった
           バグを修正。
 V1.21f14  AllVmdMix で、複数 VMD がどの順番で指定されても、ボーンモー
           ションのファイル名と元モデル名を引継ぐよう改善。
           macro.ini コマンド type／del で from-to 処理が正しくなかった
           バグを修正。
 V1.21f15  macro.ini 内の操作コマンド、 
            timestretch 
           を追加。 
           カメラモーションの変換に対応。 
           損傷のある VMD ファイルに対する耐性向上。 
             (同一ボーン同一フレームに複数キーがあるデータ等)  
           表示メッセージの改善(3ヵ所)。 
 V1.21f16  macro.ini 内の操作コマンド、 
            setmodelname 
           を追加。 
           準標準ボーンの欠けたモーションやモデルへの耐性向上。 
 V1.21f17  macro.ini 内のいくつかのコマンドで、ボーンキー総数が 32768 
           を超えるデータを正しく扱えてなかったバグ修正。 
 V1.21f18  変換速度向上 (標準的モーションで約1.2倍速) 
 V1.21f20  足IKの足間隔補正 (-CLIKLW／-LEGDW オプション) 追加。 
           ファイル出力を Windows 11 に合わせて調整。 
 V1.21f21  -REVLBTC オプションによる、-MXLBTC 下半身／センター統合の
           逆変換機能追加。
           ボーン名の別名指定機能を、IK ボーンを除いて廃止。
           (-nameCC, -nameC, -nameGV, -nameLAT, -nameLA, -nameLB, -nameLE, 
           -nameLF, -nameLHT, -nameLLL, -nameLSP, -nameLS, -nameLT0, -nameLT1, 
           -nameLT2, -nameLUL, -nameLWT, -nameLW, -nameMT, -nameRAT, -nameRA, 
           -nameRE, -nameRF, -nameRHT, -nameRLL, -nameRSP, -nameRS, -nameRT0, 
           -nameRT1, -nameRT2, -nameRUL, -nameRWT, -nameRW オプション) 
 V1.21g    macro.ini 中のコマンドのいくつかに、座標成分の個別識別子 
           (.x .y .z .rot (ボーン), .x .y .z .dist .va .rx .ry .rz (カメラ), 
            .x .y .z .r .g .b .rgb (照明)) を追加し、座標成分や回転量を個別
           に操作できるよう拡張。  
           "angsetup.ini" 添付を廃止し modsetup.ini へ統合。 
           (使用は今後も可能) 
           [~] (チルダ) 記号を含むファイル名やモデル名へ対応できない場合が
           あったバグを修正。 
           ライセンス改定。
 V1.21g2   macro.ini の bone/cam/light 直接代入／直接加算／直接乗算操作で、
           .y/.z 指定子が無効だったバグを修正。 
           macro.ini の COPY と INSKEY コマンドで、bone/morph 操作時にデータ
           の先頭付近が壊れることがあったバグを修正。 
 V1.21g3   macro.ini の INSKEY コマンドで、(X 角度値) (Y 角度値) (Z 角度値) 
           表記による回転指定に対応(拡張)。
 V1.21g4   macro.ini で、２モーフ間の統合(ミキシング)コマンドを追加。
 V1.21g5   macro.ini で IF/IFNOT コマンドと、８つの条件指定子を新規追加。 
           (VMDFILENAME/VMDMODELNAME/SRCMODELNAME/TRGMODELNAME
            /SRCMODELTYPE/TRGMODELTYPE/EXIST/USED)
 V1.21g6   -AUTORESET オプションにより、360 度腕捩れポーズ異常検出時に、
　　　　　AI で推定した姿勢へ自動再設定する機能を追加。 
 V1.21g7   -LIST によりVMD中に記録されてるボーン名／モーフ名の一覧を出力で
           きる機能を追加。("list.txt")
           macro.ini コマンド中で、16進数表記でボーン名／モーフ名を指定でき
           るよう拡張。
 V1.21i    macro.ini 中の ALLB ALLM の定数倍操作を追加. 
           -RESET と -AUTORESET オプションによる姿勢推定のリセット操作で、
           指定された境界で捩りの更新タイミングに遅延が発生する場合があった
           バグを修正。
           異常ポーズ範囲の表示で、開始範囲が -1 をなってしまうことがあった
           バグを修正。
           -ALLKX/KY/KZ 指定による位置座標の定数倍操作で、効果が２重(２乗)
           で掛かっていた V1.21f12-V1.21g8 におけるバグを修正。
 V1.21i5   macro.ini コマンド "option" 追加。
           AllVmdMix コマンドで -FNFIX オプションに対応。 
 V1.21i8   macro.ini コマンド "del allbut"、"extract" 追加。 
 V1.21i10  Windows 11 における x64 ネイティブ動作に対応。(x64版) 


【 learningposePMX 履歴 】
　
　V0.80   アルファ版の初公開版
  V0.81   バグ修正: modsetup を自動読込みしてしまう不具合を修正. 
  V0.82   読込み可能なテクスチャ、材質、ボーン、モーフ、表示枠、剛体、
          Joint数の上限を撤廃。(いずれも最大 2147483647 へ拡張) 
  V0.83   QDEF 及び一部 2.1 拡張機能に対応できていなかったバグ修正。
  V1.01   PMX エディタ以外のツールで作成されたと思われる PMX への対応
          改善。 
  V1.02   バッチファイルから learningposePMX を起動できるよう改善。
  V1.04   ドロップされたファイルの拡張子が正しいかチェックする機能追加。
  V1.07   PMX バージョン検知の修正。 
  V1.08   Windows 11 Power Shell のコンソールログが欠ける OS bug への暫定 
          対策追加。 
  V1.10   UTF-8 モード対応。(英語および日本語) 
  V1.11   UTF-8 モード (Windows 10/11) での実行時に、ダイアログメッセージ
          上のファイル名表示を OFF するよう変更。(OS がダイアログメッ
          セージを ANSI で表示するモードとなっていた際に、OS 側の処理が
          不安定になることを避けるため。) 
  V1.12   UTF-16 ファイルパス (自動 ANSI/UTF-8/UTF-16 切替) に対応。
  V1.14   Windows のコード署名に対応。  
  V1.15   フォルダ名に環境依存文字があるフォルダの内部へ learningposePMX 
          を置いて実行した場合、起動に失敗することがあったバグを修正。
  V1.18   Windows 11 における vmdsetup.ini 記録の高信頼化。
  V1.21a5 Windows 11 における x64 ネイティブ動作に対応。(x64版) 



【 著作権・使用条件について 】
　
　本ツールに関しては、作者 (F.Issiki）が著作権を保持します。
　本バージョン（V1.21）はフリーウェアとします。
　使用に伴う一切の損害については免責とさせて頂きます。
　
  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damage 
  arising from the use of this software nor inability to use the program. 
　
　ソフトウェアにおいて、入力に対し出力を定義することは「プログラム設計」
　に当たり、本ソフトウェアの入力と出力を AI (neural network) へ学習させ
　ることにより、本ソフトウェアの動作やプログラム設計をコピーする行為は、
　事前に我々が書面で許可した場合を除き、著作権法違反となりますので、
　ご注意ください。(本ソフトウェアは著作権は放棄しておりません) 
　AI のような多次元学習では、プログラムの中身がブラックボックスのまま、
　反復された複数の入力と出力データを用いて、入力と出力がほぼ同じ機能を
　複製することができますが、手段は違っても「プログラム設計」をコピーす
　る行為であるためです。
　また本ツールの実行ファイル自体を AI への入力とすることも禁止します。  

　PMX モデル使用時は、モデルの使用条件にお気を付けください。
　(ライセンスが気になる方のために VMDTMS 単独版を、また V1.10 以前を引続き
　使用される方のために learningposePMX 単独版を、引続き配布しています。
　本セットは、各単独版を解凍して一つのフォルダへまとめたものと、動作は同じ
　です。) 

  (V1.21d-1.21g3 間の、企業使用における社内チェックへのご協力をお願い
　 する付加条項は、V1.21g4 で撤廃致しました。) 

　
【 謝辞 】

　VMDTMS の作成にあたり、針金P氏の VMD ファイル公開情報を参考にさせ
　て頂きました。
　また learningposePMX の作成にあたり、極北P氏の PMX ファイル仕様の
　情報を参考にさせて頂きました。
　
  初音ミクの名称は、Crypton Future Media Inc. によります。
  VMDTMS の動作チェックと、アイコンのデザインは、R-tenP さんにして
　頂きました。
  また各ツール・モデル・音楽映像を公開されてきた皆さんに、この場にて
　お礼申し上げます。
  

Mar 20, 2026
F.Issiki 
Finekit, Artist Support,
https://finekit.co.jp/base/
