Dev:JA/Ref/Release Notes/2.73/Addons
Blender 2.73: アドオン
アドオンには次のような改良が行われています:Collada Importer への大幅な互換性の修正、FBX アドオンにアーマチュアのインポートとエクスポート用の先進的な処理・調整オプションの追加、Copy and Paste アドオンのバージョン2.0の実装など。
インポート/エクスポート
Collada Importer
ジョイントとボーン
Collada は Blender のようなボーンのコンセプトに対応していません。代わりにジョイントがあります。ジョイントは Blender のボーンのヘッドと等価です。
この所為で、Collada ファイルのインポート時、ボーンのテールは定義されていません。しかし連続するボーン(ボーンチェーン)では大抵の場合、親ボーンのテールは子ボーンのヘッドとつながっていて、ボーンをデータから再生成できるため、これはあまり大きな問題にはなりません。
未解決ボーンテール
しかし、リーフボーン(ボーンチェーンの終端のボーン)については、これはもはや真実ではなく、常に「未解決テール」となります。多くのケースでは、Collada Importer により提供されたジョイント変換行列により、ボーンの方向を継承できます。ただし、これによりボーンの回転を正しく維持しますが、長さは不定です。
私たちはこのボーンの長さの問題を、アーマチュア内の最も小さいボーンを探してリーフボーンの長さの目安とすることで解決しました。これはインポーターにより自動的に行われ、大半のケースにおいてこのアプローチで好都合な結果が得られます。
Collada が処理しない状況
時々リーフボーンが間違った変換行列で、または変換行列自体がない状態でエクスポートされることがあります。このような場合、すべてのリーフボーンはあらぬ方を向きます。私たちはリーフボーンを親ボーンの方向に整列すると、多くの場合、適切な結果になることを発見しました。そういうわけでこのインポーターに "Fix Leaf Bones(リーフボーンを修正)" オプションが用意されたのです!
接続・非接続ボーン
Collada はボーンについて親子関係のみ知っています。しかし、Blender では接続・非接続ボーンにも対応しています。これらのボーンがつながっている物とするのか、もしくはつながっていないままにするのかを判断するのは一筋縄ではいきません。
デフォルトでは Blender は親ボーンが単一の子ボーンのみ持っている場合のみ、二つのボーンをつなげます。これでは横の例のような残念な結果になってしまします。ここでの問題は、メインスケルトンの各ボーンが追加の子ボーンを一つ持っていることです(この場合、衝突ボリュームボーン)。よって上記の連結規則のおかげで、実際にはボーンは連結されず、非常に不便なリグになってしまいます。
私たちは実験的オプション、"Find Bone Chains(ボーンチェーンを検索)" を追加しました。このオプションは複数の子を持つ親であっても「最適な」ボーンのチェーンを探し出し、作成するのにどのボーンチェーンが最もふさわしいかを判断します。
このボーンチェーン検索は対称なリグに最適です。非対称なリグではほとんどうまくいきません。このボーンチェーン検索がオプションとして提供され、デフォルトで OFF になっているのはそのためです。
どこにあるの?
これらの新しいオプションは Import Collada(COLLADA ファイルのインポート)パネルにあります。
Fix Leaf Bones(リーフボーンを修正)
親ボーンに沿ってリーフボーンを向けます。
Find Bone Chains(ボーンチェーンを検索)
最もマッチする連結ボーンのチェーンを探します。
Minimum Chain Length(最短のチェーンの長さ)
あるボーンについてチェーンとみなす最低限の子ボーンチェーンのサイズをコントロールします。実際には私たちはデフォルト値を変更して、いい結果になった状況に出会ったことがありません。
(8d42c2f3ea4b3, e35b4bac0a2c5, f78490182efc5)
FBX アドオン
2.72でアドオンの「実験的」バージョンで利用可能だった機能が「安定版」にマージされ、実験版は削除されました。その大半は Blender と FBX のアーマチュアモデルの違いを解消するための、アーマチュアのインポート・エクスポートの詳細な処理・調整(ボーンの自動方向、リーフボーンの追加・削除など)の追加です。
また、
- インポート:最初にインポートされたアニメーション・アクションがそのオブジェクト(またはシェイプキー)にリンクされるように。b83c1181425)
Python API
- BMVert/Edge/FaceSeq.ensure_lookup_table が int の添字アクセス前に呼び出さないといけないように。(785b90d7efd0)
例:bm.verts.ensure_lookup_table(); v = bm.verts[i]
bm.edges.ensure_lookup_table(); e = bm.edges[i]
bm.faces.ensure_lookup_table(); f = bm.faces[i]
- Grease Pencil データがデフォルトでオブジェクト毎ではなく、シーンに作成されるように。ただし、グリースペンシルデータがオブジェクトレベルにある旧ファイルでは今もそちらが使用されます。これに対する対処方法は二つあります:
if ob: gpd = ob.grease_pencil; if not gpd: gpd = scene.grease_pencil
gpd = context.gpencil_data