|
|
X3D
What is X3D?X3D = eXtensible 3D Extends the capabilities of VRML 97 (X3D was originally called VRML-NG - Next Generation) Name highlights integration with the next generation XML-based Internet Project is coordinated by the Web3D Consortium Schedule X3D-VRMLX3D specification in intended to be completed by the end of 2000 VRML 97 is due for an ISO revision in 2002, at which time VRML97 and X3D will merge (maybe called VRML 2002) X3D's relation to VRMLX3D is next version of VRML X3D will be fully backward compatible with VRML97 (using a so-called VRML97 "profile") VRML97 will be convertible to X3D X3D Goals
X3D uses XML as it's file syntax. It has a lightweight core, which can be extended by adding components that add new nodes (and code implementation) to the core. File SyntaxEssentially, X3D provides an XML mapping to VRML 97 so that a scene graph can be represented in XML as opposed to VRML or a binary format. For example <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC
"http://www.web3D.org/TaskGroups/x3d/translation/x3d-draft.dtd" [
<!ENTITY % Vrml97Profile "INCLUDE">
<!ENTITY % CoreProfile "IGNORE">
<!ENTITY % X3dExtensions "IGNORE">
<!ENTITY % GeoVrmlProfile "IGNORE">
] >
<X3D>
<Scene>
<Group>
<Viewpoint description="Start Position"
position="5.0 -1.0 0.0"
orientation="0.0 1.0 0.0 1.57"/>
<NavigationInfo type="EXAMINE"/>
<Transform translation="0.0 -5.0 2"
rotation="0.0 1.0 0.0 1.57"
scale="1.0 1.0 1.0">
<Shape>
<Box size="2 4 2"/>
<Appearance>
<Material diffuseColor="1.0 0.0 1.0"/>>
</Appearance>
</Shape>
</Transform>
</Group>
</Scene>
</X3D>
The syntax is defined in the x3d-draft.dtd (DTD=Document Type Definition) and in this case we use the VRML97 profile only (more on profiles in a moment). Using XML as a file format has several advantages:
X3D is an XML application, so most users do not need to define their own DTDs for core X3D or the VRML 97 X3D profile (or other predefined 'profiles') ComponentizationThe most important functionality of VRML that is considered crucial to implementing anything useful has been packaged in a small lightweight core, which all X3D viewers must support if they are to be compliant with the standard. Compared to VRML '97, the core is easy to implement and it is hoped that it will be widely supported. Components are used to implement extensions to this core (e.g. NURBS, H-ANIM, ...). They implement completely new node types (unlike PROTOtype which are implemented using existing nodes). ProfilesA profile is a subset of components that provide a set of functionality required for a particular set of functionality intended for a specific type of user or audience. Examples include the Core Profile, VRML97 Profile, GeoVRML Profile,... The VRML 97 profile defines which extensions are required for X3D technology to be used to view VRML97 content Nodes in Core ProfileThe Core Profile contains 23 nodes: Anchor, Appearance, Background, Color, Coordinate, CoordinateInterpolator, DirectionalLight, Group, ImageTexture, IndexedFaceSet, IndexedLineSet, Inline, Material, NavigationInfo, OrientationInterpolator, PointSet, PositionInterpolator, Shape, TextureCoordinate, TimeSensor, Transform, Viewpoint, and WorldInfo. The Core can be viewed as a kind of light version of VRML ScriptingScripting has not yet been defined in the specification (this is being worked on). Since X3D is implement in XML, the Document Object Model (DOM) can be used to manipulate the scene graph, so JavaScript would certainly be available as a scripting language. Converting VRML97 to X3DTools will be available in future to convert existing VRML97 content to X3D. At present, XML tools such as IBM's Xeena can be used to work directly in X3D, using the x3d-draft.dtd. To view the result, XSL can be used to translate X3D into VRML97 and pass the code to a VRML97 viewer. ImplementationsX3D-like implementations are being made in parallel with the development of the specification. They generally use a VRML-like as file format at present (as opposed to XML), but are fully capable of being used to implement virtual worlds that can be manipulated as if they were in X3D. For example, Blaxxun3D and Shout3D basically implement the core profile, and are scriptable via DOM. While Blaxxun3D and Shout3D are implemented in pure Java, other companies are working on C/C++ implementations (e.g. Sony's Blendo and DRaW's OpenWorlds), and the Web3D Consortium are working on a reference implementation in Java 3D, together with Sun. Examples: For a taste of what X3D might have to offer when it is completed, have a look at Shout3D. Native viewers will be much faster and capable of running full-screen, but considering that Shout3D is pure Java and does not require a plugin to be used, the results are impressive. FutureVRML and X3D will merge in 2002, if all goes according to plan The Web3D Consortium is working on MPEG-4 interoperability Proposals for a binary encoding scheme are being collected X3D is running a little late.... The spec was originally intended to be submmitted to ISO at SIGGRAPH 2000, but the current goal is to complete it by the end of the year. |
|
|
Michael Louka, October 10, 2001 |