X3D Frequently Asked Questions

Last updated March 2005

A version of this FAQ is also available in:
Chinese

General 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 runtime behavioural 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.
Top
Why use X3D over VRML97? Here are 10 compelling reasons.
X3D is a considerably more mature refined standard than VRML so authors can achieve the behaviors they expect. But many people still ask, why XML-savvy X3D is a better development choice than continuing to use VRML. This Top Ten list gives several compelling reasons.
VRML compatible - There is still a "Classic VRML" encoding (.x3dv) which can play most non-scripted VRML 2 worlds with only minor changes. None of the technology has been lost; instead, it has evolved into X3D. X3D has made a very large effort to maintain as much compatibility with VRML as possible while still solving incompatibility problems that directly lead to non-interoperability of environments between players.
XML encoding to integrate smoothly with other applications - XML is fast becoming a prerequisite for including information in corporate and government data bases. Having an XML encoding simply makes it easier to manage, control, validate, and exchange information. The XML encoding of X3D plays nicely in this world.
X3D scenes and environments operate predictably between different players - A major problem with VRML is that it is difficult to develop VRML environments that play on all conformant browsers/players. This is due to lack of adequate specification of VRML behavior in the VRML standard. A concerted effort has been made to provide adequate specification of X3D behavior in such a way that scenes and environments can interoperate between browsers.
X3D is componentized - X3D is componentized which allows for the specification of profiles tailored to a particular large market segment (e.g., CAD, Medical, Visualization). It also allows cleaner introduction of new technology as the industry develops.
X3D authoring for any player is consistent and simpler - The X3D Scene Authoring Interface provides consistent functionality for all scripting languages both internal and external. This is not true of VRML where Java and ECMAScript have widely different programming models. The X3D SAI solves all of this by specifying a unified set of abstract services that can then be mapped to any programming/scripting language so that environments play consistently regardless of programming language. Language bindings have been provided for Java and ECMAScript. This makes authoring X3D much simpler.
X3D is more feature rich - A large number of features requested for VRML have been provided in X3D in a manner that is completely integrated into the architecture (as well as being standardized). Thus, many ad hoc solutions that are vendor-specific have been avoided. You can think of X3D as "VRML3".
X3D is continually being enhanced and updated - X3D is growing in functionality. The Proposed Draft Amendment 1 specification that adds such things as 3D textures and shading languages is available. This also corrects some identified anomalies in the original X3D specification. The structure of X3D makes it much easier to update on a regular basis. It is also easier to add new features that adapt to the changing graphics and commercial markets.
X3D applications can be certified as reliable and predictable - An X3D conformance program is being developed by the Web3D Consortium to provide service marks for conformant X3D software. This means authoring and playback applications (browsers/players) will be reliable and predictable.
An X3D open source conformant application is available as a developer resource - An open source implementation of nearly all of X3D (Xj3D) is available and proprietary conformant browsers such as Flux are also being developed. Unlike with VRML scenes, X3D scenes will play consistently in each conformance certified player.
X3D binary format offers encryption (i.e. security) and compression (i.e. speed) - A Compressed Binary encoding is under development that allows encryption for model security and very high compression (signficantly more compressed than VRML's gzip) of X3D environments. Scene parsing and loading speedups of 300-500% are commonplace. Note that it is easy for all browsers to support all encodings since the only real difference in an implementation between them is that a different parser is required. Thus, the encodings can be intermixed in a world provided that the browser supports all of the used encodings. Current X3D browser developers plan to support all of the encodings.
Top
What Does X3D look like?
The new specification is being finished and a pre-release draft is available for review to the public. Due to the rules of the ISO process, we cannot release the current final drafts of the specification for public review. Members of the consortium, do however, have full access to the specification at all stages of the process. Public drafts of the specifications may be found on this site, but understand that several large changes have taken place since these were released.
Top
Can I play VRML97 files in my X3D browser?
Yes and no. A VRML97 file is not an X3D file. A pure X3D browser will not be able to read VRML97 files as there have been a number of syntax changes that render the two incompatible. However, most browsers that support the X3D standard also support VRML97 too. It is best to check the documentation of your browser for more detailed information.
Top
How do I convert my VRML97 files to X3D?
There are a number of tools available that can do this for you. If you have relatively simple files that do not contain scripts or externprotos then you can hand edit the text to change the header and insert the new PROFILE statement and you'll be right to go. Anything more complex will require tools, and ideally a reasonable working knowledge of the new specification (several functional areas have changed in detail to be more rigorous or just plain different). See the Tools section for more details on available options.
Top
Why should my company support X3D?
Supporting X3D offers many advantages to a company:
  • Foremost, even if your product uses a proprietary format, supporting X3D instantly gives you access to more tools, content, and compatability with other applications, all will minimal effort. You even get the best of both worlds, your own format PLUS industry compatibility.
  • Your product will benefit by having a competetive marketing advantage by being able to claim "X3D Compatability", and this will additionally provide an easy path to leverage industry-wide developments in X3D.
  • There are significant commercial and open-source movements for advancing X3D. This provides a path for your application not having to "reinvent the wheel" everytime new advances in the industry are made.
  • X3D compatibility is easy as you don't need to bite off the whole specification to be labelled as compliant. Interchange profile, the simplest of all profiles, is simple to implement and equivalent to most introductory-3D graphics programming abilities (simple transforms, geometry, texturing and lighting).
  • By supporting X3D, your company helps foster growth of the 3D industry as a whole. X3D acts as a unifying platform and unifying marketing banner under which the entire industry can grow.
  • X3D content is modular and reusable, saving development time and money.
  • X3D leverages VRML content, exporting, and tools. Plug-ins exporting VRML such as for 3DSMax are very close to X3D compatible. There are a number of efforts underway to update the existing exporters to X3D.
  • X3D supports optional XML encodings for tight integration with other Web technologies, particularly in the area of web services.
  • Because it is extensible and modular, a browser can support only the profiles it needs, so companies can make small, efficient browsers to meet their individual needs. They may also provide custom support for highly-specific market segments without breaking the standard or other players.
Top

Technical Overview

How is the X3D specification structured?
Because of the new requirements to support multiple file formats and programming languages, X3D is actually comprised of 3 separate ISO specifications:
  1. 19775:200x An abstract description of all the functional parts of the system without reference to any concrete representation. This describes structural and runtime models in abstract terms. External programming language functionality is also expressed in abstract terms as sets of services that can be requested and provided in an ideal world.
  2. 19776:200x A set of file format descriptions of how the abstract structural specification is encoded into files - both text and binary form. Two plain-text file formats are described: Classic VRML (curly brackets form used in VRML97) and XML. Work is underway for a binary format, but is not yet completed.
  3. 19777:200x A set of mappings for various programming languages to the abstract service capabilities. Since not all programming languages are created equal, this specification maps the individual programming language structures to the abstract services defined by the specification. Specifications for Java and ECMAScript are defined.
Top
What functional changes are there between VRML97 and X3D?
There are many subtle and not so subtle changes. It would be impossible to list them all, but here are a few of the bigger ticket items that you need to be aware of:

  • Files are now structured to define the required capabilities as part of the header. This requires at least a definition of a profile and any extra components.
  • Externprotos now only define external X3D file content. They cannot be used to provide extension mechanisms to browsers. The way to provide browser-specific extensions is through custom components.
  • Access names for fields have changed from eventIn, eventOut, field and exposedField, to inputOnly, outputOnly, initializeOnly and inputOutput, respectively.
  • Scripts can have inputOutput fields (exposedFields) defined
  • A DEF name is not allowed to be multiply defined any more
  • All loading of content is lazy loading. Where VRML97 would require that scripts must be loaded before the runtime can start, X3D removes this and states that the file runtime starts running first, and then at some time later external resources (scripts, textures, sounds, inlines, externprotos) are loaded.
  • Runtime model for interaction between the content of a script and the scene graph is rigorously defined and very tightly controlled. Where VRML97 allowed a multi-threaded script to arbitrarily change a scene graph at any point in time, X3D defines only specific points where these changes can be made.
  • The runtime and programming model for scripting is consistent between programming languages and whether you are inside or outside the browser - one API definition rules over all.
  • Strictly defined set of abstract type definitions for nodes
Top
What are Profiles and components?
These are the new X3D way of defining both extensibility and the set of services that user's content requires.
A component defines a specific collections of nodes. Typically that collection has a common set of functionality - for example NURBS structures or texturing abilities. A component consists of the node definition and a set of levels that provide increasingly greater set of implementation reqirements. A low level requires only a few nodes and maybe a selection of the fields to be supported, while high levels require all of the lower level nodes, plus more complex nodes and support requirements. For example, level 1 NURBs requires just basic 2D paths and surfaces, while level 4 requires trimming, blending and surfaces of revolution.
A profile is a collection of components at specific levels of support. A profile may not contain another profile, though it may require all of the same components and level combos as another profile, plus more. All X3D files require the definition of a profile that is in use, which may be supplimented with the user requesting additional components - either at higher levels than those provided by the profile, or that are not already defined in the profile.
Top
Are component pre-requisites automatically loaded or do I still need to declare them?
Good question. We don't have an answer yet. Somehow this important detail slipped by us when writing the spec and thus will not appear in the final ISO document. We will have a resolution to this issue up on the Web3d.org website as soon as we come to a final answer.
Top
VRML is extensible. Why is X3D more extensible than VRML's EXTERNPROTO mechanism?
VRML has only the Externproto mechanism for extensibility, but no real mechanism for creating groups of functionality extensions. X3D's component, level, and profile mechanisms allows for this. The specification team felt that the two-faced nature of externprotos were a big problem for defining correct behaviour. ie, when the implementation could act outside the bounds of the normal VRML event model as a native node implementation or be restricted by it when written as a VRML file. Since components were already defined as a way of extending a browser with native node definitions, it was decided to minimise confusion and only define one way to provide extensibility.
A component can contain many nodes (i.e. the Nurbs component contains all of the related nurbs nodes). Also, a profile can add other areas of functionality, such as a new scripting language support, or user-interface requirements, etc.
Components can be in terms of more than just nodes. It can be for entire functional areas. For example, we might decide we need in-line ECMAScript within the X3D file at some point. The component mechanism permits this kind of extension.
Top
How are new components and profiles created?
Companies can create new Components which their product supports and submit them to the X3D Board for approval. When a component is submitted, it contains a prefix for the company submitting the component, similar to how OpenGL extensions have a prefix for the company which created the extension. Components will undergo testing and review by the X3D board, the Web3D Consortium, and the community at large.
Once a component is accepted and implemented by more than one company, the prefix changes to EXT_. If the component is ratified by the board, it then gets the prefix X3D_.
The Board can deem that certain components are so widely adopted and important that they should be included in a set of modifications to the official ISO specification.
Once a group of components and/or profiles are deemed important for inclusion across many applications, a new version of X3D can be created which includes, by default, a set of profiles. A new version implies more functionality than a lower version number.
Companies can create X3D browsers, tools, importers, and exporters which support different versions, profiles, and components. For example, an exporter from 3DSMax that is used in a game production environment may only support the Interchange profile, while a web-browser based plugin may support Immersive or the Full profile.
Top
Do companies need to support all of the Profiles, Components, and Levels?
No. Profiles and components exist so that companies need only support the profiles and components that suit their needs. By having profiles, their products can be sure that conteohnt they read will work in their application, and that content that they create will work in other applications that support their components or profiles.
Many companies would not want to support a large, complex specification like VRML97. But X3D's modular structure means that they can start off by supporting lower level profiles and components, and gradually add additional profiles as they see fit.
Top
Won't it be a problem having companies making dozens of components?
No. The process of having components adopted into the X3D specification provides the mechanism to keep X3D-compliant applications working together. Many new features will fall under existing components, thereby introducing new levels for those components.
By having companies be able to develop components and submit them, X3D leverages industry-wide advances quickly and efficiently. It also guarantees that X3D grows and flourishes, and does not become technically obsolete as prior standards have become.
Top
What is componentization good for?
The following list enumerates some of the benefits that form part of the drive behind the componentization effort:

  • Small, lightweight core - VRML 97 is a large and complex standard to implement. By stripping VRML down to a small core set of functionality we make it easier for developers to implement X3D, reduce the complexity of the implementation, and hence improve the maintainability of this implementation.
  • Extensibility - Through the notion of extensions and profiles, it is possible to build added functionality on top of the Core. This enables new features to be easily added, or existing features to be replaced with alternative extensions.
  • Vertical market focus - An extensible architecture allows new specifications or profiles to be implemented on top of the Core browser. For example, we have working groups specifically devoted to extending X3D to suit specific vertical markets such as CAD-DCC chain and Medical VR and Visual Simulation.
  • Reduced footprint - This is useful, for example, in the space of set-top boxes where each feature has a cost. Here, the ability to use profiles to enable a browser with a smaller footprint (and corresponding smaller set of functionality) is an absolute requirement.
Top
Is it true that Box, ElevationGrid, etc. nodes are being eliminated?
No, that is not true. X3D is not reducing functionality: it is partitioning it. It is true that these nodes will likely not be in the Core, but they will be implemented in an extension, such as the VRML 97 extension. The rationale is that Box, Sphere, Cone, ElevationGrid, etc. should not be included in the Core because they can easily be derived from lower-level primitives such as the IndexedFaceSet. This simplifies the core, making it smaller, easier to implement, and easier to maintain.
Top
Is X3D really just VRML-Lite?
No. The notion of a stripped down version of VRML, affectionately termed VRMLLite, was discussed for a while on the VRML mailing list. The idea was to reduce the bloat in current browsers by stripping away non essential functionality. X3D does not strip any functionality - the notion of a Core is perhaps similar to the concept of VRMLLite, but the whole idea of the X3D Core is that it can be extended to prove further functionality.
X3D provides many levels of functionality through various profile definitions. One of these profiles is named Interchange and is specifically targeted at the DCC tools like AutoCAD, 3DSMax and Maya for interchanging raw geometry data without any form of runtime model. This is but one profile of many though - there are others that include the proverbial kitchen sink.
Top

Tools and Applications

What tools are there to support X3D?
There are a number of useful tools related to X3D, including stylesheet conversions between VRML97 and XML-based editing suites for X3D files.
This PDF diagram shows many of the available XML tools and their relationships for X3D.
Our application database lists content authoring tools, viewers, and developers tools.
Top
Do I really need to use Maya/3DSMax/AutoCAD/etc to write X3D?
No, it's just that these tools are experts at making very sexy looking content. There are two text-based formats that you can use to create your content should your favourite editing environment be a simple text editor. If you are working at this level, a good understanding of 3D graphics concepts is a requirement, and for the advanced visual effects, such as using multitexturing, environment mapping, programmable shaders and so for, a working understanding of 3D graphics programming (eg OpenGL Direct3D etc) will be to your advantage.
It is expected that tools and automatically generated content will be far more prevalent than hand-edited content. Already the specification team and the companies working around X3D are seeing that almost all content is being generated through some automated process - such as web services and stylesheet transformations from other XML-based languages.
Top
Is there an Open Source X3D browser?
Yes. The Source Working Group is producing a public source code implementation of X3D written in Java called Xj3D. A working application is available today and has been tested under Linux, Solaris, Mac OS Xand Win32.
FreeWRL is an open source browser for Linux and Mac OSX that can be run standalone, or within web browsers.
There are other open source VRML97 efforts that could be used by a developer as the basis for an X3D browser, such as the OpenVRML project.
Top
How can I get my application to read/write X3D?
If you are using one of the many modelling tools, such as 3DMax, Maya or a CAD tool, it is likely that your application has a VRML97 or X3D exporter available. Many of these are still based on early versions of X3D or write invalid VRML97. To rectify this problem, the Source Working Group is in the process of writing/rewriting exporters for the most popular of the modeling packages.
Top
How do I know if an application really supports the X3D specification?
The consortium is currently putting together an extensive set of conformance tests. Products that pass the conformance tests will be able to brand themselves as compliant to the X3D specification. The final details of the tests, costs and processes should be public soon.
Top
Where can I find tools to convert my VRML97 content to X3D?
Our application database lists content authoring tools, utilties for file conversion, and developers tools.
Top

XML-Specific Questions

Why bother with Extensible Markup Language (XML)?
XML was adopted as a syntax for X3D in order to solve a number of real problems:

  • Rehostability - VRML 97 syntax is foreign to all but the VRML community. It is similar to the Open Inventor scene graph syntax on which it is based, and to some object notations. Nevertheless the dominant syntax in world-wide use is XML. Markup has proved to be the best solution to the long life-cycle problems of data archival and rehosting.
  • Page integration - XML page-based integration goes directly to ther web pages, in both content and implementation.
  • Integration with the next-generation web technologies - The members of the World Wide Web Consortium (W3C) are putting a lot of effort into the development of XML. XML Web services are the fundamental building block in the move to distributed computing on the Internet. Open standards and the focus on communication and collaboration among people and applications have created an environment where XML Web services are becoming the platform for application integration. Applications are constructed using multiple XML Web services from various sources that work together regardless of where they reside or how they were implemented.
  • Extensive tool chain support. X3D, as a format that defines visual information, is typically the last stage in a production pipeline. Using the extensive array of tools that is available, such as stylesheets, you can work in whatever native XML format you like, and seeing a 3D representation is as trivial as a single transformation step. For example, there are transformations already in use for visualising Chemical Markup Language (CML), MathML and a number of other custom XML languages.
Top
Is there an accepted Document Type Definition (DTD) for X3D?
Yes. This is defined as part of the standard. The URL for the DTD is: http://www.web3d.org/specifications/x3d-3.0.dtd.
Top
Is there an accepted Schema for X3D?
Yes. This is defined as part of the standard. The URL for the Schema is: http://www.web3d.org/specifications/x3d-3.0.xsd.
Top
What about other XML-related technologies?
The Consortium is looking at various other W3C standards that relate to XML. Technologies that are of particular interest to the X3D effort include:

  • SMIL (Synchronized Multimedia)
  • SVG (Scalable Vector Graphics)
  • XHTML (the W3C's XML-ization of HTML)
The Web3D Consortium is a member of the W3C and by this virtue the X3D Working Group is able to closely monitor the progress in each of these areas, assessing the best way to proceed in each case.
Top
How can XML markup be integrated with a web browser?
Once you have created a set of XML tags then, depending how the browser uses XML, you might incorporate these through one of the following schemes:

  • Stylesheet: The XML file is used directly. Internally, it will have a reference to a stylesheet language file such as XSL. The XSL file has instructions for displaying the XML tags.
  • Data islands: Values of XML are bound into another file (e.g., HTML) to named tags such as HTML tables, divs, etc. This means the XML will be included by value or reference into the document, and the values inside the tags are used by HTML tags. This is a Microsoft specific solution.
  • Support by plugin: This is the form where an object tag is used inline to indicate where supporting code can be found, parameters to pass, etc.
  • Direct object support: The Web browser provides native support for the tags by augmenting its object model to specifically handle these. Obviously, unless the browser is extensible by authors, the tags and their implementation will be hardcoded into the browser.
Top
How many three letter acronyms will I need to understand in order to use X3D?
Or alternatively: will X3D authors need to know how to write their own DTDs (Document Type Definitions), CSS (Cascading Stylesheets), XSL (Extensible Stylesheets), etc.? The short answer is no.
All of this work is a responsibility of the X3D Working Group. The X3D specification defines a DTD for X3D that will have a one to one correspondence with VRML97 nodes and fields. Authors use these defined tags and hence do not need to develop their own DTDs. Translators are being constructed to convert VRML97 files to X3D files so that any VRML97 modeling tools can continue to be used. Exemplar open-source software for parsing/importing/exporting X3D will be provided to encourage 3D toolmakers to easily add X3D import/export next to their VRML97 import/export.
Top
Where can I find out more about XML?
Here are few useful resources that should get you started:

Top

Process and Status

Who is developing X3D?
The core X3D specifications are being actively developed by the X3D Specification Working Group. Additional extensions for various vertical markets are being developed by domain-specific working groups. For example, CAD and Medical working groups are writing extensions for their respective industries, while the Shader Work Group is adding the general capability of programmable shaders.
Top
Is there an X3D specification?
Yes. The various specifications are at different places in the ISO approval process. You can find the current public releases here.
Top
What is the status of the X3D specification?
For the lastest status, please see the Specifications Table.
The abstract specification (19775:200x) was approved as an International Standard in 2004. Amendments are being added regularly.
The X3D XML and VRML encodings (ISO/IEC 19776) became ISO standards in 2005. Amendment 1 has been proposed.
X3D Language Bindings for ECMAScript and Java are at the final stage right before official International Standard ratification, as of Feb 2006.
Humanoid Animation (ISO/IEC 19774) is at the final stage right before official International Standard ratification, as of Feb 2006.
Top
Is there a sample or reference implementation?
The Xj3D Open Source browser and test bed provides a good sample implementation.
Top
What is the license fee to use X3D?
X3D is an open standard that has no royalties associated with it - you can use it for free wherever you like. The Web3D Consortium has a strict policy about not requiring any IP encumbered technologies to be required and a long-standing agreement with ISO to release our specifications fee-free to the public.
A Certification and Conformance Testing Program is currently being defined. Conformance testing will have an associated fee. The Conformance Program for the X3D specification is intended to promote consistent and reliable implementations of X3D support by many vendors across multiple platforms, and to create an objective definition of conformance to the X3D standard. Only conformant products may use the X3D trademark.
Top
Can I help with the development of X3D?
There are many ways of helping - from the simple like adopting the use of X3D in your daily work environment to active work on one or more of the specifications. To work on the specifications and to have access to the current working drafts, you will need to be a member of the Web3D consortium.
One of the best ways of helping out is to get involved with the tools side - writing importers and exporters for X3D. The Source Working Group has a number of projects on this front and would greatly welcome your expert help. To request participation, please complete this form.

Member Login


Username:

Password:

Not yet a member?