![]() |
X3D™ (Extensible
3D) Frequently Asked Questions (FAQ) Version 1.17 |
This document contains answers to a number of frequently asked questions about the Web3D technology known as X3Dtm. The contents of this FAQ will evolve over time as the technology evolves, and as more questions are asked! If you have an entry that you would like to add, then please e-mail Martin Reddy. If you are not already familiar with the Virtual Reality Modeling Language (VRML), then you may also find Bob Crispen's excellent comp.lang.vrml FAQ a useful resource.
The Japanese version of the X3D FAQ, translated by Oga-san, is available from http://www.janit.com/, or directly from http://www.janit.com/netbranch/VirtualReality/faq.html.
The Korean version of the X3D FAQ, translated by Nexternet, Inc., is available from http://www.web3d.co.kr/, or directly from http://www.web3d.co.kr/x3d/faq/.
The Spanish version of the X3D FAQ, translated by Roberto G. Puentes Diaz, is available from http://www.confis.com.ar/x3d/(X3D)FAQes(1-17).htm.
Instead of a large, monolithic specification which requires full adoption for compliance, a component-based architecture supports creation of different "profiles" which can be individually supported. These profiles are collections of components, and two examples of profiles are the small "core" profile to support simple non-interactive animation, and the "base" VRML-compatible profile to support fully-interactive worlds. Components can be individually extended or modified through adding new "levels", or new components can be added to introduce new features, such as streaming. Through this mechanism, advancements of the specification can move quickly because development in one area doesn't slow the specification as a whole.
X3D addresses the limitations of VRML. It is fully specified, so content will be fully compatable. It is extensibile, which means X3D can be used to make a small, efficient 3D animation player, or can be used to support the latest streaming or rendering extensions. It supports multiple encodings and APIs, so it can easily be integrated with Web browsers through XML or with other applications. In addition to close ties with XML, X3D is the technology behind MPEG-4's 3D support.
The new spec is being finished and will be available for review soon on Web3D.org . Hopefully then people will have a better understanding of what is going on. Until then, here is a brief description, and a link to a working copy of the new spec index page: :http://www.openworlds.com/x3d/new/index.html.
In simplest terms, X3D is VRML 97 broken down into components, with a
mechansism to add new components to extend beyond VRML 97 functionality. X3D
looks just like VRML. To turn a VRML file into an X3D file, you add the
following comment lines:
#X3D profile:base
if your content has features which aren't standard VRML, you add a line
like:
#X3D component:streaming:1
This tells the browser that
this content requires the streaming functionality, level 1. This might be a
collection of nodes to support streaming, or might be an API-level facility.
If it is a collection of nodes, this might trigger the browser to load in a
world file which contains the EXTERNPROTO declarations of these nodes.
So that people creating content don't have to worry about listing or including dozens of components, Profiles are created which consist of many components. In this manner, you can specify one profile which can have enhancements in several functional areas. For example, the Base profile includes both new components (PROTO, Audio, etc.) and new levels of existing components (i.e. the Box node in the geometry component) over the Core Profile, but you only specify the profile, not the list of components; for example, '#X3D profile:base'
As browsers advance, components will be adopted into new profiles, so that the next browser profile may include components for NURBS, streaming, etc. This is the basic architecture.
Now because it is hard to fully import VRML, we wanted to make it easy for companies to import and export some level of X3D. This is why VRML has been grouped in components and profiles. Components group nodes or functionality, for example, the geometry component groups the VRML geometry nodes. Components have different levels, so geometry level 1 doesn't contain the Box node, but level 2 does, etc. As new geometry node types are added, new levels to that component get added.
A profile is a collection of components, so the core profile (X3D-1) consists of level-1 components which support geometry and animation. X3D-2 is the VRML97 profile which supports all of VRML 97 nodes plus the additional functionality of PROTOs and Scripts.
A company that makes an X3D-1 product knows that it can import content that is X3D-1 compliant, and that content it generates can be read in by X3D-1, X3D-2, and VRML97 browsers.
Notice we haven't mentioned XML. That is because XML support is not requried. Current VRML97 browsers are immediately X3D-2 compliant. This is a basic requirement of the specification. XML is an additional encoding, just like a binary encoding. XML encoding and related APIs are a powerful mechanism to integrate X3D with other Web-based technologies, and much work has been done in this area by the Task Group to insure that X3D will be supported by XML tools. Translators will also be available to translate content between encodings. Because of the scope of the encodings issues, encodings have been moved into a separate document.
In summary, all VRML content and tools will work right off the shelf with X3D. Plus X3D will now have a way to have non-VRML97 features such as Nurbs and GeoVRML supported as new native nodes in all browsers within the scope of the specification rather than as a proprietary extension. X3D also give a way of many companies easily supporting importing and exporting of X3D to whatever level they can, and making sure that they support it well instead of having spotty support. And it give a way of companies creating small, efficient X3D browsers which don't need the level of functionality that VRML provides, ala Shout3D. Foremost, it gives a way of the VRML 97 browser companies to extend their current VRML 97 browsers with new features that can easily and QUICKLY be incorporated into the spec rather than have them stay as proprietary extensions. And the optional XML encodings and support provide a mechanism for tight integration with other Web technologies.
A component can contain many nodes (i.e. the Nurbs profile contains all of the related nurbs nodes). Also, a component can add other areas of functionality, such as a new scripting language support, or user-interface requirements, etc. A component can also simply be a collection of externprotos.
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. And while the individual browsers can implement profiles by using protos and externprotos, it is not forced on the browser companies to do this.
Plus, 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.
For X3D to truly be an industry-wide standard, the designers realized that different companies don't need or want to support every feature that X3D has to offer. For example, if a company wants to make a small, effecient 3D animation engine, it might not be interested in supporting features for geology rendering. Because of this, groups of features are encapsulated in what are called "components". A component is usally specific for one particular area of functionality (i.e. a "Geo" component for handling geographic data, or a "geometry" component containing a group of geometry "nodes", or a scripting component introducing the concept of script support).
While components provide a means to introduce a collection of new nodes, X3D still supports extensions through Externprotos, protos, scripts, etc. In fact, component support can be implemented through use of these features.
A profile is a grouping of components covering several different areas of functionality (i.e. a "Full" profile which handles all VRML97 nodes and functional areas). A profile can even contain the functionality of several profiles (i.e. the "Full" profile includes the functionality of the smaller geometry-based "Core" profile).
Once a group of profiles is 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, a small player might be X3D-1 compatible. A full VRML97-compliant browser would be X3D-2 compatible. X3D-3 might include extra areas of functionality including NURBS, streaming, etc.
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 (i.e. OW_) 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 new profile.
No. Profiles and components exist so that companies need only support which profiles and componetns that suits their needs. By having profiles, their products can be sure that content 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 X3D-1, and gradually add additional profiles as they see fit.
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.
Supporting X3D gives many advantages for a company:
(NOTE: 1 and 2 are the solutions sometimes referred to as page integration.)
All of this work is a responsibility of the X3D Task Group. The X3D
specification defines a DTD for X3D that will have a one to one correspondence
with VRML 97 nodes and fields. Authors use these defined tags and hence
do not need to develop their own DTDs. Translators are being constructed to
convert VRML files to X3D files so that any VRML 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 VRML import/export.
N.B. there are certainly a number of technology issues to be resolved here.
For example, extensions will, in general, need access to the core and the
underlying OS. This means that extensions will not generally be compatible
with one another or any given core implementation. These are open issues which
the X3D Browser Working Group and X3D Task Group are be looking into.
Once a group of profiles is 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 and Profiles. For example, a small player might be
X3D-1 compatible. A full VRML97-compliant browser would be X3D-2 compatible.
X3D-3 might include extra areas of functionality including NURBS, streaming,
etc.
Once a profile is accepted and implemented by more than one company, the prefix changes to EXT_. If the profile is ratified by the board, it then gets the prefix X3D_.
The board can deem that certain profiles are so widely adopted and
important that they should be included in the next version of X3D.
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 X3D-1, and gradually add additional profiles as they see fit.
By having companies be able to develop profiles 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.
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 Compatabile!", 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! X3D-1 is simple to implement.
By supporing 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 support also provides a path for MPEG-4 support. X3D-1 is the basis for MPEG-4's 3D rendering.
Sure! See http://www.web3d.org/TaskGroups/x3d/X3dTaskGroupCharter.html#Mail for details on signing up as an x3d-contributor or an x3d-reviewer. If your company is a Consortium member and planning on shipping an X3D software product, the Browser Working Group may be for you!
There are other open source VRML97 efforts that could potentially be used as the basis for an X3D browser, such as the work being performed as part of the OVAL project.
Finally, if the Cosmo Player source code becomes available in the future,
then this could be used as another base for developing an Open Source X3D
browser.
The following people have contributed to the contents of this FAQ. Many thanks to you all!
- Don Brutzman, <brutzman@nps.navy.mil>
- Len Bullard, <clbullar@ingr.com>
- Richard Y. Choi, <web3d@dreamwiz.com>
- Paul J. Diefenbach, <paul@openworlds.com>
- Rick Goldberg, <Rick.Goldberg@eng.sun.com>
- Linda Hahner, <linda.hahner@familiartales.com>
- Adrian Mann, <asm@invetech.com.au>
- Chris Marrin, <chris@marrin.com>
- Eiji Oga, <oga@ruby.famille.ne.jp>
- Nicholas F. Polys <npolys@virtuworlds.com>
- Richard F. Puk, <puk@igraphics.com>
- Martin Reddy, <reddy@ai.sri.com>
- Sandy Ressler, <web3d.guide@about.com>
- Christopher K. St. John, <cstjohn@quik.com>
- Anthony Steed, <A.Steed@cs.ucl.ac.uk>
- Sherrie Thodt, <thodt@hawaii.edu>
- [your name here!]
This documents lives at: http://www.web3d.org/TaskGroups/x3d/faq/