Blender用PMXエクスポーター・マニフェストに名称変換用辞書を書く方法
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

Blender用PMXエクスポーター・マニフェストに名称変換用辞書を書く方法

2016-07-19 08:23
    左記の動画で配布中の拙作PMXエクスポーターに関し、マニフェストに名称変換用の辞書を書く方法を説明します。これは、元々トラブル対処法で記事にしていたのですが、長くなったのでこちらに移しました。


    ボーンやマテリアルなどの名称の変換

    名称変換の対象

    拙作エクスポーターは、ボーンなどの名称を変換してPMXにエクスポートすることができます。Blender上では英文字での名称を使い、PMXには日本語での標準的な名称をエクスポートしたい場合にこの機能を利用できます。

    名称変換の対象は次のとおりです。
    • マテリアル
    • ボーン
    • モーフ関連のプロパティ(シェイプキー・ドライバー変数用のオブジェクトプロパティ・ポーズ・UVマップ)
    • 剛体オブジェクト
    • 剛体コンストレイント・オブジェクト
    それらのうち、マテリアル名とモーフ関連のプロパティ名については、拙作エクスポーターの仕様で番号・材質フラブ・パネル指定などの特殊な書式を使えますが、名称変換の際にはそれらを無視します。それらはエクスポート時に取り除かれ、その後に名称変換が行われるからです。

    マニフェストファイル

    名称変換を行うには、設定ファイルに辞書を用意することが必要です。拙作エクスポーターの設定ファイルはマニフェストと呼んでおり、ファイル名は「manifest.txt」固定です。

    拙作エクスポーターは、次の場所からマニフェストを探します。
    1. blendファイル内
    2. エクスポート先フォルダ内
    最初にblendファイル内を探します。見つからなければ、PMXをエクスポートするフォルダ内を探します。

    blendファイル内にマニフェストを追加するには、Blenderのテキストエディターを使います(Shift + F11 でウィンドウを切り替えられます)。新規ファイルを追加して名称を「manifest.txt」とするか、外部のマニフェスト・ファイルを読み込んでください。

    外部ファイルのままでマニフェストを使用する場合は、文字コードに注意してください。Windows環境ではShift_JISにする必要があります

    セクション

    次に、マニフェストの簡単な例を示します。
    [DEFAULT]
    dict: DICTIONARY

    [男性モブ]
    name: 男性モブ
    info: MMD用男性モブモデル
    モデリング: すわとう

    [DICTIONARY]
    neck: 首
    head: 頭
    eye: 目
    右eye: 邪眼
    upper_arm: 腕

    マニフェストは、WindowsのINIファイルと同じようにセクションでグループ分けをします。セクション名は基本的に自由なのですが、二つだけ特殊な意味を持つセクションがあります。
    • 名前がPMXファイル名※のセクション…エクスポーターが最初に読み込むセクション
    • 名前がDEFAULTのセクション…キーの探索に失敗した場合に読み込むセクション
    ※拡張子は除きます。

    セクション名は半角ブラケットで囲み、[DEFAULT]のようにします。英大文字小文字を区別するので注意してください

    dictエントリ

    マニフェストに名称変換用の辞書を指定するには、dictというキーをもつエントリを追加します。エントリは、キーと値のペアで構成されます。書式は次のとおりです。
    dict: 辞書セクション名
    「:」の左にキーを、右に値を書きます。dictエントリはキーをdictとし、値を辞書セクション名とします。

    最初に示した例では、エクスポーターは、男性モブ.pmxをエクスポートする時に、[男性モブ]セクション内でキーを探索します。しかし、そこではdictキーは見つかりません。次に、[DEFAULT]セクション内でキーを探索します。そこではdictキーを見つけることができます。そしてdictエントリの指示に従って、[DICTIONARY]セクションを辞書セクションとして扱います。

    辞書セクションは一つだけ指定できます。このため、辞書はボーンもマテリアルも共通となり、個別に辞書を切り替えるということはできません。

    辞書セクション

    エクスポーターは、ボーンなどの名称が辞書セクション内のキーに一致する場合に、そのエントリの値で名称を変換します。

    上記のマニフェストの例のうち、辞書セクションの部分だけ再掲します。
    [DICTIONARY]
    neck: 首
    head: 頭
    eye: 目
    右eye: 邪眼
    upper_arm: 腕
    この例では五つのエントリがあります。「:」の左にキーを、右に値を書くのは、他のセクションのエントリと同じです。

    キーについては、(1)セクション内では重複できない、(2)英大文字小文字を区別しない、の2点に注意してください。

    従って、「hair」と「Hair」と「HAIR」は同じキーであり、これらのキーが辞書セクション内に同時に存在するとエクスポート時にエラーが発生します。

    ボーンと剛体オブジェクトの名称には、「upper_arm.L」「upper_arm.R」のように左右対称の名称や、「head_」のようにリーフボーン用の名称(拙作エクスポーターの独自仕様)があります。これらは、エクスポート・オプションの「Rename Bones」を有効にする場合、マニフェストに辞書がなくても、「左upper_arm」「head先」と変換されます。さらに辞書で名称変換するには、次のようにキーを指定します(青色部分)。
    [DICTIONARY]
    左upper_arm: 左目
    右upper_arm: 右目
    head: 頭
    head先: 頭先

    しかし、これでは辞書が大量に必要になって記述が大変です。そこで、名称のベース部分(上の例では「upper_arm」「head」)のキーがあれば、左右対称とリーフボーンもそれに応じた名称変換をするようにしました。上記の例は次のように簡略化できます。
    [DICTIONARY]
    upper_arm: 腕
    head: 頭
    これで「upper_arm.L」「upper_arm.R」「head」「head_」は「左腕」「右腕」「頭」「頭先」と変換されます。

    もちろん、簡略化せず、左右対称ボーンやリーフボーンを特別の名称に変換することもできます。
    [DICTIONARY]
    head: 頭
    head先: ハゲ
    eye: 目
    右eye: 邪眼
    この例では、「head」は「頭」と変換されますが、そのリーフボーンは「ハゲ」と変換されます。また「eye.L」は「左目」と変換されますが、「eye.R」は「邪眼」と変換されます。


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。