2011-11-28 212 views
0

我的問題是: 我正在使用SH3D創建一個項目http://www.sweethome3d.com/,之後我想將它導入Blender(http://www.blender.org/) 。問題是,當我使用SH3D代碼導出然後導入到攪拌機時,我意識到:導入到攪拌機的物體被歸類爲網格物體,因此爲了移動一件傢俱,我必須選擇所有的網格物體片。從SweetHome3D導出單個傢俱到.obj(到攪拌機)

你有什麼想法嗎,我該如何改變代碼才能做到這一點?下面給出SH3D的目標作者。請注意,OBJWriter類只是爲每個Java 3D形狀編寫一個「g」行,無論它來自一件傢俱的一部分,牆壁或房間。

http://sweethome3d.cvs.sf.net/viewvc/sweethome3d/SweetHome3D/src/com/eteks/sweethome3d/j3d/OBJWriter.java?revision=1.26&view=markup#l360

感謝提前:)

迪米特拉

回答

0

,我發現這一點的唯一辦法是

  1. 刪除所有的傢俱
  2. 出口的家牆壁和紋理
  3. 人刪除家庭
  4. 導入每傢俱,一個一個並保存一個.obj文件。

但是要做到這一點,Sweethome3d的源代碼有很多變化。 如果有人有興趣,我會很高興向您發送我已更改的文件。

0

的「G」代表組,OBJ文件格式允許多個組,換句話說,你可能有這樣的事情;

g chair1 leg1 
... vertices defining a leg ... 
g chair1 leg2 
... vertices defining a leg ... 
g chair1 leg3 
... vertices defining a leg ... 
g chair1 leg4 
... vertices defining a leg ... 
g chair1 back 
... vertices defining the back of the chair ... 
g chair1 seat 
... vertices defining a seat ... 

我不能完全肯定這個但是從我所知道的,儘管是一個層次的外觀,它不是,即LEG1不是chair1的孩子。所以如果你有多個椅子,每個這樣的組名必須是唯一的。

現在,鑑於此,您可以更改sh3d的代碼以使用多個組,每個節點一個。 但是我不知道Blender代碼是否正確解析並使用多個組,或者如果在Blender UI中有任何方法可以根據這些組進行選擇。

另一種方法是更改​​sh3d中的.obj導出代碼以輸出多個文件並將每個文件讀入Blender。當然,你有這樣的問題,即每個.obj文件的原點將會關閉......即,如果您旋轉椅子,而不是圍繞通過椅子中心的軸線旋轉,則軸線將位於其他位置,所以椅子會在現場繞着弧線移動。這裏的問題的

部分原因是obj文件格式是對象格式,而不是一個場景格式。