x_ite

X_ITE X3D Browser, view and manipulate X3D, VRML, glTF and other 3D sources in HTML.
- Static
- Latest Patch
- Latest Minor
- Latest Major
- 11.4.2
- 11.4.1
- 11.4.0
- 11.3.2
- 11.3.1
- 11.3.0
- 11.2.3
- 11.2.2
- 11.2.1
- 11.2.0
- 11.1.1
- 11.1.0
- 11.0.7
- 11.0.6
- 11.0.5
- 11.0.4
- 11.0.3
- 11.0.2
- 11.0.1
- 11.0.0
- 10.5.15
- 10.5.14
- 10.5.13
- 10.5.12
- 10.5.11
- 10.5.10
- 10.5.9
- 10.5.8
- 10.5.7
- 10.5.6
- 10.5.5
- 10.5.4
- 10.5.3
- 10.5.2
- 10.5.1
- 10.5.0
- 10.4.2
- 10.4.1
- 10.4.0
- 10.3.1
- 10.3.0
- 10.2.0
- 10.1.0
- 10.0.5
- 10.0.4
- 10.0.3
- 10.0.2
- 10.0.1
- 10.0.0
- 9.7.0
- 9.6.3
- 9.6.2
- 9.6.1
- 9.6.0
- 9.5.2
- 9.5.1
- 9.5.0
- 9.4.5
- 9.4.4
- 9.4.3
- 9.4.2
- 9.4.1
- 9.4.0
- 9.3.2
- 9.3.1
- 9.3.0
- 9.2.7
- 9.2.6
- 9.2.5
- 9.2.4
- 9.2.3
- 9.2.2
- 9.2.1
- 9.2.0
- 9.1.11
- 9.1.10
- 9.1.9
- 9.1.8
- 9.1.7
- 9.1.6
- 9.1.5
- 9.1.4
- 9.1.3
- 9.1.2
- 9.1.1
- 9.1.0
- 9.0.3
- 9.0.2
- 9.0.1
- 9.0.0
- 8.12.5
- 8.12.4
- 8.12.3
- 8.12.2
- 8.12.1
- 8.12.0
- 8.11.17
- 8.11.16
- 8.11.15
- 8.11.14
- 8.11.13
- 8.11.12
- 8.11.11
- 8.11.10
- 8.11.9
- 8.11.8
- 8.11.7
- 8.11.6
- 8.11.5
- 8.11.4
- 8.11.3
- 8.11.2
- 8.11.1
- 8.11.0
- 8.10.1
- 8.10.0
- 8.9.6
- 8.9.5
- 8.9.4
- 8.9.3
- 8.9.2
- 8.9.1
- 8.9.0
- 8.8.7
- 8.8.6
- 8.8.5
- 8.8.4
- 8.8.3
- 8.8.2
- 8.8.1
- 8.8.0
- 8.7.9
- 8.7.8
- 8.7.7
- 8.7.6
- 8.7.5
- 8.7.4
- 8.7.3
- 8.7.2
- 8.7.1
- 8.7.0
- 8.6.24
- 8.6.23
- 8.6.22
- 8.6.20
- 8.6.19
- 8.6.18
- 8.6.17
- 8.6.16
- 8.6.15
- 8.6.14
- 8.6.13
- 8.6.12
- 8.6.11
- 8.6.10
- 8.6.9
- 8.6.8
- 8.6.7
- 8.6.6
- 8.6.5
- 8.6.4
- 8.6.3
- 8.6.2
- 8.6.1
- 8.6.0
- 8.5.5
- 8.5.4
- 8.5.3
- 8.5.0
- 8.4.3
- 8.4.2
- 8.4.1
- 8.4.0
- 8.3.3
- 8.3.2
- 8.3.1
- 8.3.0
- 8.1.0
- 8.0.0
- 6.1.0
- 6.0.0
- 5.0.3
- 5.0.2
- 5.0.0
- 4.7.15
- 4.7.14
- 4.7.12
- 4.7.11
- 4.7.10
- 4.7.9
- 4.7.8
- 4.7.7
- 4.7.6
- 4.7.5
- 4.6.8
- 4.2.17
- 4.0.7-a
- 4.0.5
- 4.0.2
X_ITE X3D Browser
Introduction
X_ITE is a comprehensive 3D library entirely written in JavaScript and uses WebGL for 3D rendering. Authors can publish X3D, VRML, glTF and other 3D file formats online within an HTML5 page with X_ITE that works with web browsers without prior plug-in installation. Since X3D is backwardly compatible, X_ITE can also be used as a VRML viewer.
🚀 For more information and a live preview, please visit our home page.
Funding
X_ITE needs your support. If you become a Patreon, we can improve X_ITE even better, or simply subscribe to receive the latest news.
Quick Links
- Getting Started
- Supported Nodes
- Accessing the External Browser
- DOM Integration
- Custom Shaders
- glTF Sample Viewer
Using X_ITE with a CDN
Using a CDN improves website performance, reliability, and security by caching content closer to users, distributing traffic loads, and providing protection against attacks.
If you are going to use X_ITE in a production environment, you should use a fixed version of X_ITE. You can get a list of all available versions here on npm.
jsDelivr CDN
jsDelivr is an open-source content delivery network (CDN) renowned for its no-cost access, swift performance, and reliable service.
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@11.4.2/dist/x_ite.min.js"></script>
<!-- or as ES module for use in scripts -->
<script type="module">
import X3D from "https://cdn.jsdelivr.net/npm/x_ite@11.4.2/dist/x_ite.min.mjs";
</script>
Info: It is no longer necessary to include the CSS file.
Get it from NPM
To install, use the following command:
$ npm install x_ite
Maybe you are curious now how to use X_ITE with Electron?
Also try x_ite-node, a pure Node.js version, without any dependencies on Electron or any browser. Suitable for just reading 3D files, analyzing, processing and generating X3D.
$ npm install x_ite-node
Usage
This script initializes an X3D canvas within an HTML page, configuring it to contain a scene, a camera and a geometric cube with default material properties. It then animates the rotation of the cube within the scene, ensuring that the camera captures the dynamic action.
Declarative Syntax
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@11.4.2/dist/x_ite.min.js"></script>
<x3d-canvas>
<X3D profile='Interchange' version='4.0'>
<head>
<unit category='angle' name='degree' conversionFactor='0.017453292519943295'></unit>
</head>
<Scene>
<Viewpoint
description='Initial View'
position='2.869677 3.854335 8.769781'
orientation='-0.7765887 0.6177187 0.1238285 28.9476440862198'></Viewpoint>
<Transform DEF='Box'
rotation='0 1 0 0'>
<Shape>
<Appearance>
<Material></Material>
</Appearance>
<Box></Box>
</Shape>
</Transform>
<TimeSensor DEF='Timer'
cycleInterval='10'
loop='true'></TimeSensor>
<OrientationInterpolator DEF='Rotor'
key='0, 0.25, 0.5, 0.75, 1'
keyValue='0 1 0 0, 0 1 0 90, 0 1 0 180, 0 1 0 270, 0 1 0 0'></OrientationInterpolator>
<ROUTE fromNode='Timer' fromField='fraction_changed' toNode='Rotor' toField='set_fraction'></ROUTE>
<ROUTE fromNode='Rotor' fromField='value_changed' toNode='Box' toField='set_rotation'></ROUTE>
</Scene>
</X3D>
</x3d-canvas>
Pure JavaScript
The same scene can also be created using pure JavaScript:
<script type="module">
import X3D from "https://cdn.jsdelivr.net/npm/x_ite@11.4.2/dist/x_ite.min.mjs";
const
browser = X3D .getBrowser (),
scene = await browser .createScene (browser .getProfile ("Interchange"), browser .getComponent ("Interpolation", 1));
// Create Viewpoint:
const viewpointNode = scene .createNode ("Viewpoint");
viewpointNode .set_bind = true;
viewpointNode .description = "Initial View";
viewpointNode .position = new X3D .SFVec3f (2.869677, 3.854335, 8.769781);
viewpointNode .orientation = new X3D .SFRotation (-0.7765887, 0.6177187, 0.1238285, 0.5052317);
scene .rootNodes .push (viewpointNode);
// Create Box:
const
transformNode = scene .createNode ("Transform"),
shapeNode = scene .createNode ("Shape"),
appearanceNode = scene .createNode ("Appearance"),
materialNode = scene .createNode ("Material"),
boxNode = scene .createNode ("Box");
appearanceNode .material = materialNode;
shapeNode .appearance = appearanceNode;
shapeNode .geometry = boxNode;
transformNode .children .push (shapeNode);
scene .rootNodes .push (transformNode);
// Give the node a name if you like.
scene .addNamedNode ("Box", transformNode);
// Create animation:
const
timeSensorNode = scene .createNode ("TimeSensor"),
interpolatorNode = scene .createNode ("OrientationInterpolator");
timeSensorNode .cycleInterval = 10;
timeSensorNode .loop = true;
for (let i = 0; i < 5; ++ i)
{
interpolatorNode .key [i] = i / 4;
interpolatorNode .keyValue [i] = new X3D .SFRotation (0, 1, 0, Math .PI / 2 * i);
}
scene .rootNodes .push (timeSensorNode, interpolatorNode);
// Add routes:
scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
scene .addRoute (interpolatorNode, "value_changed", transformNode, "set_rotation");
// Show scene.
await browser .replaceWorld (scene);
</script>
<!-- x3d-canvas element comes here: -->
<x3d-canvas></x3d-canvas>
Contributing
Contributions are always welcome. There is no special form to do this. A good idea is to fork the X_ITE repository and create a separate branch from the development
branch, make your changes and then make a pull request.
License
X_ITE is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 only, as published by the Free Software Foundation.
See Also
- x_ite-node — Pure Node.js version of X_ITE
- x3d-tidy — X3D converter, beautifier and minimizer
- x3d-image — render image files from X3D
- sunrize — a multi-platform X3D editor