2015-07-03 68 views
0

我在我的網站上顯示了一些X3d模型。在客戶端,我可以使用x3dom來操縱信號燈。但是我還需要遍歷場景圖,讀取服務器上不同節點的值等。我的服務器端代碼是Python。Python中的X3D場景圖操作

有沒有辦法在沒有x3dom的情況下操作x3d?我到目前爲止看到的唯一可能的解決方案是H3DAPI,它具有商業用途的付費許可證。

任何在服務器端使用x3dom的方法也可以。

+0

你需要什麼類型的操縱呢?是否可以將場景圖(這是XML)加載到lxml或ElemenTree中並進行所需的操作? – ViennaMike

+0

我基本上需要遍歷場景,將各種節點的值存儲在python對象中。我是通過簡單的文件讀取操作完成的,但問題在於有些節點只是將其值指向其他節點,例如。 ()現在,如果我使用簡單的文本讀取這個節點,我不能得到顏色的值。 – Mancunia89

+0

我對lxml不熟悉。我可以在lxml中做到以上幾點嗎? – Mancunia89

回答

0

評論變得越來越長,所以轉向答案,雖然這不是一個完整的答案。 lxml或elementree可以解釋XML文件,但都不具有理解特定X3D屬性(如「USE」)的內置工具。但是他們理解節點和屬性,因此您可以檢查節點是否具有「使用」屬性,如果存在,請查找名稱屬性匹配的其他節點以讀取它。由於它的結構良好,它可以更輕鬆地完成,並且出錯機率比只將文件視爲文本要好。

+0

決定使用x3dtoolkit。它是一個C++ api,但它似乎是唯一的選擇。不過謝謝 – Mancunia89

0

BeautifulSoup for XML with lxml。

0

我在pyJNIus https://pyjnius.readthedocs.io/已經產生繞X3DJSAIL,http://www.web3d.org/specifications/java/X3dJavaSceneAuthoringInterface.html包裝爲Python https://github.com/coderextreme/pythonSAI我只是在與蟒蛇最初的測試和冒煙測試與Python 3工作在Linux上而回。 X3DJSAIL目前處於測試階段(我們目前正在編譯15000個測試文件中的99% - 但這些文件每天都在變化),pyjnius可以在Windows上使用Python 2.7,但我從來沒有嘗試過。歡迎您對這些項目做出貢獻,特別是如果您想遷移X3DJSAIL樣式表來生成Python而不是Java,或者提供pyJNIus之外的其他python後端。不過要注意的是,我們高度以Java/XML/JavaScript爲中心,並且我們可能並不總能得到正確的pythonisms。

你應該能夠setUSE(節點),而不是setUSE(「節點」)

有針對我還沒有嘗試尚未X3DJSAIL的XML裝載機。如果您需要Python代碼,我還有另一個開發JSON - > DOM - > XML,Java,Python的項目。此外,該項目中還有一個與JSON一起使用的Proto Expander,它具有Alpha XML版本https://github.com/coderextreme/X3DJSONLD。有一個用於將Don Brutzman和Roy Walmsley編寫的XML轉換爲JSON的樣式表。

感謝,

約翰