_ _ _ _____ ___ __ __ _(_) | _(_)___ / ( _ ) / /_ ___ ___ _ __ ___ \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ \ V V /| | <| |___) | (_) | (_) | (_| (_) | | | | | | \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|
Développé par | MrDoob et autres auteurs de Three.js |
---|---|
Première version | |
Dernière version | r159 () |
Dépôt | github.com/mrdoob/three.js |
Écrit en | JavaScript |
Système d'exploitation | Multiplateforme |
Type |
Interface de programmation Bibliothèque JavaScript Bibliothèque logicielle |
Licence | Licence MIT |
Site web | threejs.org |
Three.js est une bibliothèque JavaScript pour créer des scènes 3D dans un navigateur web. Elle peut être utilisée avec la balise canvas du HTML5 sans avoir besoin d'un plugin. Le code source est hébergé sur le GitHub de son créateur mrDoob.
Son principe est d'être accessible à tout le monde, elle permet des rendus en WebGL, CSS3D et SVG.
Sa logique est proche - bien que plus moderne - du moteur graphique Shockwave d'Adobe, qui était l'ancien standard de la 3D en navigateur avant la généralisation du WebGL. Les objets sont rangés en arborescence de matrices, avec un système parent/enfants. Le matériau par défaut est très simple mais il dispose de nombreuses options pour y ajouter divers effets.
La bibliothèque contient par exemple les fonctionnalités suivantes :
Le code suivant crée une scène et ajoute une caméra et un cube, une balise de rendu canvas s'ajoute à la page. Une fois chargé, le cube tourne sur son axe X et Y.
<script>
var camera, scene, renderer,
geometry, material, mesh;
init();
animate();
function init() {
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
camera.position.z = 1000;
geometry = new THREE.BoxGeometry( 200, 200, 200 );
material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
renderer = new THREE.CanvasRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
}
function animate() {
// note: three.js includes requestAnimationFrame shim
requestAnimationFrame( animate );
render();
}
function render() {
mesh.rotation.x += 0.01;
mesh.rotation.y += 0.02;
renderer.render( scene, camera );
}
</script>
Livres sur la programmation avec Three.js: