Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VRML to X3D Conversion

I'm working on a web application that manages VRML files. I also want to let users see the uploaded files, without requiring a specific plug-in or player. X3DOM allows viewing X3D files without plug-ins on most browsers, so I'd like to use it.

Alas, it works on X3D files, and not VRML files. I need to convert VRML files to the X3D format.

The same people behind X3DOM released a package called InstantReality that has a utility that converts VRML to X3D. However, I'd much rather not use an external utility (I'm not even sure I'm allowed to use it on a commercial environment, I couldn't find its terms of use) but call a conversion routine from my application code.

like image 606
zmbq Avatar asked Feb 13 '13 08:02

zmbq


5 Answers

ok so i think this is the full solution for you

1) user uploads a vrml file

2) that file gets saved to (file or db)

3) upon confirmation that the vrml file has been saved (and possibly validated as correct vrml syntax) it gets converted and saved to x3d (again as file or db) , with aopt this would be accomplished by aopt -i input.wrl -o output.x3d

FYI: aopt is avail for linux windows and mac

since you use python this maybe a way you could do it as well with blender although there are no full example of vrml to x3d this link should get you started http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ#Command_Line_Converting

4) display the x3d via x3dom

like image 159
drfrog Avatar answered Nov 15 '22 14:11

drfrog


MeshLab! There's an opensource project called MeshLab that does all sorts of processing on 3D meshes. It also has a command-line tool called MeshlabServer.

Running meshlabserver.exe -i <wrl file> -o <x3d file> performs the conversion (very quickly). Since it's open-source, I don't have any licensing issues.

like image 39
zmbq Avatar answered Nov 15 '22 15:11

zmbq


I also needed to convert VRML .wrl to .x3d; I tried meshlab (meshlabserver), but unfortunately, the version I have (.deb 2016.12~trusty2 on Ubuntu 14.04) compacts everything to a single mesh, and looses color in the process.

I found that view3dscene can do conversion from the command line, where the materials/colors are preserved in .x3d, as they were in .wrl:

view3dscene mymodel.wrl --write --write-encoding xml > mymodel.x3d

Since view3dscene functions as a viewer for both .wrl and .x3d files, it can also be used immediately, to check if the converted (or the original) file has colors or not.

like image 3
sdaau Avatar answered Nov 15 '22 14:11

sdaau


Since the ClassicVRML X3D Encoding is a direct successor of the VRML97 standard, in most cases you can copy the file, rename the .wrl file extension to a .x3dv file extension, and change the scene header from

#VRML V2.0 utf8

to

#VRML V3.3 utf8
PROFILE Immersive

Many converters exist, both commercial and open source. A full list is maintained at

  • X3D Resources: Conversions and Translation Tools
  • http://www.web3d.org/x3d/content/examples/X3dResources.html#Conversions
like image 2
Don Brutzman Avatar answered Nov 15 '22 13:11

Don Brutzman


If you simply want to convert X3D XML encoded files to VRML Classic encoded files you can use Titania, http://titania.create3000.de/. Open your .x3d file and save it as .x3dv or .wrl.

Titania also comes with a command line utitity »x3dtidy« that can do the conversion too.

like image 1
Sean Bailey Avatar answered Nov 15 '22 13:11

Sean Bailey