2016-05-20 3 views
1

私はUnityで開発しているゲームのための100以上のオブジェクトを含むAssets.blendというBlenderファイルを持っています。 私はこれまでに修正を加えたときに、各ルートオブジェクトを別々のfbxファイルとしてエクスポートするスクリプトを実行します。 しかし、私はどのオブジェクトが更新されたかを検出する方法がないため、1つのオブジェクトを作成/変更したにもかかわらず、すべてのオブジェクトを再エクスポートする必要がある度に毎回返します。 スクリプトの実行に要する時間は約10秒ですUnityは変更を検出し、変更されていないプリファブを処理するのに30秒以上を費やします。より効率的なエクスポートスクリプトのためのBlenderオブジェクトの変更を検出しました

最後のエクスポート以降にどのオブジェクトが変更されたかを知るためにスクリプトを改善するにはどうすればよいですか? オブジェクトやメッシュのdate_modified変数はありません。

+0

Mayaを使用してください。問題が解決しました! Mayaからシーンを更新することができます。スクリプトなどはありません。すべてのオブジェクトはワンクリックで更新されます。 – Programmer

+0

yup get Maya。オープンソースはsuckです – Fattie

+1

Blenderは無料で、Mayaは無料です。重要なインディーズ開発者のために。 – cjmarsh

答えて

0

Blenderは、オブジェクトの変更のタイムスタンプを記録しません。私の最初の提案は、各オブジェクトをそれ自身のブレンドファイル、または各ファイルのアイテムのより小さなグループにすることです。

もう1つの方法は、すべてのオブジェクトをエクスポートする代わりに、エクスポートスクリプトを変更して、選択したオブジェクトをエクスポートすることです。 1つまたは2つの項目を変更したら、変更した項目を選択して、それらの項目だけをエクスポートします。

for obj in bpy.context.selected_objects: 
    bpy.ops.export_scene.fbx(obj.name+'.fbx') 
0

別のアプローチは、(例えば、カスタムプロパティとして、各オブジェクト内の)どこかCRCのような(それはあなたが頻繁に変更が何であれ、メッシュ形状、材料、)意味のある値に署名し、店を計算することです。
最後のエクスポート後に署名が変更されなかったオブジェクトを簡単にスキップできます。

関連する問題