X3D Is VRML Dll
Contents
Introduction
Project proposed and commenced in August 2017. Goal is to produce a software component which will encourage support of X3D in commercial and open source applications, particularly for those applications that already support VRML import/export. This project will test and demonstrate the proposition that "X3D is VRML", or "VRML is X3D".
This target audience for this software component is developers, and the goal is to give them a tool to improve X3D support in their applications without the need for expertise in the X3D standard itself. This project will leverage the idea that if an application already supports VRML then the task of mapping an X3D scenegraph into the application logic has already been performed and support of X3D (XML encoding) should be straightforward. Likewise, if an application supports the XML encoding it should be straightforward to add support for VRML encoding.
It is recognized that there are already translators and conversion tools to convert ClassicVRML encoding to XML Encoding. This project is essentially a repackaging of those codes into a readily deployable library. One motivation of this project is the discussion with potential users in the medical 3D printing community, through DICOM Working Group 17. Among users who may be classified as managers and project managers:
- The structure of the X3D standard as an abstract standard with multiple encodings is a complication which does not add value for them. In their view, there are two file formats: X3D, which is the XML encoding of the X3D standared; and VRML, which can either mean the Classic VRML encoding of the X3D standard, or it can mean a file conforming to an earlier version of the VRML standard.
- There is a strong preference for native import/export of files in required formats over conversions of existing or created files.
Project Vision
For any commercial or open source application which currently supports either VRML or X3D import and export, the deliverable from this project will allow the application's developers to easily upgrade so that
- To the extent allowed by an application's support of a X3D Profiles and version, content can be imported into the application through both ClassicVRML encoding and XML Encodings.
- The application can export to both ClassicVRML encoding and the XML Encoding
- Pre X3D standard versions of the VRML standard are supported as possible. The hope is to at least support Interchange Profile content, with well defined and documented failure modes to encourage developers to upgrade their applications support for X3D scenegraph
Platform and Language
Propose that making the first deliverable a Windows DLL, readily integrated into a Windows .NET application, will offer the most impactful release. The DLL will offer text stream to text-stream conversion functions with a simple C-language interface. The implementation language of this project should be transparent to the user/developer; but the final product should be deployable with a small number of DLLs with sensible footprint.
Resources
For XML Encoding to ClassicVRML
- X3dToX3dvClassicVrmlEncoding.xslt, which depends, by xslt import, on X3dToVrml97.xslt; in Sourceforge at https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/stylesheets
- Performing XSLT Transformations in Windows .NET framework : https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xslt-transformations
For VRML to X3D (XML Encoding)
The intention is to support in some way all versions/dialects of VRML, with recognition that conversion may be incomplete or error prone for VRML prior to VRML97.
- Meshlab open source project https://github.com/cnr-isti-vclab/meshlab
- C++ codebase
- License GPL v3
- VRML parsing in directory : /src/meshlabplugins/io_x3d/vrml
- FreeWRL: http://freewrl.sourceforge.net/index.html , code is a Git repository hosted on Sourceforge: https://sourceforge.net/p/freewrl/git/ci/master/tree/
- License GPL
- C Code
- TODO: understand distinction between freewrl and freeX3D releases.
Additional Encoding support
These resources are being saved for extensions supporting additional encdings
- XIOT: https://github.com/Supporting/xiot
- Supports XML binary encodings
- C++ codebase
- License LGPL v 2.1