ボーン検索・一括操作プラグイン(BatchOperate)の使い方

ボーン検索・一括操作プラグイン(BatchOperate)とは

ボーンを検索したり一括更新・置換できるPMXEditorプラグインです。

f:id:orico17:20210808210345p:plain

f:id:orico17:20210810211811p:plain

以下の説明では

  • オレンジ:検索入力部
  • 緑:更新入力部
  • 紫:一覧部

とします。

インストール

_plugin\User配下にフォルダごと置いてください。

f:id:orico17:20210808214047p:plain

検索について

検索入力部に検索内容を入力して[検索]ボタンをクリックすると、一覧部に検索結果一覧が表示されます。

検索 例:ボーン名に「右」を含むIKボーンを検索したい

下図はPMXEのボーンタブ画面

f:id:orico17:20210808210337p:plain

  1. 検索入力部の[ボーン名]に「右」を入力し、[性能 IK]のチェックをONf:id:orico17:20210808210204p:plainにする
  2. [検索]をクリックする
  3. 一覧部に検索結果が表示される

f:id:orico17:20210808210345p:plain

用語

完全一致検索

完全一致検索とは
検索のやり方を指す用語のひとつ
であり
検索キーワードと「完全に同じ」ものを探すよ!なやり方
です。
完全一致検索とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

例えば、「髪」で検索すると「髪」のみヒット、「右髪」「右髪IK」「髪後ろ」はヒットしません。

部分一致検索

部分一致検索とは
検索のやり方を指す用語のひとつ
であり
検索キーワードを「含む」ものを探すよ!なやり方
です。
部分一致検索とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

例えば、「髪」で検索すると「右髪」「右髪IK」「髪後ろ」「髪」がヒットします。

ワイルドカード検索

サクッと一言で説明すると
「ん~とね、何って決まっているわけじゃないんだけど、ここに文字列が入るから」を示す特殊文字
が「ワイルドカード」です。
ワイルドカードとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

「*」が「任意の0文字以上」、「?」が「任意の1文字」を表すワイルドカードです。
例えば、「右*先」で検索すると 「右手先」「右つま先IK」「右中指先」がヒットし、「右?先」で検索すると 「右手先」だけヒットします。

正規表現検索

サクッと一言で説明すると
文字列を指定する際に「これ!」とピンポイントで指定するのではなく「こんな感じ!」とちょっと幅を持たせて指定できる書き方
が「正規表現(セイキヒョウゲン)」です。
正規表現とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

正規表現はめちゃくちゃ便利なんですが、いろいろ出来すぎて例が挙げづらいので興味を持たれた方は下記のページをご参照ください。
サルにもわかる正規表現入門

「左〇〇ボーンの英名を〇〇_Lに統一したいな~」と思った時に下図のように入力すると「〇〇_L」になっていないボーンを探せたりします。

f:id:orico17:20210810231357p:plain

一括更新について

更新入力部に更新内容を入力し[一括更新]ボタンをクリックすると、一覧部で[Chk]列をONにしたものすべてが更新されます。

  • [クリア]ボタンをクリックすると更新入力部がリセットされる
  • 複数の項目を更新することも可能
  • チェックボックスは以下の3つの状態があり、未選択の場合は更新項目にならない
    • 未選択→f:id:orico17:20210808210119p:plain
    • OFF(=False)→f:id:orico17:20210808210154p:plain
    • ON(=True)→f:id:orico17:20210808210204p:plain
  • 更新入力部に表示されていない項目(IKのTargetなど)は未対応

一括更新 例:「右髪先」などの表示先ボーンを非表示にしたい

1 . 検索入力部の[ボーン名]に「先」を入力し、[検索]をクリックする
2 . ボーン名に「先」を含むボーンの一覧が表示される

f:id:orico17:20210808211718p:plain

3 . [全選択]をクリックし、すべての行の[Chk]列をチェックON状態にする
4 . 更新したくないボーンのチェックをOFFにする(今回であれば「左つま先」「右つま先IK」などは表示先ボーンではないためチェックをOFFにする)

f:id:orico17:20210808212343p:plain

5 . 更新入力部の[性能 表示]のチェックをOFFf:id:orico17:20210810210544p:plainにし、[一括更新]をクリックする

f:id:orico17:20210808213256p:plain

6 . 「モデルを更新しました。」のポップアップが表示され、選択したボーンの[表示]がOFFに更新される

f:id:orico17:20210808213023p:plain

f:id:orico17:20210810221537p:plain

f:id:orico17:20210808213500p:plain

※「更新前バックアップ」についてはこちら

一括置換について

f:id:orico17:20210810213539p:plain

一覧部の[一括置換入力]ボタンをクリックすると一括置換入力画面が表示されます。
表示された一括置換入力画面に置換内容を入力して[置換]ボタンをクリックすると、一覧部で[Chk]列をONにしたものすべてが更新されます。

  • 複数の項目を一括で更新することはできない
  • 置換できる項目は[置換項目]で選べるもののみ
  • 正規表現置換可能 → 正規表現

一括置換 例:左ボーンの英名を「~_L」から「~_Left」に変更したい

1 . 検索入力部の[ボーン名(英)]に「_L」を入力し、[検索]をクリックする
2 . ボーン名(英)に「_L」を含むボーンの一覧が表示される

f:id:orico17:20210810214922p:plain

3 . 更新したい行の[Chk]列をチェックON状態にする

f:id:orico17:20210810215028p:plain

4 . 一括置換入力画面で上図のように入力し、[置換]をクリックする

f:id:orico17:20210810215209p:plain

5 . 「モデルを更新しました。」のポップアップが表示され、選択したボーンの[ボーン名(英)]]が「~Left」に更新される

f:id:orico17:20210808213023p:plain

f:id:orico17:20210810215614p:plain

f:id:orico17:20210810215629p:plain

※「更新前バックアップ」についてはこちら

オプション設定

BatchOperate.dll.configで設定できる機能のこと。

更新前バックアップ

一括更新や一括置換を実行した時に、更新直前のモデルデータを保存する機能です。
自分がうっかりバックアップし忘れるのでデフォルトで付けました。
不要な場合はBatchOperate.dll.configIsBackupvalue="true"value="false"にしてください。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- 検索 正規表現:true/false -->
    <add key="SearchRegexCheck" value="false" />
    <!-- 一括置換 正規表現:true/false -->
    <add key="ReplaceRegexCheck" value="false" />
    <!-- 更新前バックアップ:true/false -->
    <add key="IsBackup" value="false" />
  </appSettings>
</configuration>

検索 正規表現・一括置換 正規表現

検索入力部や一括置換入力画面に[正規表現]f:id:orico17:20210810222837p:plainというチェックボックスがありますが、これをデフォルトでONにするかOFFにするかを設定できます。
デフォルトではOFFにしているので、ONにしたい場合はBatchOperate.dll.configSearchRegexCheckもしくはReplaceRegexCheckvalue="false"value="true"にしてください。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- 検索 正規表現:true/false -->
    <add key="SearchRegexCheck" value="true" />
    <!-- 一括置換 正規表現:true/false -->
    <add key="ReplaceRegexCheck" value="true" />
    <!-- 更新前バックアップ:true/false -->
    <add key="IsBackup" value="true" />
  </appSettings>
</configuration>