最終更新:ID:HQULjBZKuw 2011年08月11日(木) 04:12:05履歴
※参考になりそうな情報や注意点などを皆さんでどんどん追記編集してください。
Lovers v1.4.1 [Rev86] という感じで v(version)やら Rev(Revision)やら、ややこしいわ!と感じた方も多いかと思います。
v(version)の方は「Lovers with PK.esm」に対して使われ、重要なものです。
「Lovers with PK.esm」は対応MODやアドオンから必ずマスター指定されており、v(version)が更新された場合は全ての対応MODやアドオンがその影響を受けることとなります。
影響といっても悪い影響ではなく、実現可能な判定や処理などが追加されて良い意味での影響であることがほとんどです。
基本的には過去の v(version)で動いていた対応MODやアドオンはそのまま動くはずですが、ごく稀にシステムの根本的な仕様変更により対応作業が必須となってしまう場合もあり得ます。
対応MODやアドオンなどを開発なさっている方は、v(version)の更新には要注意です。
一方 Rev(Revision)は「Lovers with PK.esp」に対して使われるものです。
「Lovers with PK.esp」には Loversシステムの内部処理が実装されており、これが改変されたということになります。
バグ取りやちょっとした機能の追加変更などが行われるだけでもどんどん更新されていきます。
あくまでシステム内部の処理なので、これが変更されたとしても外部の対応MODやアドオン側から何か出来ることが増えたり減ったりするわけでもなく、対応修正をする必要もなく、まず影響はありません。
スクリプトの文法や関数に関しては各マニュアルを参照してください。
TES CSのスクリプトエディタは非常に貧弱なので、それ単体で満足な解析や開発が行えるものではないと思われます。例えば TES CSで開いているMODファイルを別のテキストエディタで開いておき、そちらで関数名で検索したりマークしたりジャンプするなどの工夫が必要です。
また Loversシステムのスクリプト内部には多くのコメントが付いているので参考にしてみてください。
※TES CSのスクリプトエディッタは右クリックメニューからのコピペはできませんが、ホットキーでなら可能です。
Ctrl+C(コピー)、Ctrl+X(カット)、Ctrl+V(ペースト)
改変対象となる機会が多いと思われるスクリプト群は「モジュール」と呼称し、xLoversMainScriptModuleから始まる名前のスクリプトとして作ってあります。
上記では解説されていないモジュール関数について補足します。
ほとんどのスクリプトはその名前から処理の内容が容易に想像できるようにしているつもりですが、念のため全て解説します。
Loversシステムにおける「Idle Animation(待機アニメーション)項目」は、
「Lovers with PK.esm」の方に 1〜9番だけが残っているのは、旧Lovres v1.2システムとの完全な互換性を保つためでした。
しかし現在のシステムでは Lovers v1.2用に作られた旧MODは動作させることができないので、この分割管理に何の意味もなくなってしまいました orz
「LoversIdleAnimsPriority.esp」の方に主たる Idle Animation項目が含まれていますが、Loversシステム自体が LoversIdleAnimsPriority.espという特定のMODに依存しているわけではありません。
Loversシステム側では「xLoversSPosM」+「xLoversStageM」+「xLoversOff か xLoversDef」これらのアイテムを適切な数所持している状態で PickIdle を行った結果、いずれかのMODの影響により ani2フォルダ内のモーションが再生できてさえいればそれでOKだと判断します(PickIdleの結果は知らないどこかの誰かに任せている、という感じです)。
従って極端な例ですが、LoversIdleAnimsPriority.espを a.espという名前にリネームして、この a.espをアクティベートした状態で起動させても Loversシステムは正常に動作します。
LoversIdleAnimsPriority.espというファイルの存在を決め打ちで見ようとしているMODは、すでに更新が停止している診断MOD「LoversDiag.esp」だけだと思います(見ているのは LoversIdleAnimsPriority.espのアクティベート状態とMOD並び順のみで内容は見ていません)。
※2011/1/27 追記
[モーション]まとめ付属「LoversAnimObjectsPriority.esp」は「LoversIdleAnimsPriority.esp」をマスターファイルとして直接参照しており、「LoversIdleAnimsPriority.esp」内部の1〜200番のIdle Animation項目のFormID変更も厳禁だと思われます。
また、Idle Animation項目の管理を LoversIdleAnimsPriority.espひとつに集約させる必要はなく、複数のespに分割して管理することも可能です。
その場合、まったく新しいツリーに Idle Animationリストを作成してもOKです。
例)ツリーを3本に分けてみる
待機アニメーションのルート
またモーションの最大数はオーバーライド用の関数 xLoversCmnGetMotionNumberMaxの戻り値によって決定するので、「最もモーション番号の大きいMOD」を「MOD並び順では後ろの方」にすればOKです。
例)複数のMODが xLoversCmnGetMotionNumberMaxをオーバーライドしている場合
〜MOD並び順:上〜
LoversIdleAnims100.esp … 戻り値 100
LoversIdleAnims200.esp … 戻り値 200 (こちらが優先される)
〜MOD並び順:下〜
有志の方が様々なMODで使用されているモーション番号/UMIDの使用状況リストを作成してくださいました。
システム上、モーション番号が被っていても対処は可能ですが、少なからずとも混乱と手間がかかってしまうので、該当ページのリストを参考にして被っていないモーション番号にて配布を行って頂けますと幸いです。
また UMIDの方は他とは絶対に被ってはいけない識別番号なので、該当ページを参考にユニークな番号を付けるようにしてください。
Loversのモーション番号とumidの使用状況
「モーション番号」は iniファイルや kfファイルの頭に付いている数字のことで、これはユーザーが自由に変更してインストールすることが可能です。
「UMID」(UniqueMotionID/ユニークモーションID)というのは iniファイルの中に直接記入されている「固有の識別ID」です。
ユーザーが自由にモーション番号を変更してインストールしていた場合でも、UMIDという固有の識別IDがあるおかげで探し出して使用することが可能になります。
例) 以下のモーションの「モーション番号」は 77 です
77_Motion.ini
77_DefMotionx0
77_DefMotionx1
77_DefMotionx2
77_DefMotionx3
77_OffMotionx0
77_OffMotionx1
77_OffMotionx2
77_OffMotionx3
<判定方法>
iniファイルと kfファイルの先頭の数字で判別できます。
ややこしくて申し訳ありませんが【番号が一桁の場合には頭に0を付けて下さい】。
× 3_Motion.ini
○ 03_Motion.ini
例) 以下のモーションの「UMID」は 12345678 です
(モーション設定 iniファイルの中身を一部抜粋)
set xLoversPkrQuest.umid to 12345678
<判別方法>
そのモーション用の iniファイルの中で「umid変数」に対して設定している数値が UMIDです。
umid変数に対する設定がない場合、このモーションは UMIDを持たないモーションとなります。
番号の被りについて
前述の通り、「モーション番号」は番号がかぶっていて使えなかったとしても、自分でファイル名を変更するだけで対処が可能です。
一方「UMID」に関しては「ユニーク」という言葉が表すように、他とは被ってはいけない唯一無二の数値でなければなりません。
なぜこのような面倒な方式になっているのか
限りある「モーション番号」が全て使用された後でも、ユーザー各自で好きなモーションデータを好きなモーション番号に変更して自由にインストールして使える為にです。
そのような柔軟性を持たせつつ、特定のモーションが何番にあるのかを「UMID」というユニークなIDを使うことで探し出して特定することも可能になります。
例えば「Ero.esp」という名の対応MODがあり、このMODにはオリジナルのモーションが同梱されていたとします。
そのモーションファイル一式は標準では「モーション番号」が 50 のファイル名だったとします。
しかしユーザーによってはすでにモーション番号 50は使用済なので、51にする人がいたり、100にする人がいたりします。
そうすると「Ero.esp」側では「うちのMODのオリジナルモーションを再生するぞ」となった時に、何番のモーションを再生すべきなのかが判断できません。
配布時には「モーション番号 50番」でしたが、ユーザーが変更している可能性があるので「モーション番号は 50である」と決め打ちできないからです。
そこで「UMID」の出番となります。
モーション設定 iniファイルの中で「UMID」の値を、例えば「12345678」に設定しておきます。
そうすると Lovers共通関数の「xLoversCmnGetMotionNumberByUMID」を呼び出すことで、該当する UMIDを持つモーションの「モーション番号」を探し出すことが可能になります。
上記の例ですと「Call xLoversCmnGetMotionNumberByUMID 12345678」とすれば、その UMIDを持つ「モーション番号」が帰ってきます。
環境によっては 50だったり、51だったり、100だったり、いろいろな数値が返ってきます。
これを Loversシステムの受け渡し変数の体位番号(SPos)に代入すればOKです。
まず始めに Loversシステム配布書庫に付属している「開発者向け資料」フォルダ内のテキストをよく読んでください。
Loversシステムの基本的な仕組みや、対応MODの作り方、モーションの組み込み方などが大まかに把握できると思います。
Loversシステムの基本的な仕組みや、対応MODの作り方、モーションの組み込み方などが大まかに把握できると思います。
Lovers v1.4.1 [Rev86] という感じで v(version)やら Rev(Revision)やら、ややこしいわ!と感じた方も多いかと思います。
v(version)の方は「Lovers with PK.esm」に対して使われ、重要なものです。
「Lovers with PK.esm」は対応MODやアドオンから必ずマスター指定されており、v(version)が更新された場合は全ての対応MODやアドオンがその影響を受けることとなります。
影響といっても悪い影響ではなく、実現可能な判定や処理などが追加されて良い意味での影響であることがほとんどです。
基本的には過去の v(version)で動いていた対応MODやアドオンはそのまま動くはずですが、ごく稀にシステムの根本的な仕様変更により対応作業が必須となってしまう場合もあり得ます。
対応MODやアドオンなどを開発なさっている方は、v(version)の更新には要注意です。
一方 Rev(Revision)は「Lovers with PK.esp」に対して使われるものです。
「Lovers with PK.esp」には Loversシステムの内部処理が実装されており、これが改変されたということになります。
バグ取りやちょっとした機能の追加変更などが行われるだけでもどんどん更新されていきます。
あくまでシステム内部の処理なので、これが変更されたとしても外部の対応MODやアドオン側から何か出来ることが増えたり減ったりするわけでもなく、対応修正をする必要もなく、まず影響はありません。
スクリプトの文法や関数に関しては各マニュアルを参照してください。
- TES CS 日本語ヘルプ
- OBSE付属の関数リファレンス (オンライン最新版)
- TES CS Wiki (海外)
TES CSのスクリプトエディタは非常に貧弱なので、それ単体で満足な解析や開発が行えるものではないと思われます。例えば TES CSで開いているMODファイルを別のテキストエディタで開いておき、そちらで関数名で検索したりマークしたりジャンプするなどの工夫が必要です。
また Loversシステムのスクリプト内部には多くのコメントが付いているので参考にしてみてください。
※TES CSのスクリプトエディッタは右クリックメニューからのコピペはできませんが、ホットキーでなら可能です。
Ctrl+C(コピー)、Ctrl+X(カット)、Ctrl+V(ペースト)
- xLoversMainSafeStart
- xLoversPkrQuestScript
- xLoversMainScriptExecute
- xLoversMainScriptModuleTimer
- xLoversMainScriptModuleKeyControl
- xLoversMainScriptStepH
- xLoversMainScriptModulePickIdle
- xLoversMainScriptSetupHStep
- xLoversMainScriptEquipFuncInitialize
- xLoversMainScriptEquipFunc
改変対象となる機会が多いと思われるスクリプト群は「モジュール」と呼称し、xLoversMainScriptModuleから始まる名前のスクリプトとして作ってあります。
上記では解説されていないモジュール関数について補足します。
- xLoversMainScriptModuleGetChinupo
- xLoversMainScriptModuleGetFutanari
- xLoversMainScriptModuleResetKf
- xLoversMainScriptModuleStun
- xLoversMainScriptModuleSetupMotion
- xLoversMainScriptModuleAdjustPosition
- xLoversPkrCleanFunc
- xLoversCmnInitQuestInterface
ほとんどのスクリプトはその名前から処理の内容が容易に想像できるようにしているつもりですが、念のため全て解説します。
- xLoversPkrAbilityScript
- xLoversPkrAddSpermCount
- xLoversPkrAddSPosGroupItem
- xLoversPkrAdjustEntry
- xLoversPkrAdjustFind
- xLoversPkrBedPlayGetAdjustZ
- xLoversPkrBedPlayGetAdjustZSubSI
- xLoversPkrBedPlayGetAdjustZSubVanilla
- xLoversPkrBedPlaySetup
- xLoversPkrBUBreak
- xLoversPkrBUBreakMain
- xLoversPkrBUBreakSub
- xLoversPkrBUCheck
- xLoversPkrCallbackCorrect
- xLoversPkrCallbackEntrySub
- xLoversPkrCheckBoners
- xLoversPkrCheckFutanariFile
- xLoversPkrCheckPairsContinuity
- xLoversPkrCheckRapeVoiceExist
- xLoversPkrCheckSeparatedVoiceExist
- xLoversPkrCheckSoundDirectory
- xLoversPkrCheckStart
- xLoversPkrCheckVoiceExist
- xLoversPkrCleanBoners
- xLoversPkrConvertModListToModNumList
- xLoversPkrCorrectNudeFlag
- xLoversPkrCorrectNudeFlagBU
- xLoversPkrCorrectNudeFlagNoUnequip
- xLoversPkrDebugSpellScript
- xLoversPkrEmergencyFinalize
- xLoversPkrExecCallback
- xLoversPkrFinishTfc
- xLoversPkrFollowPlayerItemScript
- xLoversPkrGetChinupo
- xLoversPkrGetDefaultMotionFlag
- xLoversPkrGetEquippedTorchIgniter
- xLoversPkrGetHeadOrHair
- xLoversPkrGetMotionAdjustData
- xLoversPkrGetMotionFlag
- xLoversPkrGetMotionParamBySPosIndex
- xLoversPkrGetSameGroupSPos
- xLoversPkrGetSPosGroup
- xLoversPkrGetUnequipbleHair
- xLoversPkrGetVoiceLabel
- xLoversPkrGetXZScale
- xLoversPkrInfoSpellScript
- xLoversPkrIsEquipFuncTarget
- xLoversPkrIsGhostScript
- xLoversPkrLoadMotionFile
- xLoversPkrLoadMotionFileSub
- xLoversPkrNormalizeVoiceParameter
- xLoversPkrNudeSettingGet
- xLoversPkrNudeSettingGetBool
- xLoversPkrNudeSettingInit
- xLoversPkrPairsDelete
- xLoversPkrPairsEntry
- xLoversPkrPlayVoice
- xLoversPkrRemoveXPack
- xLoversPkrRepairMotion
- xLoversPkrRepairNpcSpellScript
- xLoversPkrResetAnimClear
- xLoversPkrResetKnockedState
- xLoversPkrResetMotion
- xLoversPkrSafePickIdle
- xLoversPkrSafeReset3DState
- xLoversPkrSafeReset3DStatePairs
- xLoversPkrSayTopic
- xLoversPkrSearchVisitor
- xLoversPkrSetGlobalVar
- xLoversPkrSetMotionAdjustArraySub
- xLoversPkrSetScale
- xLoversPkrSetTfc
- xLoversPkrSettingEffectSpellScript
- xLoversPkrSettingModListSpellScript
- xLoversPkrSettingMotionSpellScript
- xLoversPkrSettingNudeSpellScript
- xLoversPkrSettingSpellScript
- xLoversPkrSettingStepSpellScript
- xLoversPkrSetVoiceSpellScript
- xLoversPkrSpermSplash
- xLoversPkrUpdateAdjustPositionFormatVersion
- xLoversPkrVerRevWarning
- xLoversQuestScript
- xLoversPkrPearlScript
- xLoversPkrResetVisitor
- xLoversPkrQuestInit
- xLoversPkrSetFov
- xLoversPkrCheckUnnecessaryMod
- xLoversPkrNoGreetingExecute
- xLoversPkrNoGreetingReset
- 当時 Oblivion+OBSEのスクリプトを触り始めたばかりだったので試行錯誤の勉強をしながら作業を行うこととなりました。その結果、関数名/変数名の命名規則がない、全体の処理の流れなどに一貫性がない、構成が汚すぎる、後付け処理が多くつぎはぎだらけ、他人には理解しづらい、という惨状となってしまいました、本当にごめんなさい orz
- コールバック処理はスレで情報提供を頂いたおかげで実装できたシステムです、ありがとうございました。
- スクリプトの細分化(モジュール化)はスレでのご要望により実装されたシステムです、アイディア提供ありがとうございました。
- 動作検証にご協力してくださった皆様、いろいろなアイディアやアドバイスを提供してくださった皆様、対応MODやリソースデータを提供してくださった皆様、本当にありがとうございました。当時はたまたま私がMODを改変しましたが、実際に Loversシステムが進化したのは関係したすべての人たちの力によるものです。これからも Loversシステムが進化し続けることを願っています。
Loversシステムにおける「Idle Animation(待機アニメーション)項目」は、
- Lovers with PK.esm … モーション番号1〜9
- LoversIdleAnimsPriority.esp … モーション番号10以降(最大数は任意)
「Lovers with PK.esm」の方に 1〜9番だけが残っているのは、旧Lovres v1.2システムとの完全な互換性を保つためでした。
しかし現在のシステムでは Lovers v1.2用に作られた旧MODは動作させることができないので、この分割管理に何の意味もなくなってしまいました orz
「LoversIdleAnimsPriority.esp」の方に主たる Idle Animation項目が含まれていますが、Loversシステム自体が LoversIdleAnimsPriority.espという特定のMODに依存しているわけではありません。
Loversシステム側では「xLoversSPosM」+「xLoversStageM」+「xLoversOff か xLoversDef」これらのアイテムを適切な数所持している状態で PickIdle を行った結果、いずれかのMODの影響により ani2フォルダ内のモーションが再生できてさえいればそれでOKだと判断します(PickIdleの結果は知らないどこかの誰かに任せている、という感じです)。
従って極端な例ですが、LoversIdleAnimsPriority.espを a.espという名前にリネームして、この a.espをアクティベートした状態で起動させても Loversシステムは正常に動作します。
LoversIdleAnimsPriority.espというファイルの存在を決め打ちで見ようとしているMODは、すでに更新が停止している診断MOD「LoversDiag.esp」だけだと思います(見ているのは LoversIdleAnimsPriority.espのアクティベート状態とMOD並び順のみで内容は見ていません)。
※2011/1/27 追記
[モーション]まとめ付属「LoversAnimObjectsPriority.esp」は「LoversIdleAnimsPriority.esp」をマスターファイルとして直接参照しており、「LoversIdleAnimsPriority.esp」内部の1〜200番のIdle Animation項目のFormID変更も厳禁だと思われます。
また、Idle Animation項目の管理を LoversIdleAnimsPriority.espひとつに集約させる必要はなく、複数のespに分割して管理することも可能です。
その場合、まったく新しいツリーに Idle Animationリストを作成してもOKです。
例)ツリーを3本に分けてみる
待機アニメーションのルート
- Characters\_Male\IdleAnims
- xLoversIdleAnims (モーション番号1〜9、esmの内容そのままで変更しない) → Lovers with PK.esm
- xLanims01 〜 xLanims09
- xLoversIdleAnims100 (モーション番号10〜100までを新しく格納してみる) → LoversIdleAnims100.esp
- xLanims10 〜 xLanims100
- xLoversIdleAnims200 (モーション番号101〜200までを新しく格納してみる) → LoversIdleAnims200.esp
- xLanims101 〜 xLanims200
- RaceMenuAnims
- (以下略)
- xLoversIdleAnims (モーション番号1〜9、esmの内容そのままで変更しない) → Lovers with PK.esm
またモーションの最大数はオーバーライド用の関数 xLoversCmnGetMotionNumberMaxの戻り値によって決定するので、「最もモーション番号の大きいMOD」を「MOD並び順では後ろの方」にすればOKです。
例)複数のMODが xLoversCmnGetMotionNumberMaxをオーバーライドしている場合
〜MOD並び順:上〜
LoversIdleAnims100.esp … 戻り値 100
LoversIdleAnims200.esp … 戻り値 200 (こちらが優先される)
〜MOD並び順:下〜
有志の方が様々なMODで使用されているモーション番号/UMIDの使用状況リストを作成してくださいました。
システム上、モーション番号が被っていても対処は可能ですが、少なからずとも混乱と手間がかかってしまうので、該当ページのリストを参考にして被っていないモーション番号にて配布を行って頂けますと幸いです。
また UMIDの方は他とは絶対に被ってはいけない識別番号なので、該当ページを参考にユニークな番号を付けるようにしてください。
Loversのモーション番号とumidの使用状況
「モーション番号」は iniファイルや kfファイルの頭に付いている数字のことで、これはユーザーが自由に変更してインストールすることが可能です。
「UMID」(UniqueMotionID/ユニークモーションID)というのは iniファイルの中に直接記入されている「固有の識別ID」です。
ユーザーが自由にモーション番号を変更してインストールしていた場合でも、UMIDという固有の識別IDがあるおかげで探し出して使用することが可能になります。
例) 以下のモーションの「モーション番号」は 77 です
77_Motion.ini
77_DefMotionx0
77_DefMotionx1
77_DefMotionx2
77_DefMotionx3
77_OffMotionx0
77_OffMotionx1
77_OffMotionx2
77_OffMotionx3
<判定方法>
iniファイルと kfファイルの先頭の数字で判別できます。
ややこしくて申し訳ありませんが【番号が一桁の場合には頭に0を付けて下さい】。
× 3_Motion.ini
○ 03_Motion.ini
例) 以下のモーションの「UMID」は 12345678 です
(モーション設定 iniファイルの中身を一部抜粋)
set xLoversPkrQuest.umid to 12345678
<判別方法>
そのモーション用の iniファイルの中で「umid変数」に対して設定している数値が UMIDです。
umid変数に対する設定がない場合、このモーションは UMIDを持たないモーションとなります。
番号の被りについて
前述の通り、「モーション番号」は番号がかぶっていて使えなかったとしても、自分でファイル名を変更するだけで対処が可能です。
一方「UMID」に関しては「ユニーク」という言葉が表すように、他とは被ってはいけない唯一無二の数値でなければなりません。
なぜこのような面倒な方式になっているのか
限りある「モーション番号」が全て使用された後でも、ユーザー各自で好きなモーションデータを好きなモーション番号に変更して自由にインストールして使える為にです。
そのような柔軟性を持たせつつ、特定のモーションが何番にあるのかを「UMID」というユニークなIDを使うことで探し出して特定することも可能になります。
例えば「Ero.esp」という名の対応MODがあり、このMODにはオリジナルのモーションが同梱されていたとします。
そのモーションファイル一式は標準では「モーション番号」が 50 のファイル名だったとします。
しかしユーザーによってはすでにモーション番号 50は使用済なので、51にする人がいたり、100にする人がいたりします。
そうすると「Ero.esp」側では「うちのMODのオリジナルモーションを再生するぞ」となった時に、何番のモーションを再生すべきなのかが判断できません。
配布時には「モーション番号 50番」でしたが、ユーザーが変更している可能性があるので「モーション番号は 50である」と決め打ちできないからです。
そこで「UMID」の出番となります。
モーション設定 iniファイルの中で「UMID」の値を、例えば「12345678」に設定しておきます。
そうすると Lovers共通関数の「xLoversCmnGetMotionNumberByUMID」を呼び出すことで、該当する UMIDを持つモーションの「モーション番号」を探し出すことが可能になります。
上記の例ですと「Call xLoversCmnGetMotionNumberByUMID 12345678」とすれば、その UMIDを持つ「モーション番号」が帰ってきます。
環境によっては 50だったり、51だったり、100だったり、いろいろな数値が返ってきます。
これを Loversシステムの受け渡し変数の体位番号(SPos)に代入すればOKです。
このページへのコメント
ovXc4H <a href="http://bbmgbkttooua.com/">bbmgbkttooua</a>, [url=http://qpcddxamlycm.com/]qpcddxamlycm[/url], [link=http://ppodneliiobs.com/]ppodneliiobs[/link], http://gzprixhxpqew.com/
RU6R01 <a href="http://zyjodgihcmuk.com/">zyjodgihcmuk</a>, [url=http://pxyiyqhkmikd.com/]pxyiyqhkmikd[/url], [link=http://nvcsenwjihgn.com/]nvcsenwjihgn[/link], http://xbeyueeopfsi.com/
特定の体位モーション「だけ」を再生させたい場合はどうしたらいいでしょう?
現状だと、追加体位も含め体位グループの中で行為段階ごとにランダムで再生されてしまうので、状況に合わない体位が選択されてしまうことがあります。非挿入グループの場合が特に悲惨で、パイズリ→クンニ→イラマ→足コキとか笑えない組み合わせができてしまったりしますw
UMID指定で特定の体位番号だけ再生出来れば一番いいのですが、これを改善するにはどうしたら良いでしょう?(勿論1〜9番など含めた全てのモーションにUMIDを付与するという前提で)