2013-01-03 90 views
3

(可能寫得不是很好)問題是:在通過bpy.import_scene.obj函數加載後,有沒有什麼辦法讓對象數據正確?如何標記最後導入的* obj在攪拌器中

我的意思是當我用這個函數導入一個obj文件時,我需要爲它做一些更多的轉換。當我通過名稱'Mesh'(導入後對象的默認名稱)選擇一個對象時,所有這些函數都適用於我場景中名爲'Mesh'的其他對象。我嘗試從場景中的對象列表中獲取最後一個對象,但它們按字母順序排列,所以效果不佳。當我試圖改變object.name並應用下一個函數時,它僅適用於一個。導入對象的所有早期實例都恢復爲默認值。

如何解決這個問題?有沒有從場景最後添加的對象中獲取的選項?或者,也許某種方式可以在應用下一個函數之前將其標記爲'obj對象'之後立即進行標記?或者也許有一種方法可以將* obj數據直接導入到創建的早期空白對象中。

歡呼聲, regg

PS:在攪拌器2.63工作

回答

4

運營商沒有返回他們加載數據,但你可以使用這種標記方式...

for obj in bpy.data.objects: 
    obj.tag = True 

bpy.import_scene.obj(filepath="somefile.obj") 

imported_objects = [obj for obj in bpy.data.objects if obj.tag is False] 
+0

太棒了!我沒有想到這一點。謝謝! – regg

0

從什麼我在導入東西后看到,所有對象(包括已存在於場景中的對象)的默認標籤都是true。因此,爲了標記對象,您必須爲它們分配一個假值,然後導入,然後將它們添加到導入的對象(如果它們的標記爲True)。沒有其他的方式。所以我不確定這個答案是否準確。

+0

因此,如果您的答案在您使用乾淨的代碼接受答案時是準確的,那麼您的觀點並不真實,那麼您的觀點是什麼? –

+0

「乾淨的代碼」,如 1.從未測試過的代碼(第4行有錯誤。只需將其複製並粘貼到攪拌機控制檯以查看錯誤。) 2.即使沒有錯誤(修復錯誤會創建一個大小爲0的數組)。這是因爲,正如我所說的,當場景開始時以及新導入的對象時,所有對象都具有真實值。 我想你只是假設@ ideasman42的答案是準確的,因爲「(4)羣衆的智慧」......我的意思是,如果四個人高舉這個,它一定是準確的嗎? – TrollAxeThrower

+0

不,我認爲ideaman42s的答案令人滿意,因爲OP接受了它,並通過它找到了解決方案。 –