skin_porter13 説明書

プラグイン名 スキンポーター13
プラグイン本体:Windows(32bit) skin_porter13.dll
プラグイン本体:Windows(64bit) skin_porter13_64.dll
プラグイン本体:(MacOSX) skin_porter13.shdplugin
SDKバージョン SDK13 (463042)
対応Shade Windows版Shade 13.2.3以上
バージョン V.13.0.2
プラグインタイプ マルチプラグイン、非常駐型
公開形態 フリー(無料)
リリース日 2014年9月1日

目次

  1. 概要
  2. インストール
  3. 使用方法
  4. 利用場面
  5. 注意事項
  6. 御使用にあたって
  7. ファイル仕様
  8. 作者情報
  9. 改定履歴

  1. 概要
  2. skin_porter13 形状スキンデータをエキスポート/インポートする Shade 13.2.3 以上用のプラグインです。
    本プラグインは、 Shade13 スキンに新たに付け加えられた頂点ブレンド型スキンに対応したスキンポーターです。 Shade13 以前のユーザの方は、旧版を利用願います。
    Shade スキン機能は、ジョイント変形時に形状を滑らかに変形させるための付加機能です。設定は、スキンウインドウだけで行い、一括設定とマニュアル設定が出来ますので、時間さえかければ任意の設定が可能です。本プラグインはそんなスキンの設定を多少とも楽にするためのツールです。このプラグインは形状のスキンをファイルに保存し、それを形状に再設定します。同じ名前で同じ構造の形状なら保存した形状のスキンを別の形状にも適用できます。
    ファイルは、バイナリテキストファイルかの選択ができます。

    その他のおまけ機能として、スキン変換マトリックスに関する幾つかの便利機能を内包しています。以下に機能を列記します。
    1. スキンエキスポート
      シーン形状スキンデータをファイルに保存します。
    2. スキンインポート
      保存されたスキンファイルからスキンデータを読み込み形状に設定します。
    3. スキンクリア
      選択された形状スキンを一括消去します。
    4. スキンから記憶ジョイントバインドクリア
      選択された形状スキンの中から、記憶されているジョイントバインドのみを消去します。
    5. 変換マトリックスリセット
      選択された形状の、変換マトリックスをリセットします。
    6. 形状変換マトリックスジョイント設定値リセット
      選択された範囲の形状の、変換マトリックス及び、ジョイントの変形状態を形状の現在の形状の位置を保存したまま、リセットします。
    7. 形状スキン修復
      選択された形状の、スキン内容をチェックし、異常を修復します。

  3. インストール
  4. skin_porter13.dll Shade plugins フォルダか、その中のフォルダにコピーして Shade を起動してするだけで使用可能になります。
    但し、 Shade 13 からは、
    Windows Vista/7 の場合は、マイ ドキュメント>Shade名>pluings/
    Mac OS X 10.8 以降の場合は、書類>Shade名>pluings/
    のような、ユーザ側のフォルダにも保存可能になりました。(というより、こちらの方が、システム領域をアクセスしなくていいので、標準になった考えた方がいいようです。 Windows の場合、32bit、64bit両方のプラグインを同じディレクトリ内に混在させても構いません。)

  5. 使用方法
  6. 3.1.スキンの保存

    ファイルメニューのエクスポート サブメニューからスキン保存 を選びます。するとファイル名指定のダイアログがでますので、保存する場所と名前を指定します。その後に以下のような保存時の設定を指定するダイアログが現れます。
    エキスポートダイアログ 設定をおこない、 OK ボタンを押すとスキンが保存されます
    (保存されたスキン情報ファイルはテキストデータの場合、巻末のファイル仕様になっています。)

    注)テキスト形式での保存の場合、パート/形状名に特殊文字(特に日本語コードの2バイト目以降)が含まれる場合に対してある程度の防護策を取ってますが、それが不可能な場合保存中にエラーメッセージを出します。その場合はバイナリ形式で保存してください。

    ファイルの拡張子は バイナリ、テキストの両方とも sskです。

    3.2.スキンの読み込み

    インポートしたい範囲を含んで形状を選択して ファイル メニューの インポート サブメニューから ポーズ読込 を選びます。すると入力ファイル指定ダイアログボックスが現れますので、ファイル名を指定して OKを押すとインポートモードを指定するダイアログが現れます。
    インポートモードダイアログ
    これらの設定をしてから OK を押すと選択した範囲の形状に限定してスキンを適用します。シーン全体に対して行いたい場合は、ルートパートを選択して実行してください。読み込み中は、プログレスバーが現れます。キャンセル ボタンを押すと読み込みを中断します。

    保存した範囲とインポート時に選択した範囲は厳密に一致している必要はありません。インポート時の選択範囲はエキスポート時の範囲より広く取ってあれば、その範囲内をサーチして設定します。

    保存した範囲をひとまとめにして同じ構造のパートがあれば、別シーンでも、同じスキンを設定できます。さらに同じシーン内でも、別の部分のパートスキンを保存し、別のパートへ同じスキンを設定するといった芸当もその二つの内部構造が同じなら可能です。
    バイナリファイルかテキストファイルかは、自動認識します。

    3.3.スキンクリア

    コンテキストメニュー(ブラウザ上でマウスの右ボタンをクリックしたとき現れるポップアップメニュー)
    コンテキストメニュー
    スキンクリア を選択すると下のようなダイアログが開きます。右側は、編集モードの時、左側は、オブジェクトモードの時です。
    スキンクリアメッセージ スキンクリアメッセージ
    最初のポイント位置の保持は、スキンの読み込みと同様に、スキンをクリアしたときに、ポイント位置が変化するような場合に位置をそのまま保持したいときにさせる指定です。わかりやすい話、ジョイント動かした状態で、その格好のままにしたい場合などにチェックを入れます。チェックを入れない場合ポイント位置の変化は、 Shade に任されます。もしその形状スキンタイプクラシックスキンで、且つワールド座標値への変換マトリックススキンを掛けているジョイントのワールド座標値への変換マトリックスと異なる場合は、形状が崩れる可能性が高いので、チェックをしておいた方がいいかもしれません。
    次の選択ポイントのみクリアするは、 Shade が、編集モードの場合に選択されたポイントのスキンのみクリアします。チェックが入ってない場合は、全てのポイントをクリアします。

    設定を行い、 OK を押すと対象のスキンが全てクリアされます。
    この機能は、スキンウインドウを開き、全てのスキンポイントを選択して消去ボタンを押すことでも可能ですが、この機能は、複数の形状を一括して選択して消去できるのが特長です。
    尚、全スキンをクリアした場合でも、スキンタイプは、プラグインの制限上、以前のままになります。

    3.4.スキン内ジョイントクリア

    コンテキストメニューの スキン内ジョイントクリア を選択すると使える機能です。
    スキンクリアメッセージ
    この機能を利用するには、予めクリアしたいジョイント Shade 記憶させておく必要があります。記憶させてない場合、ジョイントが取得できませんでした。というメッセージを出して中断します。ジョイント記憶された状態で、スキン内ジョイントクリアを実行すると、スキンクリアと同じダイアログが開きます。
    アイテムの意味は、スキンクリアと全く同じです。

    設定を行い、 OK を押すと対象のスキンの中で記憶で指定されたジョイントだけがクリアされます。

    3.5.変換マトリックスリセット

    コンテキストメニューの 変換マトリックスリセット を選択すると下図のような注意を促すメッセージボックスが開きます。
    注意メッセージ
    OK を押すと、選択している形状または、パート内の全ての形状変換マトリックスが、そのポイント位置を変えないで単位マトリックス化します。キャンセルを押すと何もしないで終わります。
    この機能は、 Shade の隠しコマンドに元々あった機能ですが、本プラグインは、以下の点が異なります。
    それは、予めリセットの対象外にしたい形状記憶させておくとリセットしない点です。
    また、リンク形状や、ボーンジョイントもリセットしません。後、注意事項としては、反転状態のマトリックスを持つボールジョイントや、そのスキンが掛けられている形状などをリセットすると、ちょっと困ったことになります。詳細は、注意事項を参照願います。

    3.6.拡張変換マトリックスリセット

    上記の変換マトリックスリセットは、安易な利用では問題を起こしたり、後処理が面倒な点があります。本機能は、従来の変換マトリックスリセットに加えて、ジョイントデフォルト値(リセット時の値)も、基本値に戻します。(つまり、拡大縮小ジョイント系は、 1.0 に、他の標準のジョイントは、 0.0 に、そしてボールジョイントや、ボーンジョイントは、クォータニオン (1,0,0,0) にします。また、それによってスキンが掛けれられている側の形状が変形しないように補正します。
    コンテキストメニュー拡張変換マトリックスリセットを選択すると Shade の状態及び、形状の選択状態のチェックとジョイントの変形状態をチェックします。
    まず、シーンが、シークエンスモードの場合は、下のような注意メッセージを出します。
    シークエンスモード注意メッセージ
    ここで、キャンセルを押せば中断しますが、 OK を押すと強行します。次に、選択された形状に掛かっているスキンジョイントが、選択範囲を超えていると下図のようなメッセージを出して実行を中断します。
    範囲オーバー注意メッセージ
    それ以外の場合、選択された範囲の状態に応じて、ダイアログが現れます。以下の例は、全てのアイテムが現れた場合の例です。(状況から見て確認の必要の無いアイテムは表示されません。)
    拡張マトリックスダイアログ
    アイテムを設定して OK を押すと、変換マトリックスリセット(ボーンジョイントリンク形状は、リセットしません。)とジョイントのリセット値を標準(ボールジョイントの場合は、(1,0,0,0)及び、オフセットを0 化、回転ジョイントおよび移動ジョイントの場合は、 0 拡大縮小ジョイント及び、均等拡大縮小ジョイントの場合は、 1 )にしてから、ジョイントをリセットします。その結果形状の位置が変化した場合、以前のワールド位置に戻します。マトリックスのリセットで矛盾を生じる可能性があるリンク形状とそのリンク元形状の場合や特殊パートなどは、自動的にリセット対象から除かれます。同時に私提供の拡張エイムコンストレインツジョイントを処理の間保留させるます。
    尚、ジョイントが動いてなく、トップのパート変換マトリックスが単位マトリックスの場合は、一々確認する必要が無いので、ダイアログを出さずに直ぐにリセットを実行します。

    3.7.スキン修復

    ツール メニューの形状編集の中のプラグインの部分にあるスキン修復は、現在のシーン内のスキンの異常を修復します。これは、私が以前ジョイント操作時に意図しない変形に悩まされたときに分かった起こりうるスキンの設定異常を修復します。基本的には、スキンバインド登録順とジョイントの親子関係の不整合、同じスキンの二重登録、そして、ルートパートに対するスキン設定です。プラグインを実行するとシーン内をチェックし、異常な部分は、メッセージウインドウに報告し、修復します。バインド順は、順番を入れ替え、二重登録は、一方を削除します。ルートパートスキンは削除します。(但し、これらの問題は、クラシックスキン特有の問題なので、頂点ブレンドスキンでは、利用する必要はないと思われます。

  7. 利用場面
  8. 注意事項
  9. 御使用にあたって
  10. ファイル仕様
  11. 下の := はその左項を右項の形式であると定義している意味です。
    下記の太文字は、その文字列そのものであるという意味です。文字列の実際の文字は C言語のそれに準じます。
    ブランクはこの定義上の単なる区切りです。
    ()で括られた文字列はその意味の説明です。
    イタリック体の文字列は識別子と見なしてください。
    ... は、同様な形式が指定数続くという意味です。
    その他は正規表現に準じます。

    ファイル  :=  ヘッダ部 本体部 フッタ部

    ヘッダ部 :=    <skinfile>

    フッタ部   :=   <end>

    本体部   :=     { 形状タイプ : 形状名 : スキンポイント数 :\n 各スキン情報 子の本体部 }

    子の本体部  := 本体部 (本体部と同じ構造のその子のパートの定義)

    形状タイプ    := [part| surface | rotator | slider | scale | uniscale | light_joint | path | morph | custom | ball | camera | link | light | line | sphere | disk | polygon ]

    形状名    :=   (形状名の文字列です。)

    スキンポイント数 :=(スキンポイント数の整数値表現したもの)

    各スキン情報 := スキンポイント番号 : スキン数 : ウエイト : 対象のジョイント名 : ... \n ...

    スキンポイント番号   :=(その形状内のスキン対象のポイントの番号を整数値表現したもの)

    スキン数    :=     (そのポイントにかかっているスキンの番号を整数値表現したもの)

    ウエイト   :=          (スキンのウエイト値を実数値表現したもの)

    スキン対象のジョイント名   := [フルパス形式のジョイント名 | ジョイント名 ]

    フルパス形式のジョイント名   := 上位名 ターミネータ 上位名 ターミネータ ... ターミネータ ジョイント名

    上位名   :=            (対象のジョイントの上位のパートの形状名)

    ジョイント名   :=       (対象のジョイントの形状名)

    ターミネータ   :=  [ / | : | \ | " | ' ] (その時々に適切なターミネータが選ばれる)

  12. 作者情報
  13. 改版履歴