Quantcast
Channel: 気まぐれブロマガ
Viewing all articles
Browse latest Browse all 56

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

$
0
0

左記の動画で配布中の拙作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」は「邪眼」と変換されます。



Viewing all articles
Browse latest Browse all 56

Trending Articles