I am developing a plugin for Maya to export X3D content (called RawKee). I am looking for Maya content (which I am willing to purchase) to test the exporter. Initially, I’m looking for Maya content that uses PBR texture mapping so I can test the PhysicalMaterial export functionality.
I have been communicating with Michalis for several weeks on this topic, and he suggested that I post here.
I have over 20 years history with the Maya API and X3D. I have previously written a C++ version of RawKee, which is available through our GitHub site, and can be compiled for versions of Maya 2019 and newer. However, I view this as legacy code initially developed 20 years ago, and I am currently in the process of rewriting the plugin from scratch in Python.
RawKee - Python Edition will support version 4 of the X3D Spec including PBR texture mapping and HAnim skinned Character export. As a Python plugin will support Maya on Windows, Linux, and OSX without the need for maintaining multiple compiling environments. Additionally, by using Python instead of C++, RawKee will be able to leverage WebGL features of Pyside6 that will enable in-app preview of X3D content within Maya.
RawKee will also feature project setup for the Castle Game Engine.
Also, sorry for the multiple delete posts. See below for a composite screen shot of the RawKee plugin.
I purchased some content from Tidal Flask Studios to test export some models. In the process of exporting a basic mesh with a phong shader and a color texture I found some coding errors… I fixed them, and here’s a screenshot of a sword exported to X3D.
So I got frustrated with the standard functions for exporting X3D using the XML(), VMRL(), and JSON() methods of x3d.py. So I wrote a companion python script that surfs the x3d.py Scene, and properly formats the output.
This was necessary for several reasons.
JSON export was completely broken.
The skeleton and joint export order of the HAnimHumanoid node fields using x3d.py would theoretically dump all the DEF’d joints into the ‘joints’ field, and thus only produce one USE’d root joint in the 'skeleton field. Though I haven’t implemented HAnimHumanoid yet, I re-ordered the field export so that the ‘skeleton’ field will get writen to the file before the ‘joints’ field.
‘containerField’ was not implemented for XML export, which caused the textures to not work because they weren’t allocated to the proper texture field within the Material node.
The ‘mapping’ field was missing from the TextureTransform object, so it wouldn’t export.
I fixed all these issues with with my RKSceneTraversal.py script. Please visit the RawKee GitHub site if you’d like to look at the code. I tried posting it here, but the block formatting was off.
Attached are some screenshots of XML, VRML, and JSON encodings.
A new exporter, from Maya straight to X3D, would be fantastic – it could expose 100% of X3D capabilities (including, but that’s a future dream, some things not available in glTF, like X3D Background or cubemaps or 3D textures) and be one simple pipeline from Maya → to X3D graph, and Castle Game Engine works internally with X3D graph for everything.