我在我的网站上显示了一些X3d模型。在客户端,我可以使用x3dom来操纵信号灯。但是我还需要遍历场景图,读取服务器上不同节点的值等。我的服务器端代码是Python。Python中的X3D场景图操作
有没有办法在没有x3dom的情况下操作x3d?我到目前为止看到的唯一可能的解决方案是H3DAPI,它具有商业用途的付费许可证。
任何在服务器端使用x3dom的方法也可以。
我在我的网站上显示了一些X3d模型。在客户端,我可以使用x3dom来操纵信号灯。但是我还需要遍历场景图,读取服务器上不同节点的值等。我的服务器端代码是Python。Python中的X3D场景图操作
有没有办法在没有x3dom的情况下操作x3d?我到目前为止看到的唯一可能的解决方案是H3DAPI,它具有商业用途的付费许可证。
任何在服务器端使用x3dom的方法也可以。
评论变得越来越长,所以转向答案,虽然这不是一个完整的答案。 lxml或elementree可以解释XML文件,但都不具有理解特定X3D属性(如“USE”)的内置工具。但是他们理解节点和属性,因此您可以检查节点是否具有“使用”属性,如果存在,请查找名称属性匹配的其他节点以读取它。由于它的结构良好,它可以更轻松地完成,并且出错几率比只将文件视为文本要好。
决定使用x3dtoolkit。它是一个C++ api,但它似乎是唯一的选择。不过谢谢 – Mancunia89
BeautifulSoup for XML with lxml。
我在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的样式表。
感谢,
约翰
你需要什么类型的操纵呢?是否可以将场景图(这是XML)加载到lxml或ElemenTree中并进行所需的操作? – ViennaMike
我基本上需要遍历场景,将各种节点的值存储在python对象中。我是通过简单的文件读取操作完成的,但问题在于有些节点只是将其值指向其他节点,例如。 ( )现在,如果我使用简单的文本读取这个节点,我不能得到颜色的值。 –
Mancunia89
我对lxml不熟悉。我可以在lxml中做到以上几点吗? – Mancunia89