2015-07-03 64 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的样式表。

感谢,

约翰