v2.0.0
Turian 2.0.0 はサブメッシュごとのマテリアルを導入します。インポートされ た glTF/GLB モデルは、現在ではすべてのメッシュとプリミティブをクックしま す(1.x では最初のメッシュの最初のプリミティブのみを保持していました)。各 サブメッシュは自分自身のマテリアルをバインドできます。
変更内容
- クック済みメッシュ形式(TMSH v2) — メッシュアセットにサブメッシュテ ーブル(プリミティブごとのインデックス範囲とマテリアルスロット)が追加 されました。
- シーンファイル — メッシュレンダラーのフィールド
material_guid(単 一の文字列)がmaterial_guids(配列)になりました。 MeshRendererComponent— 単一のmaterialフィールドが、最大32エン トリのmaterials配列とmaterial_countになり、位置でバインドされま す:materials[i]がサブメッシュiを描画します。- インポート動作 — 複数メッシュ・複数プリミティブの glTF および GLB フ ァイルは完全にインポートされます。OBJ インポートは変更なし(単一サブメ ッシュ)。
影響を受けるもの
メッシュレンダラーにマテリアルを割り当てるシーンを持つプロジェクト、および
MeshRendererComponent.material を読み書きするゲームコード。
アップグレード手順
1. 2.0.0 へアップデートする
2.0.0 SDK をダ ウンロードします。SDK は自己完結型なので、移行中は 1.x の SDK をそのまま並 行してインストールしておけます(リリースポリシー を参照)。
2. アセットを再クックさせる
インポーターのバージョンが上がったことで、インポート済みのすべてのモデル は自動的に新しいメッシュ形式へ再クックされます。何もする必要はありません ——モデルの多いプロジェクトでは、最初のプロジェクトオープン(または最初の CLI ビルド)に時間がかかることを想定しておいてください。
3. シーンファイルを移行する
古いシーンは引き続き読み込めます:レガシーな material_guid フィールドは
メモリ上で変換され、警告が記録されます。プロジェクト全体でこの変換を一括
で永続化するには:
turian-cli migrate path/to/project
このコマンドはすべてのシーンをスキャンし、レガシーフィールドをまだ使用し ているものだけを書き換え、変更内容を報告します。生成された差分をコミット してください。(Studio でシーンを再保存しても移行されます——CLI はその一括 版です。)
4. ゲームコードを更新する
レンダラーのマテリアルを直接割り当てたり読み取ったりしていたコードの場合:
// 1.x
renderer.material = my_material_ref;
// 2.0.0
renderer.materials[0] = my_material_ref;
renderer.material_count = 1;
materials[i] はメッシュのサブメッシュ i にバインドされます。サブメッシ
ュテーブルを持たないメッシュ(プロシージャルプリミティブ、OBJ インポート)
は、すべて materials[0] で描画されます。未設定または範囲外のスロットはデ
フォルトマテリアルにフォールバックします。
5. インポートしたモデルを使うシーンを確認する
これまで複数のメッシュやプリミティブを含んでいたモデルは、1.x では黙って 切り詰められていました——再クック後は完全に描画されます。そのようなモデ ルを使ったシーンを見直してください:これまで見えていなかったジオメトリが 表示されるようになる可能性があり、そのマテリアルスロットは Inspector で割 り当てられます。
その後にダウングレードしないこと
2.0.0 で保存されたシーンは material_guids を保存しますが、1.x はこれを読
み取りません——移行済みのプロジェクトを古いバージョンで開いて保存すると、マ
テリアルの割り当てが黙って失われます。プロジェクトの移行は一方向に一度だ
け行ってください。先に試したい場合はブランチ上で行ってください。