XSeen: Merging X3D and A-Frame

This post introduces XSeen - a declarative language built on A-Frame and X3D to achieve the desire of a fully declarative 3D/VR language that runs in the web browser. In this initial release the language supports some X3D and some A-Frame nodes and capabilities. It is possible to combine the two to produce results that are the available in either.

There are two significant declarative languages that integrate with HTML - A-Frame and X3D, mostly in the form of X3DOM. For this discussion I will use the terms X3D and X3DOM interchangably. There are important technical differences, but that is the topic of a different post. The language do essentially the same thing - convert a declarative set of statements into 3D content that shows in the browser either as flat-screen or VR. While both use WebGL as the interaction with the graphics card, the languages offer different capabilities. I gave a presentation on this topic at Silicon Valley VR Expo. Both languages do accomplish approximately the same thing; however, each language offers a differnet approach to getting it done and provides different capabilities to the user and developer.

To summarize the main differences, X3DOM offers standardized, fully declarative language, with extensive support for enterprise applications. A-Frame offers full integration with HTML5 and some advanced concepts for asset management. A-Frame's biggest drawbacks are its partially non-declarative nature and lack of sufficient support for enterprise applciations. X3D's biggest drawbacks is its lack of full standardized HTML integration.

The intiial release is to develop a proof-of-concept to show that the languages can be combined. It only supports static models using the pre-defined shapes of each language in the same syntax as the originating language. Future versions will consolidate this based on input and feedback from the A-Frame and X3D communities. It will also include an event model so that fully interactive and animated scenes are possible. It is available on GitHub at https://github.com/DrX3D/XSeen

The goal of this work is to develop a language that is

  1. Standardizable
  2. Enterprise ready
  3. Fully HTML5/DOM integrated
  4. Runs in all browsers
  5. Fully support VR, AR, xR, and flat-screen displays as determined by the content developer and user
  6. Leverages other standards and communities applications and libraries