*** ElementSaver ver0.217b *** 作者:きのうのひと ・はじめに  このソフトはおちゃっこ氏作のモーション作成ツール "RokDeBone2" 及び 3Dゲーム作成プラグイン "Easy3DforHSP" ユーザー向けの補助ツールです。 (おちゃっこLAB http://www5d.biglobe.ne.jp/~ochikko)  各パーツに影響しているボーンの確認、影響度のパーツ単位保存及び読み 込み(独自形式)、また影響ボーンの置き換えを行うことができます。  ボーンの枝分かれなどにより変形に必要ないボーンが生じ、これが影響度の デフォルト設定時に使われる場合がありますが、これを適切に置き換えると各 パーツに影響するボーン数が削減できます。しかし、間違った置き換えをして 保存するともとに戻せないため、必ず別名で保存してください。  ちなみに作者は完成当日のテスト中、早くも指定を間違えました。大量に ボーンがあるとかなり見づらいので油断は禁物です。  影響度の保存、読み込み機能はまだ検証不足な状態です。大事なデータを 上書き保存しないようにしてください。ほとんど全てのケースにおいて、 RokDeBone2 の抽出読み込み機能で事足りるはずです。  特定パーツだけ影響度設定をやり直したい場合や、一部のパーツを分離して 別のモデルにしたくなったときなど、影響度のバックアップ、移植を想定して 用意されています。  あまり親切なツールではありません。ある程度 RokDeBone2 を使いこなして いる人をユーザーとして想定しています。  最低限の機能だけで構成されています。HSP3.1向けのソースコードが同梱 されていますので、必要に応じてカスタマイズしてお使いください。ソース コードの流用、転用等ももちろん問題ありません。 ・基本的な使い方  「モデル読み込み」ボタンを押し、sig モデルを選択し読み込みます。  無事データの読み込みと分析がすむと、左側のボックスにパーツ一覧が、 右側に影響ボーン一覧が表示されます。左側ボックスでパーツを選んでから 右の「選択パーツのみ」ボタンを押すとそのパーツに影響しているボーンを 確認することが出来ます。  モデルが読み込まれている状態では以下の3つの機能が使用できます。 「影響度保存」 「元モデル読み込み」/「影響度読み込み」 「ボーン置き換え」 ・「影響度保存」  保存モードでは左右にボックスが表示されます。  影響度保存したいパーツを左側ボックスから選んで「追加」ボタンを押し 選択すると右側ボックスに表示されます。  選択解除したいときは右側ボックスで選択して「削除」ボタンを押してく ださい。  選び終わったら「影響度保存」を押すと簡易分析を行い保存されるサイズ を表示します。問題なければ「名前をつけて保存」を押してください。  "作業が終了しました" という表示が出たら処理は終了しています。「戻る」 ボタンでパーツ選択に戻りますが、そのままウィンドウを閉じても構いません。 ・「元モデル読み込み」/「影響度読み込み」  .sig 、または .ied(InfElemData)ファイルを選択し読み込みに成功する と、ファイルに記録されているパーツ単位影響ボーン情報が表示され、通常 モードと同様各パーツの影響ボーンが確認できます。  読み込み元としては sig を使ったほうが楽ですが、.ied ファイルはDLLの バージョンを問わないという特徴があります。新しいバージョンの sig から 古いsig へ影響度を移植できるよう準備したものです。  さらに「影響度読み込み」を押すと適用パーツの選択画面に進みます。 左側で sig モデル、右側で読み込み元データの処理対象パーツを選びます。 RokDeBone2 の抽出読み込みとは違い、名前の違うパーツからも影響度を読み 込むようになっています。同じ名前のパーツだけに読み込みたい場合、ひとつ ずつ選択して読み込むことを繰り返す必要があります。  「ボーン設定」を押すとボーンマッチングモードに入ります。 初期状態では同じ名前のボーンの影響度情報として読み込むようになって いますが変更することができます。  パーツ、ボーンの設定画面から「読み込み」を押すと読み込み方法の選択 へ進みます。 「簡易マッチング」では、位置が一致する頂点にだけ影響度を読み込みます。 バックアップしておいた影響度を書き戻す場合など、頂点情報が同一なとき 高速に処理できます。 また、位置が一致しない頂点の影響度は変化させたくない場合に利用できます。 「フィット読み込み」は RokDeBone2 の抽出読み込みに類似した機能です。 距離 100.0 以下で、頂点位置が一番近いデータから影響度を読み込みます。 頂点数に応じて処理時間が増大します。  方法を選択してボタンを押すと sig 保存のダイアログが表示されます。  処理後はこの名前で保存されますが、何が起こるかわからないので可能な限り 別名で保存するようにしてください。  "作業が終了しました" という表示が出たら処理は終了しています。「戻る」 ボタンでパーツ選択に戻りますが、そのままウィンドウを閉じても構いません。  概算ファイルサイズや概算処理頂点数は本当に概算なのであまり気にしない でください。特に概算処理頂点数は、同じ位置の頂点が複数存在する場合全体 の頂点数を超えることがあります。 ・「ボーン置き換え」  「ボーン置き換え」を押すとボーンマッチングモードに入ります。 左ボックスで替えたい対応関係を、右ボックスで代わりに使いたいボーンを 選び変更します。ただし一番親のボーンなど、一部のボーンは置き換えが できず設定が無視されます。  「パーツ設定」を押すと対象となるパーツを選択することができます。初期 状態では全てのパーツが対象となります。  「マクロ読み込み」「マクロ保存」を押すと、現在設定されている置き換え (変更部分)の読み込み、保存を行うことが出来ます。これはボーンの名前で 判断されモデルに依存しないほか、存在しないボーンの名前があっても無視 されるだけで正常に処理されるため、何度も置き換える場合に有効です。  さらに「ボーン置き換え」を押すと確認画面が表示されます。問題なければ 「名前をつけて保存」を押してください。  "作業が終了しました" という表示が出たら処理は終了しています。このとき "影響ボーン数変化" ボックスが表示されます。  「戻る」ボタンでボーンマッチングに戻りますが、そのままウィンドウを閉 じても構いません。 ・既知の問題点  対称コピーはX軸に関してしかテストされていません。また作業後必ず RokDeBone2 上で「対称ペイント更新」を使用する必要があります。  「距離と角度」及び「距離のみ」はコピー困難なため直接数値指定に変換 されます。変換されても変形具合は変わらないと思うのですが謎です。 頂点位置を RokDeBone2 上で調整するような場合は差が生じると思われます。  フィット変換のアルゴリズムは全く最適化されていないため、非常に時間が かかるおそれがあります。「応答なし」などになるかもしれませんので、駄目 そうだったら適当にあきらめましょう。応答なしになっても処理は続いている はずですが、終わる保障はありません。  参考として、うちの環境では 2000 頂点で3秒程度かかります。処理時間は 頂点数の2乗で増えるので、8000 頂点で48秒、 20000 頂点だと300秒程 かかる計算になります。  mikoto 形式データは考慮されていません。  パーツやボーン名に日本語(全角文字)が含まれている場合は考慮されて いません。  影響度の合計は必ず正規化されます。  置き換えの結果ひとつの頂点に影響するボーンの数が減少する場合ダミー データを付加しますが、影響するボーンが3つ以上ある場合正常に変換でき ないおそれがあります。1つも無くなる場合にたいしてはダミーデータにより ある程度保護されますが、置き換えにより使用されなくなるボーンが多いと 適切なダミーが選択できず、やはり問題が生じます。  1つのモデルに同名ジョイントが複数ある場合、ジョイントが無効になって いる場合、インポートなどにより特殊なツリー構造になっている場合は検証 されていません。  RokDeBone2 の仕様変更があるとモデル、モーション読み込みが出来なくなる 可能性があります。そのような場合、最新の e3dhsp3.dll を入手して置き換え れば使用できるかもしれません。 ・細かいことなど  影響ボーンの置き換えは頂点変換のルールを理解して行わないと望ましい結果 が得られません。毎回確認画面にも出ますが、むやみにモデルデータを上書き保存 しないようにして下さい。  ボーン置き換えのマクロはただのテキストファイルなので簡単に編集が可能です。 作成したファイルを開くとわかりますが、変換前ボーン、変換後ボーンの順番で 単純に並んでいるだけです(必ず改行が必要)。  tempmot.quaが無いとエラー終了するので削除しないでください。削除してしま った場合、適当なモデルでキーフレームの無いモーションを作成し、tempmot.qua と名付けて保存すればそれで代わりになります。 ボーンの位置を得て影響度読み込みの補助に使う予定で、そのために用意したの ですがまだボーン位置は使ってません。でも tempmot.qua は必要です。 ・マニアックな使い方  ElementSaver は「ひとつのパーツから複数パーツへ」「複数パーツからひとつ のパーツへ」影響度を移植出来る(理論上は)事が特徴となっています。当然、 名前が一致しなくても影響度をコピー出来ます。  ディスプレイスイッチやテクスチャの関係でパーツを分離したくなったときなど 、とりあえず元の sig ファイルを残しておき、パーツを分離した mqo に影響度を 移植することができます。結合したい場合も同様に利用できます。  また、名前が一致しなくてもよいことから、たとえば体にぴったりした服を作る 場合、体の影響度を一度保存して服へ読み込むことで、同じような設定を2回行わ なくても良くなります。ボーン変形の都合で必ずしも同じ影響度が良いとは限りま せんが、いくらかは助けになると思います。  他の特徴として、簡易マッチングでは同じ位置の頂点にだけ影響度を読み込む ようになっています。これを利用して、パーツとパーツの継ぎ目の影響度を一致 させることが出来ます。  ここで紹介した使い方は基本的に「バグがなければ理論上できる」という話に すぎません。できれば一度簡単なテストをしてみてから使用することをおすすめ します。  くどいくらいに別名で保存しろというのは伊達ではありません。ええ。 ・更新履歴  <ver0.217b> ( 2009/08/02 )  ・ノンスキン設定が数値直接指定に変換されてしまうバグを修正  ・簡易マッチングの処理方法を変更。ver3系で同位置頂点が多いときに生じる  問題に対処  ・処理対象パーツが選択した通り反映されないバグを改善、ただしまだ若干  不安が残る  <ver0.215b> ( 2009/03/20 )  ・計算方法「距離と角度」「距離のみ」で生じる問題に一応対処  ・元データとしてsigを利用できるようにした  ・読み込み時のエラーチェックを強化。これにより速度が落ちるので、高速化  のため多少小細工  <ver0.205b> ( 2009/03/17 )  ・フィット読み込みを多少高速化  ・複数パーツから読み込む場合に上手くパーツを除外できないバグと、概算処理  頂点数の分母が最後のパーツのものだけになるバグを修正  <ver0.199b> ( 2009/03/14 )  ・フィット読み込みを実装  ・影響ボーンの無い頂点が出来るバグについてさらに改善した  <ver0.198b> ( 2009/02/28 )  ・置き換えダミーの選択ルールを少し変更、影響ボーンの無い頂点が出来るバグに  ついてやや改善した  ・ボーン置き換えにおいて対象となるパーツを選択できるようにした  ・ボーン置き換えのマクロ機能を実装  <ver0.19a> ( 2009/01/31 )  ・最初の公開バージョン。