xml3d.js is a XML3D implementation based on WebGL and JavaScript. The aim of XML3D is to make the development of 3D-Web applications as easy as developing web pages. Every web developer who knows how to use the DOM (or jQuery) should also be able to use XML3D.
XML3D is also an evaluation platform of the W3C Community Group Declarative 3D for the Web and a FIWARE Generic Enabler.
Our small examples repository holds simple examples of individual features. Below are some more complete demos:
Download the library and include it in your html page.
<script src="http://www.xml3d.org/xml3d/script/xml3d.js"></script>
If a standard navigation mode is sufficient for your web application, you can include the camera controller that comes with xml3d.js:
<script src="http://www.xml3d.org/xml3d/script/xml3d.js"></script>
<script src="http://www.xml3d.org/xml3d/script/tools/camera.js"></script>
We have an extensive test suite and some known issues.
You will need node.js. Then install the grunt cli:
npm install -g grunt-cli
Clone a copy of the main xml3d.js git repo by running:
git clone git://github.com/xml3d/xml3d.git
Enter the xml3d.js directory and run the build script:
cd xml3d.js && npm run build
The built version of xml3d.js will be put in the build/output/
subdirectory. Alternatively you have several grunt tasks that you can run directly (e.g. grunt min
). Run grunt --help
to get a list of available grunt tasks.
We have an overview documentation in each subfolder of the project:
- build - The build system of xml3d.js.
- doc - Documentation related to FIWARE
- spec - The specification for XML3D in re-spec form
- src - The actual source code of the xml3d.js library
- tests - The test suite
- tools - Several tools that can be used optionally with xml3d.js
In addition a full specification and API description is provided, which also includes many examples and code snippets. This repository's Wiki also contains some tutorials and additional help.
5.2 - 10.05.2016
- Support for Web Components - demo 1, demo 2 spec, wiki
- CSS transforms now support CSS transitions - demo, spec
- Materials can now change certain WebGL states during rendering - demo, wiki
- Additional example scenes: STL plugin (link), custom material (link)
5.1 - 07.01.2016
- Resource system is now based on the Fetch API and Promises
- Better FormatHandler interface for custom mesh loaders - wiki
- Support for the CSS z-index property - demo, spec
- New onRequest interface for custom HTTP headers - wiki
- Memory performance improvements when removing elements from the DOM
5.0 - 16.10.2015 (Not backwards compatible!)
- New specification and API description - link
- Support for CSS 'display' property - demo, doc
- Improved math types - doc
- Simplified light definitions - 111
- New 'string' data type in Xflow - doc
- Various API changes - doc
- Improved standard camera controller (camera.js) - link
4.9 - 31.03.2015
- External Xflow Operators - demo, doc
- IE 11 Support
- Grunt build system now based on Browserify
- Source Mapping for the xml3d-dev build
- Bugfixes: 37, 73, 87, 88, 92, 98, 100, 104
4.8 - 18.12.2014
- Recursive Assets - demo, doc, issue
- Load Events - doc
- iOS 8 Support
- New build system based on grunt
- Improved texture filtering - doc
- Draw multiple line strips in a single mesh
<mesh>
- demo, demo, doc - Bugfixes: 9, 46, 56, 74, 75, 76, 77, 79, 82
4.7 - 17.10.2014
- Assets / Configurable Instances - demo, slides
- shade.js integration (beta) - demo, slides
- Shadow Maps - demo
- More options for texture filtering
- Bugfixes: #69, #71
4.6 - 15.04.2014
- Custom RenderTrees and the RenderInterface
- Added Screen-space Ambient Occlusion to standard render pipeline
- Added system to set renderer-specific options
- Infrastructure for WebCL-based Xflow operators
4.5 - 14.11.2013
- Full support for HTML encoding, all demos in HTML now
- Set data values efficiently using TypedArray - demo, doc
- Override shader attributes on a per-object basis - demo
- Improved Error Messages
- Reuse of Xflow graphs using new
<dataflow>
element - demo, doc - Many performance improvements, e.g. Frustum Culling and Paging
- Support for mult-touch events
- Dynamic near/far clip planes that adapt to scene size
- #24: WebWorker support for MeshLoader plug-ins - demo
- #25: Smarter handling of cached resources
4.4 - 23.04.2013
- Image Processing with Xflow (also as standalone library) - demo
- Transformations as Xflow sink
- Augemented Reality (AR) - demo
- Keyframe animations
- Generalized resources for meshes, shaders, etc.
- Xflow API: Observer Xflow graph from JavaScript
- Canvas resizing demo
- Issues: Fixed #2, Fixed #3
4.3 - 18.12.2012
- Xflow support, including
- External references in XML format - demo
- 'onload' event for <xml3d> element
- Support for video textures - demo
- Support to use a webcam stream as video texture via WebRTC API - demo
- Support of spot lights - demo
- Support of CSS 3D Transforms in style attribute - demo
- Improved debug output
4.2 - 14.09.2012
- Hardware accelerated object picking expanded to 16,7 mio objects
- Emissive texture map support in diffuse and phong shader - demo
- Specular map support in phong shader - demo
- New mechanism for custom shaders - demo
- Support of directional lights (finally) - demo
- Support of external data resources in JSON format - demo
- New mechanism to register loaders for external formats - demo
4.1 - 19.07.2012
- Initial release on GitHub