skin_porter 説明書

プラグイン名 skin_porter
プラグイン本体:Windows(32bit) skin_porter.dll
プラグイン本体:Windows(64bit) skin_porter64.dll
プラグイン本体:(MacOSX) skin_porter.shdplugin
SDKバージョン REV10 (430286)
対応Shade Windows版Shade 10.5.以上
バージョン V.10.0.0
プラグインタイプ マルチプラグイン、非常駐型
公開形態 フリー(無料)
リリース日 2010年2月4日

目次

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

  1. 概要
  2. skin_porter は形状のスキンデータをエキスポート/インポートする Shade 10 用のプラグインです。
    その他のおまけ機能として、選択された形状のスキンのクリア機能と、選択された形状のスキンの中から記憶されているジョイントバインドのみを消去する機能と、変換マトリックスのリセットが付加されてます。
    Shade スキン機能はスキンウインドウで一括設定出来る点は便利ですが、まだ発展途上の感は拭えません。特にマニュアルでの設定は根気のいる仕事です。本プラグインはそのスキンの設定を多少とも楽にするためのツールです。このプラグインは形状のスキンをファイルに保存し、それを形状に再設定します。同じ名前で同じ構造の形状なら保存した形状のスキンを別の形状にも適用できます。
    ファイルは、バイナリテキストファイルかの選択ができます。

    スキンクリアは選択した形状の選択した要素のスキンを一括消去します。スキン保存後に形状を再編集する時などで使えます。編集後、スキンを再読み込みすれば、以前のスキン値が再設定できます。

    ジョイントスキンクリアは、スキンが掛かる側でなく、掛ける側のジョイントを選択して実行すると、シーン内のそのジョイントスキンがバインドされている全ての形状から、そのジョイントスキンだけ消去します。ジョイントを削除するとき、スキンが掛かっていてそのジョイントと形状が異なる変換マトリックスであったり、ジョイントが動かされている場合などでは、削除直後に形状が変形します。(場合によっては、表示上は変わらず、保存後に再読み込みしたときに始めて変形していることが判ったりして悔しい思いをすることがあります。)その状態のままで、ジョイントスキンを取り除きたい場合に、現在の位置を保持する指定で、ジョイントスキンを外すことができます。

    変換マトリックスリセットは選択した形状およびその下の形状の変換マトリックスをワールド座標でのポイント位置を変更せずに単位マトリックスに変換します。

  3. インストール
  4. skin_porter.dllShadepluginsフォルダか、その中のフォルダにコピーして Shade を起動するだけで使用可能になります。

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

    ファイルメニューのエクスポート サブメニューからスキン保存 を選びます。するとファイル名指定のダイアログがでますので、保存する場所と名前を指定します。その後以下のような保存時の設定を指定するダイアログが現れます。
    エキスポートダイアログ最初の範囲:では、保存する対象を現時点で選択されている形状か、形状かを指定します。選択形状を選んだ場合、その選択範囲にスキンを掛けているジョイントを含んでいる必要は有りません。

    次の形式:では、保存をバイナリ形式かテキスト形式を指定します。テキスト形式のメリットは、後でファイルをテキストエディタ等で編集して修正したり出来ます。一方バイナリ形式のメリットは、形状名の制限が無い点です。テキストの場合、場合によっては特殊文字コードの形状名の場合うまく保存できない場合があります。

    次のジョイント名:フルパス保存は、チェックを入れるとジョイント名がその親のパートも含めて保存されます。これを利用すると名前が同じジョイント名が有っても、インポート時にそのシーンの構造を経由して正しくスキンを掛けられる可能性が高まります。但し、シーン内で全てのジョイント名をユニークな名前で作られた場合は、これを指定する必要は有りません。

    最後の形状の特殊文字を削除して保存を指定すると、形状の頭に付加された # | 等の特殊文字を予め取り除いて保存します。しかしインポート時にこの特殊文字を検索時に無視させることが出来ますので、あまり重要性は有りません。

    設定をおこない、OKボタンを押すとスキンが保存されます
    (保存されたスキン情報ファイルはテキストデータの場合、巻末のファイル仕様になっています。)

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

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

    3.2.スキンの読み込み

    インポートしたい範囲を含んで形状を選択して ファイル メニューの インポート サブメニューから ポーズ読込 を選びます。すると入力ファイル指定ダイアログボックスが現れますので、ファイル名を指定して OKを押すとインポートモードを指定するダイアログが現れます。
    インポートモードダイアログ
    最初の適用は、スキンインポートする形状の既存のスキンデータをクリアして新規設定する 新規設定と以前のスキンをそのままに重ね書きする 追加のいずれかを選択します。元々スキンがないと判っている形状の場合は、追加の方を選んだ方が多少高速です。

    次のポイント位置を保持は、スキンを掛けたとき掛けられる側の形状のポイントのワールド位置をそのままに保持するかを指定します。掛ける側のジョイントが既に動いている場合など、自然にその変形に追従させたい場合などは、チェックを外し、とにかくその時点の形状の形を崩したくない場合は、チェックします。

    次の特殊文字を無視は、チェックを入れるとジョイント名の先頭の特殊文字を無視して比較します。以前保存したスキンを新しいシーンに取り込もうとして、以前の形状名の頭に特殊文字を付けていたり、外していたりした場合などに指定すれば、以前のスキンファイルを再利用できます。

    次のスキン元ジョイントは選択形状外は、スキンファイル内にあるスキンを掛ける側のジョイントは、その時点で選択しているパートの中に無い場合に指定します。チェックを入れるとジョイントは、シーン全体から探します。この利用面は、特定の1形状のみスキンを保存し、その形状のみ選択してスキンを掛けるような使い方をする場合などに利用します。また、逆にチェックを外して、ジョイント部分まで選択して実行すると、ジョイントの検索をその範囲に限定しますので、複数の同じ構造で同じ名前のジョイント構造がある場合などで利用できます。

    饒舌な経過メッセージにチェックを入れると、形状にスキンを掛ける経過及び、形状及びジョイントの検索エラーをメッセージウインドウに表示します。実行時間は、かなり遅くなりますが、インポートしたのに意図したスキンが掛かってないような場合の原因究明に使えます

    これらの設定をしてから OKを押すと選択した範囲の形状に限定してスキンを適用します。シーン全体に対して行いたい場合は、ルートパートを選択して実行してください。読み込み中は、プログレスバーが現れます。キャンセル ボタンを押すと読み込みを中断します。

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

    保存した範囲をひとまとめにして同じ構造のパートがあれば、別シーンでも、同じスキンを設定できます。さらに同じシーン内でも、別の部分のパートスキンを保存し、別のパートへ同じスキンを設定するといった芸当もその二つの内部構造が同じなら可能です。

    バイナリファイルかテキストファイルかは、自動認識します。

    3.3.スキンクリア

    コンテキストメニュー(ブラウザ上でマウスの右ボタンをクリックしたとき現れるポップアップメニュー)の スキンクリア を選択すると下のようなダイアログが開きます。
    スキンクリアメッセージ
    最初のポイント位置の保持は、スキンの読み込みと同様に、スキンをクリアしたときに、ポイント位置が変化するような場合に位置を保持させる指定です。チェックを入れない場合ポイント位置の変化は、 Shade に任されます。

    次の選択ポイントのみクリアするは、 Shade が、編集モードの場合に選択されたポイントのスキンのみクリアします。チェックが入ってない場合は、全てのポイントをクリアします。

    設定を行い、 OK を押すと対象のスキンが全てクリアされます。

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

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

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

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

    コンテキストメニューの 変換マトリックスリセット を選択すると注意を促すメッセージボックスが開きます。
    OK を押すと、選択している形状または、パート内の全ての形状変換マトリックスが、そのポイント位置を変えないで単位マトリックス化します。キャンセルを押すと何もしないで終わります。
    マトリックスのリセットが矛盾を生じる可能性がある場合があります。例えば、お互いに対称な関係にあるリンク形状とそのリンク元形状や、反転状態のマトリックスを持つジョイントや、そのスキンが掛けられている形状などです。
    これらの形状が、リセット範囲に含まれている場合、予め Shade 記憶をさせておくと、その部分はリセットしません。

  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. 改版履歴