X3D and HTML FAQ

From Web3D.org
Jump to: navigation, search

X3D and HTML FAQ

Additional information, particularly relating to VRML can be found at http://www.web3d.org/about/faq/ and http://web3d.org/about/overview

What is X3D?

  • X3D is an open standard for 3D content delivery. It is not a programming API, nor just a file format for geometry interchange. It combines both geometry and run-time behavioral descriptions into a single file that has a number of different file formats available for it, including the Extensible Markup Language (XML). It is the next revision of the VRML97 ISO specification, incorporating the latest advances in commercial graphics hardware features as well as architectural improvements based on years of feedback from the VRML97 development community.
  • The goal of X3D is to provide an interoperable platform for real-time, interactive virtual environments over the network. This goal is realized by suite of ISO specifications that support the portability, interoperability and durability of digital assets. For example, these specification include the declarative description of interactive scenes in several encodings (XML, utf-8, binary) as well as an event-based API for integration with other languages
  • X3D/VRML defines 2 separate and important functionalities:
    • A 3D data interchange format, which allows a standardized way to express and share 3D data.
    • A runtime environment, which allows 3D data and 3D environments to appear and behave exactly the same way, regardless of the product used.

3D data which is highly expensive to obtain, must last for decades regardless of the trials and tribulations of individual companies or products, and must display and interact with high reproducibility, benefits greatly from the X3D/VRML standard. Examples of such data include 3D medical images, geospatial data, data representing vehicles, objects or buildings with significant service lives (such as cars, airplanes, museum pieces, furniture, homes, commercial buildings, virtual heritage sites), data detailing archival events (such as weather patterns, spacecraft missions, astronomical interactions, historical reenactments) and simulations.

What is the goal of X3D and HTML

  • Our long-term goal is to make the native authoring and use of declarative XML-based X3D scenes as natural and well-supported for HTML authors as the support provided for Scalable Vector Graphics (SVG) and Mathematical Markup Language (MathML).
  • The X3D Working Group has made multiple contributions to the W3C HTML Working Group for the purpose of fully integrating X3D with HTML.
  • Information on X3D and HTML5 efforts is publicly available on theX3D-HTML5 Working Group page.

How do you control X3D from HTML?

X3D provides a documented API that provides complete control over the scene- events can be shared between the HTML page and the X3D scene. This API has a JavaScript binding (interface) and has been demonstrated in numerous browsers over the years.

What is X3DOM?

  • X3DOM is a new integration model which puts the declarative X3D scene-graph directly into the HTML DOM.
  • The current implementation utilizes an JavaScript layer as frontend and supports native, X3D-plugins and WebGL for rendering. This layer is an open-source library that was developed by Fraunhofer IGD.
  • Fraunhofer IGD is a member of the Web3D Consortium.
  • X3DOM directly coevolved during our collaborative X3D+HTML5 working groupefforts. Fraunhofer has further followed the tried-and-true Web3D process of collaborative efforts within a working group to solutions which can eventually extend the X3D Specification.
  • X3DOM is considered an evolutionary effort that has every indication of positively influencing formal X3D development, not a bifurcation or separate fork. also it uses... X3D.
  • X3DOM is being considered for potential standardization in a Mobile and/or Augmented Reality (AR) profile for X3D.
  • X3DOM is a recent Fraunhofer IGD development and is being considered for inclusion in the future versions of the X3D specifications.

Why not use WebGL?

WebGL is a programming interface from JavaScript to an OpenGL interface. While it is very powerful and flexible, it's complexity is beyond the capabilities of most 3D artists, Web developers, and content-creators. X3D implementations (such as X3DOM) use WebGL to render interactive 3D scenes natively (no plug-in) in the web browser.

What is the X3D format?

The X3D file structure comes in three formats - XML, VRML-compatible, and Compressed Binary. Each format can be losslessly converted to any other format. The XML format uses standard XML for all aspects of the document.

Is there a reference codebase?

  • The X3D Specifications are closely reviewed and very careful to only offer example implementation hints, while including sufficient information in a scene for unambiguous rendering. Nevertheless X3D implementations are free to choose their own approaches.
  • Web3D does not mandate reference codebases or specific algorithms.
  • Web3D encourages multiple codebases. Per Web3D internal rules prior to ISO standardization, we must have 2 independent interoperable codebases and at least one must be open source prior to standardization.

What is the relationship between X3D and HTML?

X3D can be placed directly in HTML5 files using X3Dom and the WebGL extension. JavaScript from the HTML file can directly control all aspects of the X3D scene. X3D can also be run in a plug-in or a stand-alone X3D player. The plug-in and player versions provide additional capabilities and efficiencies generally not available in a straight-DOM environment.

What is X3D's API?

  • The formal name of X3D's API is Scene Authoring Interface (SAI).
  • The SAI can be implemented in multiple programming languages. Formal bindings are defined for Javascript (aka ECMAScript) and Java.
  • Other informal SAI bindings have been produced using C++ and other languages, but have not yet been proposed for standardization.
  • In general the SAI provides both strongly typed interfaces (for compile-time validation of correctness) and string-based interfaces (for run-time flexibility).
  • The SAI can control an X3D scene either from inside (via a Script node) or outside the X3D environment (for example, running inside an HTML page).
  • The external SAI has both JavaScript and Java interfaces that is completely compatible with HTML by sending string-based DOM messages.
  • There are multiple modes of X3D scripting together with HTML and DOM that are apparently not very familiar or well which includes history stretching back as far as the External Authoring Interface (EAI) with VRML97.

Note: provide examples

Does X3D use a Directed Acyclic Graph (DAG)?

  • X3D scene documents are trees.
  • X3D rendering implementation typically use a Directed Acyclic Graph (DAG) to maintain a scene graph
  • there is a difference between data representation of a scene document and corresponding implementation algorithms for rendering it.
  • thus an X3D scene is a tree, while an implementation may choose to be a DAG.
  • Even so the internal implementation of DEF/USE in a scene might a tree also (through duplication).
  • For that matter an implementation may not render at all, for example when pretty-print HTML documentation (a DOM tree) is produced via XSLT stylesheet (an XML tree) from a .x3d scene (an XML tree).

Is that compatible with HTML's DOM tree structure?

  • there is a difference between data representation of a scene document and corresponding implementation algorithms for rendering it.
  • thus an X3D scene is a tree, while an implementation may choose to be a DAG. but the internal implementation of DEF/USE in a scene might a tree also (through duplication). for that matter an implementation may not render at all, for example when pretty-print HTML documentation (a DOM tree) is produced via XSLT stylesheet (an XML tree) from a .x3d scene (an XML tree).

Is X3D standardized?

  • X3D is standardized by ISO. It currently has three document numbers: ISO/IEC-19775, ISO/IEC-19776, ISO/IEC-19777. ISO/IEC-19775 defines the abstract functionality of X3D and its interface. ISO/IEC-19776 defines the three encodings (formats) XML, ClassicVRML, and Compressed Binary. ISO/IEC-19777 defines the two language bindings - JavaScript (ECMAScript in standards terminology) and Java. The current version of the standard is V3.2. V3.3 is in the final development process.
  • X3D has been standardized since 1997, first as VRML (ISO/IEC-14772), then as X3D starting in 2002?

Who has sponsored/supported the development of X3D?

  • X3D is sponsored by the Web3D Consortium. The Consortium is the driving force and focal point for all X3D development and standardization.
  • The Web3D Consortium is a member funded non-profit, international standards organization that has spearheaded the development of the X3D and VRML specifications.
  • Today, the Web3D Consortium is utilizing its broad-based industry support to develop the X3D specification. Through the well-coordinated efforts with the ISO and W3C, the Web3D Consortium is maintaining and extending its standardization activities.

Where is X3D used?

OUTREACH

How to get involved?

  • Declarative 3D is a discussion effort to start an Incubator Group Charter for the World Wide Web Consortium (W3C) to define requirements for Declarative 3D using suitable use cases.

More details and charter to be published soon. Broad industry participation is expected. For more information please contact Anita Havele [[1]]

Web3D Conference Papers

If you would like some peer-review of X3D-X3DOM technologies, there is a paper trail from the Web3D conferences in the ACM digital library portal: Please find the papers at: X3D-X3DOM(2009) X3D-X3DOM(2010)