X3D манипулирование сценографом в Python
У меня есть несколько моделей X3d, которые я показываю на моем сайте. На стороне клиента я могу манипулировать сценографом с помощью x3dom. Но мне также нужно пройти через сценограф, прочитать значения различных узлов и т. Д. На сервере. Мой серверный код написан на Python.
Есть ли способ манипулировать x3d без x3dom? Единственное возможное решение, которое я видел до сих пор, - это H3DAPI, у которого есть платная лицензия для коммерческих целей.
Любой способ использования x3dom на стороне сервера также будет работать.
3 ответа
Комментарии становятся длинными, поэтому переходят к ответам, хотя это не полный ответ. lxml или elementree могут интерпретировать файлы XML, но ни один из них не имеет встроенных инструментов, которые понимают определенный атрибут X3D, такой как "USE". Но они понимают узлы и атрибуты, поэтому вы можете проверить, есть ли у узла атрибут "use", и, если он есть, найти другой узел с соответствующим атрибутом name, чтобы прочитать его. Это можно сделать проще и с меньшей вероятностью ошибки, чем если бы вы просто рассматривали файл как текст, поскольку он хорошо структурирован.
Я создавал оболочку для X3DJSAIL, http://www.web3d.org/specifications/java/X3dJavaSceneAuthoringInterface.html для python https://github.com/coderextreme/pythonSAI в pyJNIus https://pyjnius.readthedocs.io/ я / я только на начальном тестировании с питоном, и тест дыма работал на Linux с Python 3 некоторое время назад. X3DJSAIL находится на стадии бета-тестирования (сейчас примерно 15% из 15000 тестовых файлов компилируются - но эти 15000 файлов меняются ежедневно), и pyjnius работает с Python 2.7 в Windows, предположительно, но я никогда не пробовал. Мы приветствуем ваш вклад в эти проекты, особенно если вы хотите перенести таблицу стилей X3DJSAIL для генерации Python вместо Java или предоставить дополнительные бэкэнды Python помимо pyJNIus. Имейте в виду, однако, что мы сильно ориентированы на Java/XML/JavaScript, и мы не всегда можем правильно понять питонизмы.
Вы должны иметь возможность установить setUSE(узел) вместо setUSE("узел")
Для X3DJSAIL есть загрузчик XML, с которым я еще не экспериментировал. У меня есть другой проект, который разрабатывает JSON -> DOM -> XML, Java, Python, если вам нужен код Python. Кроме того, в проекте есть Proto Expander, который работает с JSON и имеет альфа-версию XML https://github.com/coderextreme/X3DJSONLD. Существует таблица стилей для перевода XML в JSON, написанная Доном Брутцманом и Роем Уолмсли.
Спасибо,
Джон