Getting Started


X_ITE is a new 3D JavaScript library entirely written in JavaScript and uses WebGL for 3D rendering. Authors can publish X3D and VRML source online within an HTML5 page with X_ITE that works with Web browsers without prior plugin installation. This gives X3D authors the ability to displays content in 3D, using WebGL 3D graphics technology to display X3D content in several different browsers across several different operating systems. Since X3D is backwardly compatible, X_ITE can also be used as a VRML viewer.

X3D is an ISO-ratified, royalty-free open standards file format and run-time architecture to represent and communicate 3D scenes and objects specified by the Web 3D Consortium. X3D has evolved from its beginnings as the Virtual Reality Modeling Language (VRML) to the considerably more mature and refined ISO X3D standard. X3D provides a system for the storage, retrieval and playback of real time 3D scene in multiple applications, all within an open architecture to support a wide array of domains and user scenarios.

X_ITE supports custom shaders, clip planes, reflection mapping, script nodes, prototyping capabilities and event driven programming to provide you with an improved quality level of virtual effects and tools ready for the Internet.

Developer note: X_ITE runs best in fresh installs of Google Chrome, Chromium, Firefox, Safari, Opera, and Microsoft Edge. X_ITE uses the latest JavaScript standard, but is also compatible with older browser, and is available both on your desktop computer and on your modern smart-phone.

If you ever get in trouble, please file a bug.

X3D Examples

Appartment Approach Arcadia Astronomy BIC BeyondGermany Chomp
Circles CrazySpiral Currencies FlashingLights FoldUp LogoPieces LustForLife
MagicMushrooms MilkywayAndBeyond NYC Pong SecretLabyrinth SlidingPuzzle SmartyBubbles
SmashingBoxes SugarSmack TikiWorld TreasureIsland Vattenfall WaterQuality QuadSet
ComposedCubeMapTexture GeneratedCubeMapTexture Background Fog LocalFog TextureBackground ProximitySensor
TransformSensor VisibilitySensor IntegerSequencer ColorChaser ColorDamper CoordinateChaser ScalarChaser
Arc2D ArcClose2D Circle2D Disk2D Polyline2D Polypoint2D Rectangle2D
TriangleSet2D Box Cone Cylinder ElevationGrid Extrusion IndexedFaceSet
Sphere GeoElevationGrid GeoLOD GeoViewpoint Group Switch Transform
HAnimHumanoid ColorInterpolator CoordinateInterpolator OrientationInterpolator PositionInterpolator PositionInterpolator2D ScalarInterpolator
SplineScalarInterpolator SquadOrientationInterpolator KeySensor StringSensor LayerSet Viewport DirectionalLight
PointLight Shadows SpotLight NurbsCurve NurbsPatchSurface NurbsSweptSurface Billboard
Collision LogarithmicDepthBuffer NavigationInfo OrthoViewpoint Viewpoint Anchor Inline
LoadSensor ConeEmitter ExplosionEmitter ForcePhysicsModel ParticleSystem PointEmitter PolylineEmitter
SurfaceEmitter VolumeEmitter WindPhysicsModel LinePickSensor PointPickSensor PrimitivePickSensor CylinderSensor
PlaneSensor TextureProjectorPerspective ClipPlane Color ColorRGBA Coordinate IndexedLineSet
IndexedTriangleFanSet IndexedTriangleSet LineSet PointSet BallJoint CollidableShape CollisionCollection
RigidBody RigidBodyCollection SingleAxisHingeJoint SliderJoint ComposedShader FloatVertexAttribute ShaderPart
Appearance FillProperties LineProperties Material TwoSidedMaterial AudioClip FontStyle
Text ImageTexture MovieTexture MultiTexture PixelTexture ImageTexture3D TimeSensor
EdgeEnhancementVolumeStyle IsoSurfaceVolumeData SegmentedVolumeData ShadedVolumeStyle ToneMappedVolumeStyle VolumeData BlendMode

The VolumeRendering examples are only working if your browser supports WebGL 2, otherwise the examples left black.

Download X_ITE

There is a ZIP archive available to locally install X_ITE on your server. Compressed and uncompressed copies of X_ITE files are available. The uncompressed file (x_ite.js) is best used during development or debugging; the compressed file (x_ite.min.js) saves bandwidth and improves performance in production.

Download X_ITE ZIP archive

You also can get it on NPM

$ npm install x_ite

It can be used in Electron apps in the renderer process like this:

const X3D = require ("x_ite")

Using X_ITE with a CDN

CDNs can offer a performance benefit by hosting X_ITE on servers spread across the globe. This also offers an advantage that if the visitor to your webpage has already downloaded a copy of X_ITE from the same CDN, it won’t have to be re-downloaded. To use the X_ITE CDN, just reference the CSS and JavaScript file in the script element directly from the GitHub CDN or jsDelivr CDN domain.

GitHub CDN

GitCDN serves raw files directly from GitHub with proper Content-Type headers and a super fast CDN!

Latest Stable Version

If you are a developer or you always wanna be up to date:

<link rel="stylesheet" type="text/css" href=""/>
<script type="text/javascript" src=""></script>


If you are on production and everything works fine, then use a numbered version.

<link rel="stylesheet" type="text/css" href=""/>
<script type="text/javascript" src=""></script>

jsDelivr CDN

Open Source CDN, free, fast, and reliable.


<link rel="stylesheet" type="text/css" href=""/>
<script type="text/javascript" src=""></script>

WordPress Plug-In

WordPress users can use our plug-in to embed X_ITE into their web page.

Download WordPress plug-in


  1. Unzip package and put it into the plugins folder of your WordPress installation.
  2. Install and activate the plugin on the Plugins page.
  3. Add shortcode [X3DCanvas src="" class="x_ite-browser"] to page or post content.
  4. Modify “src” and “class” attribute.

Embedding X_ITE within a Web Page

To display your X3D scene in a HTML5 page first save your scene as X3D XML Encoded file, X3D JSON Encoded file, or as X3D Classic Encoded file, i.e. create a file with the extension .x3d, .x3dj, .x3dv, or .wrl.

The HTML5 page is quite easy to create, the HTML5 code below shows you the minimum requirements. The path to the X3D scene is specified in the src attribute of the <X3DCanvas> element.

<!DOCTYPE html>
    <meta charset="utf-8"/>
    <link rel="stylesheet" type="text/css" href=""/>
    <script type="text/javascript" src=""></script>
    <style type="text/css">
X3DCanvas {
  width: 768px;
  height: 432px;
    <X3DCanvas src="path/to/your/X3D/world.x3d">
      <p>Your browser may not support all features required by X_ITE.
         For a better experience, keep your browser up to date.
         <a href="">Check here for latest versions.</a></p>

To get X_ITE working you must include the CSS file »x_ite.css« and the JavaScript file »x_ite.min.js«. After x_ite is successfully loaded a new HTML element <X3DCanvas> is available on your page.

Note: You can style the <X3DCanvas> element as every HTML element with CSS as well as you can place it everywhere within the DOM tree.

Supported File Formats

As of version 1.19, X_ITE can now parse either X3D XML Encoding or X3D Classic Encoding. This gives authors the capability to use X_ITE also as VRML viewer.

Additionally files can be compressed using GZip compression.

X3D Encoding File Extension MIME Type
XML .x3d, .x3dz model/x3d+xml
JSON .x3dj, .x3djz model/x3d+json
Classic VRML .x3dv, .x3dvz model/x3d+vrml
VRML .wrl, .wrz model/vrml

For more information see How to Configure Your Web Server.

Fallback Content

The <X3DCanvas> element is equal to the <canvas> element in that, it is easy to define some fallback content, to be displayed in older browsers not supporting it. You should always provide fallback content to be displayed by those browsers.

Providing fallback content is very straightforward: just insert the alternate content inside the <X3DCanvas> element. Browsers that don’t support <X3DCanvas> will ignore the container and render the fallback content inside it. Browsers that do support <X3DCanvas> will ignore the content inside the container, and just render the canvas normally.

For example, we could provide a text description of the X3D element or provide a static image of the dynamically rendered content. This can look something like this:

<X3DCanvas src="world.x3d">
  <p>Current stock price: $3.15 +0.15</p>
<X3DCanvas src="world.x3dv">
  <img src="images/clock.png"/>

Attributes of the X3DCanvas Tag

The HTML <X3DCanvas> element defines the main content of the X3D document. The <X3DCanvas> element has three attributes that define different behaviours. All of these attributes are optional.


A Boolean value (true or false) to indicate whether files transferred over the internet should be cached on the local computer. The default value for the cache attribute is true. It works by appending “_={timestamp}” to the GET parameters of every request.


A Boolean value (true or false) to indicate whether a context menu should be displayed on right click. The default value for the contextMenu attribute is true. The context menu can also be extended, see here.


A Boolean value (true or false) to indicate whether the notification bubble should be displayed. The default value for the notifications attribute is true.


Type: script code. This event is sent to an X3DCanvas element when an error occurs loading a scene.


Type: script code. This event handler will be called on the X3DCanvas element when a scene has finished loading. This applies whether the scene is applied via the src attribute or when a scene is loaded or replaced by another world. If you change the scene, the event will fire again when the new scene loads. This event will not bubble up the element tree.


Type: script code. This event handler will be called on the X3DCanvas element when a scene is unloaded or replaced by another world.


A Boolean value (true or false). If the value is true the drawing buffers will not be cleared and will preserve their values. The default value for preserveDrawingBuffer is false. Set preserveDrawingBuffer to true if you want to save the image from the canvas. Keep in mind setting preserveDrawingBuffer to true can have performance implications.


A Boolean value (true or false) to indicate whether the splash screen should be displayed. The default value for the splashScreen attribute is true. The display of the splash screen can also be toggled via the browser option »SplashScreen« in JavaScript. Call Browser .setBrowserOption ("SplashScreen", booleanValue) to toggle the display of the splash screen.


A String value with the URL that should be loaded on page load. If no src attribute is specified or the src attribute is empty an empty scene is displayed.


A MFString value with urls that should be loaded on page load. If no url attribute is specified or the attribute is empty an empty scene is displayed. If both src and url attribute are specified the src attribute takes precedence.


<X3DCanvas cache="true" src="path/to/your/X3D/world.x3d"></X3DCanvas>

More Options

More options can be adjusted using the Browser Object and Browser Options for scene specific adjustments.

Keyboard Shortcuts

If the X3DCanvas element is focused, the following keyboard shortcuts are available.

Home (Pos 1)

Go to first viewpoint.


Go to last viewpoint.

Page Up

Go to previous viewpoint.

Page Down

Go to next viewpoint.


Display browser timings.


If X3DCanvas attribute debug is true, toggle begin/end update of browser.


If X3DCanvas attribute debug is true, set shading to POINT.


If X3DCanvas attribute debug is true, set shading to WIREFRAME.


If X3DCanvas attribute debug is true, set shading to FLAT.


If X3DCanvas attribute debug is true, set shading to GOURAUD.


If X3DCanvas attribute debug is true, set shading to PHONG.


Copy the the current viewpoint of the active layer to clipboard.

Extending the Context Menu

The context menu is the jQuery Context Menu plugin, and it can be extended using the items syntax. The full documentation can be found here.


Browser .getContextMenu () .setUserMenu (function ()
  return {
    "command-1": {
      name: "Command 1",
      callback: function (key, opt)
        console .log ("Clicked on " + key);

Accessing the External Browser

X_ITE is designed to provide access to a browser and its contained scene graph via JavaScript, either within an internal X3D Script node or an external HTML script.

Learn more how to access the external browser.

XHTML DOM Integration

XHTML DOM integration allows you to integrate 3D content seamlessly into your webpage, with just a JavaScript file included the scene can be written directly into the XHTML markup. There are no further plug-ins needed anymore.

Learn more about how XHTML and X3D can operate together.

We show you a simple example how you can manipulate the X3D DOM in JavaScript like you would do it with any HTML.

Using Firefox, Chrome and Opera with Local Files

X_ITE makes use of the XMLHttpRequest object to load files and there’s no way round that. But that means files loading using the file:// scheme protocol are subject to the same origin policy and are handled as cross origin requests (CORS) and cross origin requests are only supported for protocol schemes: http, data and https. That means X_ITE cannot have access to this files.

To work around this problem you must set up a localhost server, than you can access your local files under the web address http://localhost/… This can be done using XAMPP from the website. XAMPP is a completely free, easy to install Apache distribution containing MariaDB, PHP, and Perl. The XAMPP open source package has been set up to be incredibly easy to install and to use.

MacOS users can use Personal Web Server, which can serve files through a web server, and is very easy to use.

Report a Bug

If you run into any bugs or encounter any other abnormal issues with X_ITE, let us know!

Here’s an example of a helpful bug report:

I fell through a hole on the Resistance map. I was running along the wall near the pool of water and fell through a black hole in the wall. I got stuck and had to leave the match. This happened while playing Search and Destroy.

X_ITE Feedback Survey and Bug Report