Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

Extensible 3D (X3D) File Format Family

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name Extensible 3D (X3D) File Format family. ISO/IEC 19776. Information technology — Computer graphics, image processing and environmental data representation — Extensible (X3D) encodings
Description

Extensible 3D (X3D) is a family of co-ordinated royalty-free open standards for file formats that can store representations of interactive 3D objects and scenes, with an associated run-time architecture for communicating the scenes and objects. X3D evolved from the Virtual Reality Modeling Language (VRML) and, like VRML, is designed to support a virtual environment, but also to be applicable in many other 3D contexts.

According to the introduction to ISO/IEC/19557-1, the specification of the architecture and functionality of X3D, "X3D is a software standard for defining interactive web- and broadcast-based 3D content integrated with multimedia. X3D is intended for use on a variety of hardware devices and in a broad range of application areas such as engineering and scientific visualization, multimedia presentations, entertainment and educational titles, web pages, and shared virtual worlds. X3D is also intended to be a universal interchange format for integrated 3D graphics and multimedia." Development, testing, and maintenance of the family of X3D standards is undertaken by members of the not-for-profit Web3D Consortium, with standardization under the auspices of JTC1/SC24. The Web3D Consortium provides two useful diagrams of the family of standards: firstly, a "honeycomb" diagram of the current standards related to X3D; and secondly, a newer diagram of relationships between X3D graphics specifications that serves as a roadmap, showing newer developments and indicating future plans.

With the aim of supporting a wide variety of application areas, the architecture supports many functionalities and features. See Notes below for a list of features from the standard's introduction. Not all application areas need all features. For example, digitized 3D models of museum artifacts typically do not need geospatial location and orientation in a global coordinate system as would be essential in a model of a city used by planners. To address this complexity, the X3D architecture is described in 35 chapters for conceptual "components". Examples of components are Shape, Appearance, Texturing, Lighting, Time, Geometry3D, Geospatial, Navigation, Scripting. Profiles appropriate for different application areas or markets are specified in annexes; profile annexes list components that must be supported and other constraints. Components act as modular collections of "node types" that make it easier for software to gradually implement a range of X3D capabilities.  Some components are specialized, such as the CAD Geometry component; others are essential to every application, such as the Shape component, which defines node types for associating geometry with visible properties. Nodes contain fields; a field may be a value, a set of values, or a child node. For example, each Shape node has a Geometry node and an Appearance node. The Appearance node can include one of a set of child nodes; the possible children include nodes for Material, Texture, LineProperties, FillProperties, Shaders, etc. Nodes are the basic building blocks for the physical encodings of an X3D file. For example, in the XML encoding, nodes are represented as elements (see X3D example in XML encoding). X3D uses a "scene graph" to assemble all the nodes that make up the virtual environment being modeled. The scene graph is a tree structure that collects all aspects of a 3D scene in a hierarchical fashion, properly organizing geometry, appearance, animation, and event routing.

A number of design objectives have guided the development of X3D:

  • Separate the runtime architecture from the data encoding. X3D functionality is defined in ISO/IEC 19775, which comprises two parts; Part 1 defines the X3D format architecture and Part 2 defines a protocol, known as the Scene Authoring Interface (SAI) for manipulating an X3D instance and supporting user interactions with a 3D object or scene.
  • Support a variety of encoding formats, including the Extensible Markup Language (XML). Each part of ISO/IEC 19776 specifies an encoding of the X3D architecture defined in ISO/IEC 19775. Three different encodings for X3D (XML, Classic VRML, and Compressed Binary) are defined in ISO/IEC 19776-1, ISO/IEC 19776-2, and ISO/IEC 19776-3, respectively. According to What is X3D? from the Web3D Consortium, the three encodings specified are functionally equivalent. Two additional encodings are under development: a JSON encoding and a second compressed format. See Notes below.
  • Add new graphical, behavioral and interactive objects. In comparison to VRML, for example, X3D introduced geo-referencing, support for shape geometry defined by Non-uniform rational B-splines (NURBs), and a new standard for humanoid animation. ISO/IEC 19774 defines an abstract representation (H-ANIM) for modeling three dimensional human figures and animations that can be applied to them, for example, for use as "avatars." Such figures can be incorporated into X3D models but the H-ANIM standard is more general in its applicability.
  • Provide alternative application programmer interfaces (APIs) into the 3D scene. ISO/IEC 19777 is a multi-part standard, with each part defining a "binding" for a particular programming language to the SAI protocol. As of November 2018, two language bindings have been approved as ISO/IEC standards, ISO/IEC 19777-1 for ECMAScript (aka JavaScript) and ISO/IEC 19777-2 for the Java programming language.
  • Define subsets of the specification ("Profiles") that meet different market needs. The standard includes annexes defining 7 profiles aimed at different application areas: Interchange; Interactive; MPEG-4 interactive; Immersive; Full; CADInterchange; and MedicalInterchange. Profiles define the model components and nodes that must be supported and the level of support for each component (see next item). Profiles may impose additional requirements: for example, limiting the total number of points and faces in a scene.
  • Allow for the specification to be implemented at varying levels of service. The specification for each component (e.g., Shape, Lighting, Texturing) includes a definition of 1-4 levels of support, in terms of which nodes associated with the component must be supported. For example, the Appearance node described in the Shape Component may have child nodes for Material, Texture, Fill Properties, LineProperties, TwoSidedMaterial, etc. Only level 4 requires support for all these node types. Level 3 does not require support for TwoSidedMaterial.

Given the variety of encoding formats, language bindings for different APIs, profiled subsets, and levels of service, the format has a large array of possible subtypes. This format description is for the family of X3D formats as a whole, making no attempt to distinguish among the profiles.

Relationship to other formats
    Has subtype XML encoding, not described separately on this site at this time.
    Has subtype Classic VRML encoding, not described separately on this site at this time.
    Has subtype Compressed Binary encoding, not described separately on this site at this time.
    Has earlier version VRML (Virtual Reality Modeling Language), not described separately on this site at this time.
    Has extension H3D (Haptic 3D), not described separately on this site at this time. See H3D specific Node classes and Haptic Applications Gallery.

Local use Explanation of format description terms

LC experience or existing holdings There are a small number of X3D files in the Library's collections as of 2023.
LC preference The Library of Congress Recommended Formats Statement (RFS) includes X3D as an acceptable format for 2D and 3D Computer Aided Design vector images.

Sustainability factors Explanation of format description terms

Disclosure Extensible 3D (X3D) is a royalty-free, platform-independent, open-standard file format. Standards and specifications associated with X3D are developed, maintained, and openly published by the not-for-profit Web3D Consortium and its members. After acceptance in the consortium, standards are submitted to ISO/IEC JTC1/SC24 for approval as International Standards. See Web3D Consortium's Adoption Process for standards.
    Documentation The specifications associated with X3D fall under three ISO/IEC standards.  ISO/IEC 19775 defines the underlying architecture for X3D in Part 1 and the interface protocol for supporting interactions with a model in Part 2. ISO/IEC 19776 has three parts, each for a different encoding for a model as defined in ISO/IEC 19775-1. The encodings specified are: XML (ISO/IEC 19776-1); Classic VRML (ISO/IEC 19776-2); and Compressed Binary (ISO/IEC 19776-3). In addition, ISO/IEC 19777 specifies bindings for programming languages ECMAScript (aka Javascript) and Java. See Format Specifications below for additional links to the associated specifications.
Adoption

The Web3D Consortium website provides several sources of information intended to illustrate support and adoption of X3D and VRML in X3D Resources, a page of links to resources of all types; not all linked resources are current. A page on Web3D participation at March 2018 IEEE VR conference has slideshows that introduce many current examples of adoption in application areas and support in software tools and frameworks for import, export, editing, and rendering. In particular, see Web3D Quickstart 1 and Web3D Quickstart 2. Playlists on YouTube also demonstrate the variety of application areas.

X3D models can be embedded in a web page using X3DOM or the X-ITE X3D Browser. Other X3D players include: BS Contact (commercial); Octaga (commercial with free limited version for non-commercial use); H3DViewer (freely downloadable). Open source viewer projects include FreeWRL and Xj3D viewer.

Examples of tools for creating or editing X3D files include: X3D-Edit; MeshLab; Titania X3D Editor. Maya (computer animation software, a product of Autodesk) has a help file for an add-on polyX3DExporter that will export polygonal meshes into X3D. According to Exporting from Blender, Blender versions prior to 2.8 had direct support for X3D; see also X3D IMPORT EXPORT Missing in 2.8 beta. The developers of the Castle Game Engine have developed an alternative X3D exporter for Blender and provided guidance in Exporting from Blender to X3D. Altova's XML and JSON editor XML Spy v2020r2 (released in late March 2020) includes support for X3D files in both the Personal and Enterprise level applications. According to Web3D Consortium, this includes "features include context-sensitive parent-child node relationships and attribute values, plus full validation."

X3D is used in a wide variety of application areas. Samsung uses X3D for content in its virtual reality headsets; see Moving Web 3d Content into GearVR. MedX3D is a specialized application for 3D visualization of information from CT or MRI scans using the Volume Rendering component of X3D. X3D is supported for 3D Printing by Netfabb (acquired in 2015 by Autodesk) and in the 3DPrintExchange from the National Institutes of Health (NIH). X3D has a geospatial component and the format can be imported into and exported from the CityServer3D framework, which incorporates a geospatial database with applications for developing landscape models. However, A Case Study on 3D Geospatial Applications in the Web using State-of-the-art WebGL Frameworks, an article from 2015, identifies challenges in dealing with the data volume and numerical precision required for geospatial applications using X3D through WebGL (as supported directly in modern browsers). The Castle Game Engine is an open source application for building interactive games that uses X3D as its main underlying format.

The U.S. National Archives (NARA) has identified X3D as a preferred format for transfer of computer-aided design (CAD) models. It refers to version 3.2 of X3D, but is not specific about the preferred encoding. See Appendix A: Tables of File Formats from NARA Transfer Guidance. The Ecole Polytechnique Fédérale de Lausanne (EPFL) includes X3D in a list of preferred formats for reuse and preservation of CAD, listing all three encodings. Harvard University's Digital Repository Service lists X3D as a preferred format for 3D CAD Drawings, preferring the XML encoding and has compiled an assessment of several CAD Formats, including an assessment of X3D. The UK's Implementation of the EU Trade Mark Directive 2015 lists X3D as one of the formats in which a trademark can be represented.

    Licensing and patents Implementation of all standards produced by the Web3D Consortium, including X3D, is royalty-free. See What is X3D?.
Transparency

Simple X3D models in the XML and Classic VRML encodings are highly transparent. The model instances are text files, typically using UTF-8 for character encoding, and hence easily viewed and manipulated using text editors. Files that are compressed using the lossless Gzip compression would need to be decompressed to reveal the underlying textual file. These encodings use human-readable strings as names for element tags and associated fields/attributes.

X3D files in the Compressed Binary encoding (CBE) use a complex technique for compressing XML. The files require sophisticated tools for decompression.

Self-documentation

Simple paired name/value information can be provided in the XML encoding as in HTML, using <meta> tags within the document's <head>. In addition, an X3D metadata node can be used to provide information about any node in an X3D scene graph, and is placed as a child of the node that it describes. Basic metadata nodes defined in the architecture include MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString. These nodes can contain an array (multiple values) of values of the data type indicated. In addition, the architecture supports a MetadataSet node that can group basic metadata nodes to create a more complex metadata structure. For details, see X3D Metadata Information, Chapter 15 from X3D for Web Authors. The compilers of this resource have not been able to determine whether the capability for embedding metadata deep in the model is widely used either in general or in particular domains. Comments welcome.

External dependencies None beyond software capable of reading and writing X3D files, with support for the encoding used and the nodes included in the X3D instance.
Technical protection considerations

X3D Security Examples README from the Web3D Consortium shows the process for applying a digital signature to an X3D file in the XML encoding (having the .x3d extension), using XML Signature Syntax and Processing to embed the signature. There is no example of incorporating encrypted model content into a .x3d file. The XML DTD for the XML encoding for X3D V 3.3 allows ds:Signature elements inside the root X3D element. The DTD declares a namespace for "xenc" (intended to support embedded encrypted data) but does not seem to allow its use. Comments welcome.

The specification and documentation for the Classic VRML encoding make no mention of encryption.

The Normative References for the Compressed Binary encoding of X3D V 3.3 include the W3C specifications for XML Encryption and XML Signature, suggesting that this X3D encoding may support the use of encryption for the X3D model content. Comments welcome.


Quality and functionality factors Explanation of format description terms

GIS images and datasets
Normal functionality The X3D architecture has a Geospatial component, which describes how to associate real world locations to elements in the X3D world as well as specifying nodes particularly tuned for geospatial applications. It supports a limited set of coordinate reference systems. A Case Study on 3D Geospatial Applications in the Web using State-of-the-art WebGL Frameworks, an article from 2015 described challenges with using the X3DOM framework for five geospatial use cases.
Other
3D Model Geometry

The X3D format supports geometry definition using shape primitives (e.g., sphere, cylinder, cone), polygonal meshes, and non-uniform rational basis splines (NURBS). According to a 2008 report from NCSA (An Overview of 3D Data Content, File Formats and Viewers), X3D does not support constructive solid geometry (CSG) directly. Comments welcome.

3D Model Appearance X3D supports many mechanisms for using nodes or fields to control appearance of objects in an X3D scene, including material attributes, texture mapping, fill properties, and programmable shading. A commonly used appearance feature is a texture map based on an image in JPEG or PNG format. [Note: X3D browsers are required to support JPEG and PNG and recommended to support GIF. See 18.4.1 Image texture in the X3D specification.] Textures can also be movie clips, with fields for specifying behaviors, such as looping, pausing, and changing speed. Multiple textures may be applied to a single geometry node and blended according to a predefined set of operations. Material attributes available include ambient intensity, diffuse color, specular color, shininess, emissive color, and transparency. Fill properties include codes for patterns such as hatching and stripes; some codes correspond to surface textures, such as marble, sand, and fabric.
3D Model Scene

X3D uses a scene graph to model the many graphics nodes that make up a virtual environment. The scene graph is a tree structure that collects all aspects of a 3D scene in a hierarchical fashion that properly organizes geometry, appearance, animation, and event routing.

An X3D instance can incorporate a lighting component specifying characteristics and positions of light sources in the scene, as well as how lights affect the rendered image. Support is available for spotlights and for fog.

3D Model Animation

Figures using the Humanoid Animation (H-ANIM) standard for modeling 3D human figures and animations that can be applied to them can be incorporated into X3D models. For example, such models can be used as avatars in a virtual environment.

3D Model Functionality, Beyond Normal The X3D specification has rich support for virtual reality, including an Immersive Profile. Consider immersive virtual reality spaces, such as the X-SITE CAVE (Cave automatic virtual environment); Virginia Tech's Visionarium; and specialized collaborative environments, such as Spiders3D (link via Internet Archive).

File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Filename extension x3d
x3dv
x3db
x3dz
x3dvz
x3dbz
Each extension is used for a specific combination of encoding and compression. .x3d is for the XML encoding, .x3dv for the Classic VRML encoding, and .x3db for the Compressed Binary encoding. If compression using Gzip is applied, the extension with a final "z" is used. See http://www.web3d.org/wiki/index.php/X3D_MIME-Type.
Internet Media Type model/x3d+xml
model/x3d-vrml
model/x3d+fastinfoset
Media Types for the three different encodings for X3D as listed by IANA. As listed in the left-hand column, they are for the XML, Classic VRML, and Compressed Binary encodings, respectively. See also X3D MIME-Type on Web3D's Public X3D Wiki, which lists the same values as the IANA registry. Note: There are inconsistencies among the Media Types listed at several other resources. See Notes below for details.
Pronom PUID fmt/579
fmt/580
fmt/581
fmt/582
These four PRONOM records are for versions 3.0, 3.1, 3.2, 3.3 of the XML encoding for X3D
Wikidata Title ID Q930428
See https://www.wikidata.org/wiki/Q930428.

Notes Explanation of format description terms

General

Features and functionalities supported by X3D. With the aim of supporting a wide variety of application areas, the architecture supports many functionalities and features, including, as described in the Introduction to Part 1 of the X3D standard:

  • 3D graphics: polygonal geometry, parametric geometry, hierarchical transformations, lighting, materials and multi-pass/multi-stage texture mapping
  • 2D graphics: text, 2D vector and planar shapes displayed within the 3D transformation hierarchy)
  • Animation: timers and interpolators to drive continuous animations; humanoid animation and morphing
  • Spatialized audio and video: audiovisual sources mapped onto geometry in the scene
  • User interaction: mouse-based picking and dragging; keyboard input
  • Navigation: cameras; user movement within the 3D scene; collision, proximity and visibility detection
  • Scripting: ability to dynamically change the scene via programming and scripting languages
  • Networking: ability to compose a single X3D scene out of assets located on a network; hyperlinking of objects to other scenes or assets located on the World Wide Web
  • Physical simulation: humanoid animation; geospatial datasets; integration with Distributed Interactive Simulation (DIS) protocols
  • Geospatial positioning: ability to accurately position X3D scene objects geospatially
  • CAD geometry: ability to represent CAD models mapped from CAD systems
  • Layering: ability to organize X3D scenes into rendering groups so that objects in each layer can overlay objects in underlying layers
  • Support for programmable shaders: ability to replace the X3D lighting model with custom shader programs
  • Particle systems: ability to generate systems of particles that can represent fire, smoke, and other such effects

A number of the features above, such as scripting, are key to support for virtual reality devices, games, and immersive immersive environments, but not typically used for digital reproductions of physical artefacts or for 3D printing. See, for example, Moving Web 3dContent into GearVR, about use of X3D to create content for Samsung's GearVR device. Other features listed support specialized domains, such as computer-assisted design (CAD) and models of real scenes on the earth's surface that must be accurately positioned and oriented.

File format encodings for X3D: As of late 2018, three file format encodings have been approved as parts of ISO/IEC 19776:

  • XML. ISO/IEC 19776-1. This encoding was a key motivation for the move from VRML to X3D. The use of XML, a markup standard for which many tools exist, both open source and commercial, was seen as essential to the wider adoption and support for the model architecture of VRML. The encoding specifies markup using a DTD that was equivalent to the earlier VRML encoding.
  • Classic VRML. ISO/IEC 19776-2. This format encoding extends the syntax of VRML to support new functionality and modularity introduced in X3D. VRML markup uses curly brackets as the syntax for grouping and nesting nodes. This syntax is similar in structure to the C programming language.
  • Compressed Binary Encoding (CBE): ISO/IEC 19776-3. This encoding uses the ISO Fast Infoset (FI) standard designed specifically to compress XML information losslessly, reducing file size and enhancing performance. The CBE maintains equivalent expressive power with the other X3D scene encodings.

Other encodings are under development, including:

X3D Internet Media Types: Internet Media Types listed under File Signifiers above are those listed in the IANA registry. The same values are listed at the bottom of X3D MIME-Type on the Web3D Consortium Wiki. However, the media types in the version 3.3 specifications for two of the encodings (Classic VRML and Compressed Binary) and those listed at the X3D entries at Wikipedia and fileformats.archiveteam.org do not match the official IANA registry. The differences are as follows: section 4.4 in the specification for the Classic VRML encoding "model/x3d+vrml" whereas the IANA registry lists "model/x3d-vrml"; section 4.5 in the specification for the Compressed Binary encoding lists "model/x3d+binary", while the IANA registry shows "model/x3d+fastinfoset". The compilers of this resource would welcome comments by any expert who can clarify which media types are used in practice.

3D Model Characteristics: The quality and functionality factors used above are based on an analysis from 2008 in An Overview of 3D Data Content, File Formats and Viewers, a technical report (ISDA08-002) from the National Center for Supercomputing Applications (NCSA). According to this analysis, the key aspects of a 3D model are: geometry, appearance, scene, and animation. For brief descriptions of these factors, see the table for 3D model formats under Quality and functionality factors. The descriptions there are drawn from the 2008 report and from 8 Most Common 3D File Formats of 2018 (an article from C|net), which uses the same factors to distinguish formats. X3D (considered with VRML) is covered in the C|net article and compared with an overlapping set of 3D file formats in Table 3 in the 2008 NCSA report.

Characteristics for the Market for 3D Technology: As described in Making 3D Technology Universal, a 2005 article in Computer Magazine by David Geer, most computer-aided design (CAD) applications tended to use proprietary formats. Several attempts to develop general-purpose 3D applications and formats for use on the web had failed in the marketplace. These included Adobe's Atmosphere, Microsoft's Chromeffects, and Shockwave's .w3d formats. Neil Trevett, vice president for embedded content at graphics-chip maker Nvidia, offered reasons beyond technical shortcomings, "because 3D is a market with so many niches that it is difficult for a single approach to appeal to enough users to succeed; and because the technologies weren’t controlled by an open standards body."

Both the NCSA technical report from 2008 and the C|net article from 2018 cited above mention the large number of 3D formats, well over 100. See also the lists of 3D graphics formats and Computer-aided design formats from Wikipedia. Many of these are proprietary. Among "neutral" formats, some are specialized for particular tasks. For example, STL (Stereo Lithography format) is a lightweight format with no support for appearance, scene, or animation, but is the most widely used format for 3D printing. Others, such as STEP, are intended to capture all details essential for interchange and archiving of architectural and engineering designs, including parts specifications and tolerances. In the context of video-games, such details are irrelevant. As a response to this challenge, X3D specifies profiles for some particular application domains, including: CAD Interchange profile; Medical Interchange profile; and an Immersive profile compatible with the functionality supported by VRML.

History

X3D evolved from the Virtual Reality Modeling Language (VRML). VRML was initially proposed in 1994 and demonstrated in 1995. After some modifications, it was standardized as ISO/IEC 14772-1 in 1997. Since then, VRML has been essentially static. In December 1998, the VRML Consortium, founded in 1997, expanded its charter and renamed itself as the Web3D Consortium. X3D, an enhanced successor to VRML, was developed by the Web3D Consortium, starting in 2001, leading to ISO standardization of first edition of ISO/IEC 19775 in 2004, under the auspices of ISO/IEC JTC1/SC24. The 2004 edition of X3D was called version 3.0, continuing the numbering from the sequence used for VRML. As of 2018, the current version of X3D is 3.3.

According to the diagram of X3D Specification Relationships, several new components of the X3D environment exist but not yet as international standards. These include a new binary encoding using Efficient XML Interchange (EXI) compression and a new text-based encoding using JSON. Several new language bindings are also in development, for C, C++, C#, and Python. There are plans for a major upgrade, to version 4. See also X3D Strategy.


Format specifications Explanation of format description terms


Useful references

URLs


Last Updated: 03/29/2023