The integration of three-dimensional graphics in HTML with XML3D allows for a variaty of applications in the web:
- Multimedia and Entertainment: Especially online games benefit from the new 3D capabilities offered with XML3D.
- Computer-Aided Design (CAD): Convert CAD models to XML3D and publish them on the web.
- Mass Customization: XML3D allows the creation of electronic catalogs or online shops with built-in customization functionalities.
- Archeological and Architectural Visualizations: Historical data can be visualized as well as walkthroughs realized.
- Educational and Scientific Visualizations: With XML3D versatile three-dimensional visualizations can be achieved for e-learning platforms or scientific projects.
Based on W3C technologies
As it is appropriate for a format that aims to be used in the web, XML3D is based on and takes advantage of several W3C standards and recommendations. This includes amongst others XML, XML Events, DOM, CSS.
XML3D is also designed to integrate and interoperate well with ubiquituous W3C standards such as HTML, DOM, CSS, and others. Embedding XML3D into this family of standards brings many benefits: It allows millions of exiting web programmers to directly apply their existing knowledge also to interactive 3D graphics.
- XML: As the name already tells, XML3D defines an XML namespace and schema. The declarative scene description is encoded in a declarative way in XML. Thus XML3D can be easily stored in and retrieved from databases or be generated on the fly. Hundreds of existing tools and toolkits are available to also process XML3D data.
- DOM: The basis of the XML3D data structure is the Document Object Model (DOM). All 3D objects are fully accessible in the DOM, while an optimized 3D engine ensures realtime display and interaction of the 3D content within the HTML page. This enables access to the data in a standardized way using several scripting or high level languages. Using DOM as the basis of XML3D allows good integration with other technologies also based on the DOM, i.e. (X)HTML, CSS etc.
- DOM/XML Events: The DOM Events specification defines the propagation and handling of events in the DOM. XML3D reuses existing events as much as possible and defines only a few additional 3D specific events like picking, proximity detection. Together with the DOM scripting possibilities, the 2D/3D DOM events form the runtime of the XML3D scene.
- XBL: We intend to use the proposed XML binding language (XBL) 2.0 as a template mechanism for XML3D. This allows us to keep the XML3D standard as slim as possible while allowing to build elaborate application specific structures on top of it.
- HTML integration: The design of XML3D allows seamless integration of 3D content into (X)HTML pages. The interactive 3D content can be embedded directly into the HTML content. This way, 3D content can be displayed in arbitrary websites without any plug-in being installed. Vice versa it is possible to let the browser render HTML content and use the result as texture in the 3D scene. These HTML textures can be defined directly inside the XML3D code or can be dynamically loaded using Ajax.
- AJAX: Though AJAX is a composition of several W3C technologies, it has revolutionized the possibilities to interact with internet applications. The full potential of AJAX can be used for 3D content just the way it’s used for 2D content.
- XLink/XPath: Using technologies like XLink and XPath, the content of one XML3D scene can be composed from several other XML3D resources distributed in the internet.
Scene Graph Design
XML3D is designed to respect recent developments in 3D hardware and software. On the other hand, the chosen abstraction level allows creation of 3D content without any knowledge about certain 3D specific technologies.
- Declarative Scene Description: The declarative approach of XML3D allows abstraction from specific graphic APIs. We have implemented a native renderer based on realtime ray tracing as well as a poly-fill implementation based one the WebGL API to the GPU rasterization engine.
- Unified and Portable Shader Model: One of the unique features of XML3D is its Unified Shader Model that allows to reuse exactly the same shaders among many applications and renderers. XML3D uses a recently developed portable format (based on LLVM) to represent shaders and map them in optimized ways to the target rendering technology, including standard rasterization hardware, realtime ray tracing, or hybrid approaches.
- Data flow model: Besides a scene graph, XML3D can process data in a data flow model. This allows the configuration of complex operation chains as input for geometry or surface shaders. Implementation can optimize the computation and perform computation on hardware.
- Hardware-friendly Data Structure: It is by design that XML3D lacks high-level geometry descriptions and instead uses simple array-based data structures, similar to vertex arrays. These data structures are optimized for current and future graphics hardware and minimizes the need to hold multiple copies of the (often massive amounts of) data. Where really necessary, other high-level descriptions can be layered on top of XML3D. Converters from popular other formats are already becoming available.
- Ready for Server-based Rendering: In some cases the client hardware the browser is running on may not be capable of rendering complex scenes in realtime or the content owner may not want to allow content distribution across the Internet. For these cases, XML3D easily offers a mode where the 3D content can be rendered on a server and streamed to the browser as video with a back channel for user interaction and other events.