生成されるファイル
このページを読むと このツールがプロジェクトに何を作るのか、どの場合に既存ファイルを更新し、どの場合に新しいファイルを作るのか、そして他人のアセットを上書きしない理由がわかります。
3 種類
| パス | いつ | バージョン管理 |
|---|---|---|
<元の名前>_Edit.asset | メッシュ保存 | コミットする |
<元の名前>_Part….asset | メッシュ保存 のときに切り離したパーツがある場合 | コミットする |
Library/EmeAutoSave/ | リロード、Play、ウィンドウを閉じるなどで編集内容を保持する場合 | コミットしない |
最初の 2 つは、元のメッシュアセットの隣に作られます。3 つ目は Library/ の下にあるため、Unity はキャッシュとして扱い、バージョン管理からも除外されます。
_Edit.asset
メッシュ保存 が作る最終的なメッシュアセットです。作られた直後に、レンダラーがこのアセットを使うようになります。
含まれるもの: 頂点、法線、接線、UV0~UV7、カラー、サブメッシュとマテリアルの対応、bindpose、ボーンウェイト(可変ボーンウェイトを含む)、ブレンドシェイプの全フレーム。
保存の過程で、どのトライアングルからも使われていない頂点は 1 回整理されます。→ メッシュ保存の内部動作
アセット内のメッシュオブジェクトの名前は、ファイル名に合わせて設定されます。
0.1.x が作った <元の名前>_Edit.asset は 1.0 が作った出力としては扱いません。1.0 で同じメッシュをもう一度 メッシュ保存 しても上書きされず、<元の名前>_Edit 1.asset を新しく作り、レンダラーは新しいファイルを使います。
_Part.asset
選択・移動 でパーツを切り離してから メッシュ保存 すると、パーツごとに _Part アセットが作られます。各パーツは新しい GameObject としてシーンに現れ、そのレンダラーがこのアセットを使います。
保存の途中で失敗した場合は、作りかけの _Part.asset が削除され、元のメッシュはそのまま残ります。
出所の記録(provenance)と owner
出力されたアセットには、どこから作られたかを記録した情報が保存されます。この記録が、次の 2 つを決めます。
- 再び
メッシュ保存したときに、同じファイルを更新するか、新しいファイルを作るか - 同じ名前の他人のアセットを上書きしないこと
記録には、元のメッシュの GUID と、レンダラーの owner トークンが含まれます。
| 状況 | 結果 |
|---|---|
同じ元のメッシュ、同じレンダラーで再び メッシュ保存 | 既存の _Edit.asset を、GUID を保ったまま更新 |
| 同じ元のメッシュを使う別のレンダラー | 別の出力ファイルを作ります |
| 同じ名前の他人のアセットがすでにある | 上書きせず、固有のパスを新しく作ります |
GUID が保たれることが重要です。プレハブ、アニメーション、ほかのシーンがそのメッシュを参照していても、参照が切れません。
このツールで作った出力アセットを使うレンダラーを読み込み直して作業を続けると、その出力が更新されます。同じアセットを使っているほかの読み込み済みのレンダラーも、新しいデータに同期されます。
owner トークンは、レンダラーのグローバル ID から作られます。シーンが一度も保存されていないと、この ID が存在しないため、ウィンドウがその旨を通知します。同じ元のメッシュを使うレンダラーが複数ある場合は、作業を始める前にシーンを 1 回保存してください。
Library/EmeAutoSave/
編集中の Work Mesh を保持しておくフォルダーです。ドメインのリロード、Play モードへの移行、ウィンドウを閉じるとき、シーンを閉じるとき、Unity の終了時に、ここに保存されます。編集モードに戻るか、ウィンドウやシーンを開き直すと復元されます。
これは作業の成果物ではなく、安全のための仕組みです。最終的な保存は、いつも メッシュ保存 です。→ セッションと元に戻す
保持に失敗した場合は、Play モードへの移行と終了が止まり、理由がステータス行に表示されます。ファイルは削除されないので、原因を確認できます。
保存を妨げるもの
無効なデータは、ファイルに書き出される前に取り除かれます。
- NaN や Infinity の座標
- トポロジーの不一致
- ウェイト配列の長さの不一致
保存に失敗したセッションは閉じられず残ります。原因を直したあと、もう一度 メッシュ保存 できます。
削除してよいもの
| ファイル | 削除してよいか |
|---|---|
_Edit.asset | レンダラーが使っている間は削除できません。元のメッシュに戻してから削除してください |
_Part.asset | そのパーツの GameObject を削除したあとならよいです |
Library/EmeAutoSave/ | いつでも削除できます。復元されるはずだったセッションがなくなるだけです |