2011-10-09 69 views
9

動機
我正嘗試使用WebGL創建一個小型演示應用程序。我選擇使用SceneJS,因爲它看起來是一個簡單的框架,並且足以達到這個目的。將3D模型轉換爲SceneJS JSON,包括紋理

我已經下載了一些.blend模型(Amy Rose等),並使用Blender將它們導出爲Collada(.dae)文件。然後我使用scenejs-pycollada將它們轉換爲json模型。

我剛剛花了幾個小時讓scenejs-pycollada轉換器正常工作。顯然,如果你以前從未使用Python,那麼讓這些Python依賴在Windows中工作並不那麼容易。 ;)

問題
但現在我卡住(再次)。我的問題是模型沒有任何紋理或材質。我使用了SceneJS的Seymour Plane Example。我轉換的模型幾乎不可見。它是黑色的,似乎沒有響應場景中的照明。如果我將飛機和模型一起載入,我可以看到模型已加載,因爲它的胳膊和腿都伸出了飛機。

現在我遵循了幾個教程,可以讓我將紋理導出爲PNG圖像。然後,我修改了JSON模型中的紋理文件名以匹配文件名,但它沒有幫助。

所以我希望有人可以幫助我找到一種方法將Blender模型(或其他常見3D模型)導出到SceneJS使用的JSON格式,包括紋理。

任何其他在SceneJS中加載模型的方法也可以,只要它能夠工作。

如果你有一個免費下載body/figure JSON模型的鏈接,那現在會有所幫助,但我寧願學習它是如何工作的。 :)

我使用

  • Windows 7家庭高級版64位
  • Python 2.7版(32位的Windows)
    我選擇了32位版本,因爲圖書館看似更好的支持,以及更多可用的安裝程序。起初我混合了32位和64位,這給我帶來了麻煩,但現在一切似乎都奏效了(除了紋理,就是這樣)。
  • 攪拌機2.59
  • SceneJS 0.8.0

我的工作流程
在攪拌機我的模型導出爲COLLADA格式(* .dae)文件,然後使用scenejs-它們轉換爲原始JSON pycollada。這給了我一個包含兩個對象的JSON文件。第一個似乎是現場,第二個模型。我保留第二個,並將其放入一個在SceneJS示例的代碼中使用的Javascript變量。該模型以屬性, "type": "library", "parent": "Scene"結尾,我需要從代碼中刪除它以使其加載。

回答

7

我其實是scenejs-pycollada的作者。讓我看看我是否可以幫助你:)

我看到你使用的是SceneJS的0.8版本......事情已經相當流行,所以它可能最容易從我的personal repo中拉出2.0 branch of SceneJS from github和scenejs-pycollada 。我基本上是針對scenejs-pycollada的第一個發行版的SceneJS 0.9,但該版本從未正式發佈。另外,從長遠來看,如果您現在切換,您將不必重寫所有內容...

有問題的Windows編譯也是一個大刺,我真的希望numpy的開發人員能夠爲您解決這個問題民間。一旦SceneJS 2.0發佈,我將發佈一個正式版本的scenejs-pycollada,它包含了Windows所有必需的依賴項。

因此,隨時對此問題發表評論或更新您的問題。我會盡量留意它。

P.S.另外,如果你真的感到沮喪,我實際上有第二個攪拌機出口商在https://github.com/rehno-lindeque/Blender-WebGL-exporter,但我不推薦使用這個 - 它是非常過時的。唯一的其他scenejs collada導出器很久以前就被棄用了。

P.P.S.還有scenejs-pycollada本身的示例和一些測試模型。如果你只是想要一個快速模型玩,看看https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example雖然承認它不是有史以來最漂亮的模型。

P.P.P.S.其實Amy Rose模型不適合你的原因之一是scenejs-pycollada不支持多種材質。我很快爲今晚增加了一些支持。

+0

謝謝!它似乎與你的版本scenejs-pycollada和SceneJS 2.0一起工作。不需要重新編譯任何東西,所以這很好。 ;)我不會非常指責Numpy的人,安裝不同版本的各種庫是我自己的錯。 在這一刻我正在嘗試GLGE,有人推薦。 (它加載.dae文件而不必轉換它們)。現在我需要讓我的演示工作,但我希望我很快能夠重新調查SceneJS。再次感謝。 – GolezTrol

+0

沒問題,還有更多的bug讓我知道:) –