/three.js

JavaScript 3D library.

Primary LanguageJavaScriptMIT LicenseMIT

three.js

JavaScript 3D library

The aim of the project is to create a lightweight 3D library with a very low level of complexity — in other words, for dummies. The library provides <canvas>, <svg>, CSS3D and WebGL renderers.

ExamplesDocumentationMigratingHelp

Usage

Download the minified library and include it in your html. Alternatively see how to build the library yourself.

<script src="js/three.min.js"></script>

This code creates a scene, then creates a camera, adds the camera and cube to the scene, creates a <canvas> renderer and adds its viewport in the document.body element.

<script>

	var camera, scene, renderer;
	var geometry, material, mesh;

	init();
	animate();

	function init() {

		camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
		camera.position.z = 1000;

		scene = new THREE.Scene();

		geometry = new THREE.CubeGeometry( 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 );

		mesh.rotation.x += 0.01;
		mesh.rotation.y += 0.02;

		renderer.render( scene, camera );

	}

</script>

Change log

2013 02 15 - r56 (408,927 KB, gzip: 97,095 KB)

2013 01 15 - r55 (406,462 KB, gzip: 96,542 KB)

  • Added set(), identity(), copy(), multiplyScalar(), determinant(), getInverse() and clone() to Matrix3. (bhouston)
  • Added a refactored WebGLRenderer under the WebGLRenderer2 name (may become WebGLRenderer next release). (gero3)
  • Optimised Matrix4's determinant(). (bhouston)
  • Added negate() to Plane. (bhouston)
  • Added containsPoint() and intersectsObject() to Frustum. (bhouston)
  • Fixed MeshNormalMaterial rendering in CanvasRenderer and SVGRenderer. (mrdoob)
  • Moved Matrix*/Quaternion's multiply* to Vector*'s .apply*. (mrdoob)
  • Added MeshNormalMaterial with SmoothShading support to CanvasRenderer. (mrdoob)
  • Added Edit / Clone to the editor. (mrdoob)
  • Fixes to ArrowHelper. (bhouston and WestLangley)
  • Improved Geometry's mergeVertices(). (bhouston)
  • Improved LatheGeometry. (bhouston and WestLangley)
  • Added insertPass to EffectComposer. (alteredq)
  • Added support for BufferGeometry support to Line. (arodic)
  • Added intersectsSphere to Sphere. (Fox32)
  • Added Tone Mapping to WebGLDeferredRenderer. (alteredq)
  • Made updateMorphTargets a public method of Mesh. (jonobr1)
  • Added add(), addColors(), addScalar(), multiply() and multiplyScalar() to Color. (mrdoob)
  • Renamed Vector*/Matrix*/Quaternion's add()/sub()/cross()... to addVectors()/subVectors()/crossVectors().... (mrdoob)
  • Renamed Vector*/Matrix*/Quaternion's addSelf()/subSelf()/crossSelf()... to add()/sub()/cross().... (mrdoob)
  • Moved GeometryUtils's explode() and tessellate() to ExplodeModifier and TessellateModifier. (mrdoob)
  • Moved BinaryLoader out of the lib to examples folder. (mrdoob)
  • Added OBJExporter. (mrdoob)
  • Implemented pinch gesture to TrackballControls. (ericnoble and mrdoob)
  • Firefox support in OrbitControls.. (mrdoob)
  • Added zbuffer to SoftwareRenderer and started adding material handling. (rygorous and mrdoob)
  • Moved CanvasRenderer/SVGRenderer x/y clipping to Projector. (mrdoob)
  • Added applyEuler() and applyAxisAngle() in Vector3. (WestLangley)
  • Improvements to FirstPersonControls. (RommelVR)

2012 12 25 - r54 (411,352 KB, gzip: 98,639 KB)

  • Added nodejs, perl, python and ruby based localhost server. (zz85)
  • Added support for alphaTest to Sprite. (alteredq)
  • Added WebGLDeferredRenderer with all sorts of goodness. (mpanknin and alteredq)
  • Changed Sprite to use SpriteMaterial instead of custom object. (alteredq)
  • Added sourcemap option to python and nodejs build systems. (zz85 and gero3)
  • Non-indexed BufferGeometry. (benaadams)
  • Added support for loading cubemap DDS textures. (MiiBond)
  • Added manual mipmapping support to Texture and DataTexture. (benaadams and alteredq)
  • Added style strings support Color. (mrdoob)
  • Added new fbx converter. (zfedoran)
  • Improvements to SceneLoader. (RommelVR and alteredq)
  • Added Plane class and implemented in Frustum. (bhouston)
  • Added Box3, Sphere math classes and implemented in Geometry. (bhouston)
  • Added bilinear filtered shadow map. (MiiBond)
  • Added test framework. (bhouston)
  • Replaced UV with Vector2. (mrdoob)
  • Renamed Ray to Raycaster and added new Ray math class. (bhouston)
  • Improvements to CSS3DRenderer. (mrdoob, benaadams and zz85)
  • Implemented .dispose() to Geometry, BufferGeometry, Texture, Material and WebGLRenderTarget for deallocating from GPU. (mrdoob and alteredq)
  • Moved SubdivisionModifier out of the build to examples/js/modifiers. (mrdoob)
  • Improvements to ColladaLoader. (dgossow)
  • Added Blender 2.65 exporter. (tapio)
  • Added .setMaterialIndex() to GeometryUtils. (gero3)
  • Added benchmark framework. (bhouston)
  • Fixed Blender scene exporter rotations. (alteredq and WestLangley)
  • Added devicePixelRatio support to CanvasRenderer and WebGLRenderer. (mrdoob)

2012 11 15 - r53 (392,799 KB, gzip: 96,044 KB)

  • Lots of improvements to editor. Including possibility to export geometry and scene. (alteredq and mrdoob)
  • Sprite no longer gets its size from the texture. (alteredq and mrdoob)
  • Improved CSS3DRenderer. (mrdoob and alteredq)
  • Added support for vertex normals in Ribbon. (alteredq)
  • Object3D's .clone() is now recursive. (mrdoob)
  • Added support for fog in Sprite. (alteredq)
  • Scene format now supports nested lights, cameras and SkinnedMesh, OBJ, VTK, STL, UTF8 and Collada files. (alteredq)
  • Object3D's .lookAt() now working when using quaternions. (motin)
  • Added touch support to TrackballControls. (mrdoob)
  • Object sorting in WebGLRenderer is now stable, regardless of browser implementation. (alteredq)
  • MeshPhongMaterial's perPixel is not true by default. (alteredq)
  • Added LineDashedMaterial. (alteredq)
  • Added .setContextStyle to Color. (greyscales)
  • Corrected normal matrix calculations. (WestLangley)
  • Added KaleidoShader, MirrorShader and RGBShiftShader. (felixturner)
  • Added area weighted vertex normals computation to Geometry. (alteredq)
  • Moved geometry.materials to MeshFaceMaterial. (gero3, alteredq and mrdoob)
  • Removed materials and sides from CubeGeometry. (mrdoob)
  • Move GeometryUtils's .clone() to Geometry. (mrdoob)

2012 10 15 - r52 (379,442 KB, gzip: 94,126 KB)

  • New node.js build system. (gero3)
  • Proper edge handling in SubdivisionModifier. (zz85)
  • Added defines parameter for adding preprocessor definitions to ShaderMaterial. (alteredq)
  • Split ShaderExtras into single files (BasicShader, BlendShader, ConvolutionShader, ... ). (mrdoob)
  • Added HueSaturationShader and BrightnessContrastShader. (tapio)
  • Fixed ColladaLoader not loading sometimes. (tapio)
  • Added material.vertexColors = THREE.FaceColor support to CanvasRenderer and SVGRenderer. (mrdoob)
  • Added Object3D.defaultEulerOrder. (mrdoob)
  • Replaced SceneUtils.traverseHierarchy and SceneUtils.showHierarchy with object.traverse. (mrdoob)
  • Added PointerLockControls. (mrdoob)
  • Completed more documentation pages. (sole)
  • Split SceneUtils.cloneObject into *.clone(). (mrdoob)
  • Simplified AxisHelper. (mrdoob)
  • Added GeometryExporter. (mrdoob)
  • Improved OrbitControls. (WestLangley)
  • Added GeometryLibrary, MaterialLibrary, TextureLibrary and ObjectLibrary (bear in mind that you can't rely on the GC now. Call *.deallocate() for removing). (mrdoob)
  • Moved *Controls out of the lib. (mrdoob)
  • Fixed shadows getting animated when skinning / morphing was disabled. (alteredq)
  • Added Manual section to the documentation pages. (oal)
  • Added .angleTo() to Vector3. (Wilt)
  • Many improvements to the editor. (mrdoob and alteredq)

2012 09 15 - r51 (405,491 KB, gzip: 99,389 KB)

  • Added STLLoader. (aleeper and mrdoob)
  • Optimised Ray (2x faster). (gero3)
  • Added .getDescendants method to Object3D. (gero3 and mrdoob)
  • SkinnedMesh can now work with MorphAnimMesh. (apendua)
  • Changed CameraHelper. Now it matches the camera independently of where it's in the scene graph. (mrdoob)
  • Removed the need for manually setting texture units with ShaderMaterial. (alteredq)
  • Added HemisphereLight. (alteredq)
  • Fixed WebGLRenderer handling of flip sided materials. (WestLangley and alteredq)
  • Added support to normals maps in MeshPhongMaterial. (crobi and alteredq)
  • Added handling of BufferGeometry for ParticleSystems. (alteredq)
  • Added support for compressed textures and cube maps to WebGLRenderer. (alteredq)
  • Outliner and Material panel improvements to the editor. (mrdoob)
  • Added material.emissive support to CanvasRenderer and SVGRenderer. (mrdoob)
  • Added handling of multiple UV layers and anisotropy to Blender exporter. (alteredq)
  • Handling bump and anisotropy in Loader and SceneLoader. (alteredq)
  • Added mousewheel support to TrackballControls. (jherrm)
  • Added MTLLoader and OBJMTLLoader. (angelxuanchang)
  • Updated UTF8Loader to latest version. (angelxuanchang and alteredq)
  • Pluginized SceneLoader. (alteredq)
  • Added support of object.renderDepth in Projector. (mrdoob)
  • Made build system more flexible. (mrdoob)
  • Many enhancements to SceneLoader. (alteredq)
  • Experimenting with CSS3DRenderer. (mrdoob)
  • Added ShapeGeometry. (jonobr1)
  • Fixes to Vector3's .setEulerFromRotationMatrix method.(WestLangley)

2012 08 15 - r50 (391,250 KB, gzip: 96,143 KB)

  • Experimenting with SoftwareRenderer. (mrdoob and rygorous)
  • Improved rotation conversion routines. (WestLangley)
  • Moved DOMRenderer and SVGRenderer out of common build. (mrdoob)
  • Improvements to Morph targets. (alteredq and gero3)
  • Added .deallocateMaterial method to WebGLRenderer. (alteredq)
  • Added .worldToLocal and .localToWorld methods to Object3D. (zz85 and WestLangley)
  • Added ConvexGeometry. (qiao)
  • Added node.js build system. (gero3)
  • Improvements to Blender exporter. (timbot and alteredq)
  • Added uvs and vertex colors support to ImmediateRenderObjects. (alteredq)
  • Started implementing LoadingMonitor and EventTarget in loaders. (mrdoob)
  • Added Path.ellipse. (linzhp)
  • Added near and far properties to Ray. (niklassa)
  • Added OrbitControls. (qiao, mrdoob and alteredq)
  • Completed some more documentation pages. (mrdoob, phenomnomnominal, FuzzYspo0N, poeschko, wwwtyro, maximeq and alteredq)
  • Completed lots more documentation pages. (sole)
  • Started reworking GUI. (mrdoob)
  • Improved python build system. (gero3)
  • Made VTKLoader parsing more robust. (mrdoob)
  • Added recursive flag to Ray. (mrdoob)
  • Handling resizes properly in controls and examples. (alteredq)
  • Improvements to ColladaLoader. (spacecookies)
  • Unflipped V coordinate across the whole library. (mrdoob and alteredq)
  • Refactored BufferGeometry. (alteredq)
  • Improved GL extensions initialisation in WebGLRenderer. (alteredq)
  • Rescued SkinnedMesh. (n3tfr34k and alteredq)
  • Made OBJLoader parsing more robust. (Dahie)
  • Implemented skinning via floating point textures. (alteredq)
  • Improved documentation system. (mrdoob and alteredq)
  • Added support for anisotropic texture filtering and standard derivatives in WebGLRenderer. (alteredq)
  • Added support for ParticleBasicMaterial without map in CanvasRenderer. (mrdoob)
  • SceneLoader now supports nested scene graphs and per object custom properties. (skfcz)
  • Camera doesn't need to be added to the scene anymore. (mrdoob)
  • Object3D's flipSided and doubleSided properties are now Material's side property. (alteredq and mrdoob)
  • Added .clone method to *Material. (gero3, mrdoob and alteredq)
  • IEWEBGL support. (iewebgl and mrdoob)
  • Added CircleGeometry. (hughes)
  • Added bumpMap to MeshPhongMaterial. (alteredq)
  • Added specularMap to MeshBasicMaterial, MeshLambertMaterial and MeshPhongMaterial. (alteredq)
  • Reworked python build system. (mrdoob)

2012 04 22 - r49 (364,242 KB, gzip: 89,057 KB)

  • Yet more ColladaLoader improvements. (ekitson, AddictArts and pblasco)
  • Created documentation system. (mrdoob)
  • Added some documentation. (mrdoob and sole)
  • Added MorphBlendMesh. (alteredq)
  • Added emissive component to WebGL Materials. (alteredq)
  • Added DepthPassPlugin. (alteredq)
  • Improvements to Path. (asutherland)
  • Improvements to Curve. (zz85)
  • Added ArrowHelper. (zz85 and WestLangley)
  • Changed depth sorting in WebGLRenderer to use world positions. (alteredq)
  • Improved physically based shading in WebGLRenderer. (WestLangley)
  • Changed depth sorting in Projector to use world positions. (mrdoob)
  • Added physical specular term also to normal map shader. (alteredq)
  • Added TubeGeometry. (zz85 and WestLangley)
  • Added needsUpdate flag to Material. (alteredq)
  • Fixed GeometryUtils.triangulateQuads. (alteredq)
  • Improvements to GeometryUtils.tessellate. (alteredq)
  • Change PlaneGeometry from XY to XZ. (mrdoob)
  • WebGLRenderer back to highp shader precision. (mrdoob)
  • Added deallocateRenderTarget to `WebGLRenderer. (kovleouf)
  • Support zIndex and scale into DOMRenderer. (ajorkowski)
  • Improvements to CameraHelper. (zz85)
  • Added 3D spline path extrusion support to ExtrudeGeometry. (zz85)
  • MarchingCubes moved out of the lib into /examples/js folder. (alteredq)
  • Added ImmediateRenderObject. (alteredq)
  • Renamed __dirty* to *NeedUpdate. (valette and mrdoob)
  • Added CustomBlending to Material and premultiplyAlpha to Texture. (alteredq)
  • Improvements to CubeCamera. (alteredq and mrdoob)
  • CanvasRenderer.setClearColor() and .setClearColorHex() now sets opacity to 1 when null. (mrdoob)
  • Fixed broken UVs in SubdivisionModifier. (zz85)
  • Renamed Matrix4's setTranslation, setRotationX, setRotationY, setRotationZ, setRotationAxis and setScale to makeTranslation, makeRotationX, makeRotationY, makeRotationZ, makeRotationAxis and makeScale. (mrdoob)
  • Matrix4 static methods makeFrustum, makePerspective, makeOrtho to non-static methods. (mrdoob)
  • Refactore handling of Matrix4 to Matrix3 inversion. (alteredq)
  • Added GodRays postprocessing. (huwb)
  • Added LinePieces support to Projector. (mrdoob)
  • Fixed UVs handling bug in GeometryUtils.tessellate. (alteredq)
  • Serious performance improvements to Matrix4, Matrix3 and Frustum. (gero3)
  • Fixes to LatheGeometry. (zz85)
  • Removed Vertex. Use Vector3 instead. (mrdoob)
  • Implemented real Spotlights. (alteredq)
  • Added ParametricGeometry. (zz85)
  • Added basic OBJLoader in /examples/js/loaders folder. (mrdoob)
  • Moved ColladaLoader and UTF8Loader to /examples/js/loaders folder. (mrdoob)
  • Added VTKLoader to /examples/js/loaders folder. (valette and mrdoob)
  • Blender exporter now supports linked groups. (Druidhawk)
  • Added visible property to Material. (mrdoob)
  • Removed Lamber+Texture support in CanvasRenderer. (mrdoob)
  • Fixed normals in CylinderGeometry. (qiao)
  • Added floating point textures support to WebGLRenderer. (mrdoob)
  • Renamed AnaglyphWebGLRenderer and co. to AnaglyphEffect & co. and moved to /examples/js/effects. (mrdoob)
  • Improvements to documentation system. (mrdoob and codler)
  • Added AsciiEffect. (zz85)

2012 03 04 - r48 (393,626 KB, gzip: 99,395 KB)

  • Added camera support to ColladaLoader. (jbaicoianu)
  • More ColladaLoader improvements. (mrdoob, AddictArts, kduong)
  • Updated IcosahedronGeometry and OctahedronGeometry with timothypratley's PolyhedronGeometry code which also brings TetrahedronGeometry. (mrdoob)
  • LOD should now behave as expected from anywhere in the scene graph. (mrdoob)
  • Added THREE.REVISION. (mrdoob)
  • Fixed cancelRequestAnimationFrame polyfill. (also)
  • Improvements to convert_obj_three.py. (alteredq)
  • Fixes to Geometry's .computeBoundingBox and .computeBoundingSphere. (alteredq)
  • Refactored ShadowMap shader. (alteredq)
  • Fixed handling of meshes with multiple materials in SceneLoader. (alteredq)
  • Changed Material's default ambient color to 0xffffff. (alteredq)
  • Added normals support to MorphTarget. (alteredq)
  • Added .setFrameRange and .setAnimationLabel to MorphAnimMesh. (alteredq)
  • Added handling of named animation sequences to MorphAnimMesh. (alteredq)
  • Extended MorphAnimMesh to be able to play animations backwards. (alteredq)
  • Added .generateDataTexture to ImageUtils. (alteredq)
  • Removed hierarchy support and .intersectScene() from Ray. (mrdoob)
  • Added .triangulateQuads to GeometryUtils. (alteredq)
  • Projector and WebGLRenderer now handles doubleSided lighting properly. (mrdoob and alteredq)
  • Fixed MorphAnimMesh playback bug where the last frame didn't display. (alteredq)
  • TrackballControls implements EventTarget. (mrdoob)
  • Added .clone to Vertex, Face3 and Face4. (alteredq)
  • Added .explode and .tessellate to GeometryUtils. (alteredq)
  • Added .lerpSelf to Vector2, Vector3 and UV. (alteredq)
  • Fixed DOMRenderer by using single-materials. (ajorkowski )
  • Added .setPrecision to Ray. (mrdoob)
  • Blender exporter now honors the "Flip YZ" option. (rectalogic)
  • Added NoBlending to Material and WebGLRenderer. (kovleouf)
  • Added .applyMatrix to Object3D. (mrdoob and alteredq)
  • Added .attach and .detach to SceneUtils to retain position in space. (alteredq)
  • Added .sign to Math. (alteredq)
  • Implemented sphinx based documentation. (ivankuzev)
  • Documented part of the API. (ivankuzev and alteredq)
  • Replaced sphinx based documentation with compilation-less sytem. (mrdoob)
  • Added default material to Mesh, Line and ParticleSystem. (mrdoob)

2012 01 14 - r47 (378,169 KB, gzip: 96,015 KB)

  • Resurrected lens flares as custom WebGLRenderer plugin. (alteredq)
  • Fixed typos in Matrix4's transpose() and getInverse(). (ekitson)
  • "Pluginized" Sprites and ShadowMaps. (alteredq)
  • Added Frustum class. (alteredq)
  • ColladaLoader improvements. (ekitson, jterrace, mrdoob and alteredq)
  • Lights in a hierarchy are now supported when using WebGLRenderer. (alteredq)
  • Included requestAnimationFrame shim in the lib. (mrdoob)
  • Started documentation effort in /doc (using sphinx). (jterrace)
  • Changed default shader precission to mediump. (mrdoob)
  • Added support for the format OpenCTM. (alteredq)
  • Added BufferGeometry for direct rendering from typed arrays. (alteredq)
  • Extended Texture class with format and type parameters. (alteredq)
  • Automatically reducing texture to max size of WebGL hardware. (greggman and alteredq)
  • Improved WebGLRenderer's Shadow Map code. (alteredq)
  • Checking for xhr.overrideMimeType before using it (fixing IE support). (mrdoob and alteredq)
  • Improved ATI and ANGLE support in across WebGLRenderer shaders. (alteredq)
  • Added generateMipmaps property to Texture and RenderTarget. (alteredq)
  • Frustum properly handling children with scaled parents. (avinoamr)
  • Fixed Ray when dealing with big polygons. (WestLangley)
  • Fixed WebGLRenderer bug where depth buffer was not cleared. (ekitson)
  • Added CameraHelper objects for visualising both Perspective and Orthographic cameras. (alteredq)
  • Improvements to Path. (zz85)
  • Improvements to Postprocessing stack. (alteredq)
  • Added shadows for DirectionalLights. (alteredq)
  • Added Gyroscope object. (alteredq)
  • Added alpha and premultipliedAlpha parameters to WebGLRenderer. (mrdoob)
  • Ray properly handling children with scaled parents. (mrdoob)
  • Renamed Axes object to AxisHelper. (mrdoob)

2011 11 17 - r46 (343.383 KB, gzip: 87.468 KB)

  • Added reflections to Normal Mapping. (alteredq)
  • Ray now checks also object children. (mrdoob)
  • *Loader.load( parameters ) to *Loader( url, callback, texturePath ). (mrdoob and alteredq)
  • Reworked scene graph setup. (mrdoob and alteredq)
  • Fixed CanvasRenderer's SphericalReflectionMapping rendering. (mrdoob)
  • Improved SubdivisionModifier. (zz85)
  • Refactored *Controls to use externally supplied time delta. (alteredq)
  • Improvements to CombinedCamera. (zz85)
  • ColladaLoader doesn't create extra Object3D. (mrdoob)
  • Improvements to Lambert and Phong materials. (alteredq)
  • Removed multi-materials for simplicity reasons. (Multi-materials will come back with MeshLayerMaterial hopefully soon) (alteredq)
  • Fixed Ray not considering edges. (mrdoob)
  • Massive cleanup to WebGLRenderer. (alteredq)
  • Ray optimisations. (mrdoob and alteredq)
  • JSON file format is now worker-less (this was crashing Chrome/Firefox with dealing with many assets). (alteredq)
  • Improved CubeGeometry, PlaneGeometry, IcosahedronGeometry and SphereGeometry. (mrdoob)
  • Improvements to Curve. (zz85)
  • Removed Collisions code and focusing on Ray. (mrdoob)
  • Added cloneObject() method to SceneUtils. (alteredq)

2011 10 06 - r45 (340.863 KB, gzip: 86.568 KB)

  • Object/Scene.add*() and Object/Scene.remove*() are now Object/Scene.add() and Object/Scene.remove(). (mrdoob)
  • LOD.add() is now LOD.addLevel(). (mrdoob)
  • Reworked CylinderGeometry. (mrdoob)
  • Added .depthWrite and .fog to Material. (alteredq)
  • Added .applyMatrix to Geometry. (mrdoob)
  • Improved postprocessing stack in /examples/js/postprocessing. (alteredq)
  • Added a realistic skin shading example. (alteredq)
  • Started of a GUI for composing scenes and autogenerate code. (mrdoob)
  • Added .center() to GeometryUtils. (alteredq)
  • Fixed buggy scenegraph manipulation (adding/removing objects). (jsermeno, alteredq and skython)
  • Renamed MeshShaderMaterial to ShaderMaterial. (alteredq)
  • Fixed CanvasRenderer ignoring color of SmoothShadinged MeshLambertMaterial. (mrdoob)
  • Renamed renderer.data to renderer.info. (mrdoob)
  • Fixed ShadowMap aspect ratio. (kig and alteredq)
  • Fixed Loader's extractUrlbase() incorrect output for short urls. (rectalogic and alteredq)
  • Added .color and .visible support to Sprite. (alteredq)
  • Added Face4, Vertex Colors and Maya support to ColladaLoader. (mrdoob)
  • Rewrite of lighting shader code. (alteredq)
  • Improved internal array concatenation approach. (pyrotechnick)
  • WebGLRenderer performance improvements. (alteredq)
  • Added lower level immediate rendering support to WebGLRenderer. (NINE78 and alteredq)
  • Added CubeCamera for rendering cubemaps. (alteredq)
  • Improved GeometryUtils's .mergeVertices() performance. (zz85)
  • Removed Camera's .target. (mrdoob)
  • WebGLRenderer's .clear() is now .clear( color, depth, stencil ). (mrdoob)
  • Added .autoClearColor, .autoClearDepth and .autoClearStencil to WebGLRenderer. (mrdoob and alteredq)
  • Added OctahedronGeometry. (clockworkgeek)
  • Splitted Camera into PerspectiveCamera and OrthographicCamera. (mrdoob and alteredq)
  • Special cameras are now *Controls. (alteredq and mrdoob)
  • Added SubdivisionModifier. (zz85)
  • Projector's unprojectVector() now also works with OrthographicCamera. (jsermeno)
  • Added .setLens() method to PerspectiveCamera. (zz85)
  • Added Shadow Maps, Texture's .offset and .repeat and reflections support to Normal Map shader. (alteredq)

2011 09 04 - r44 (330.356 KB, gzip: 84.039 KB)

  • Added ColladaLoader. (timknip2)
  • Improved ExtrudeGeometry. (zz85)
  • Fixed CylinderGeometry normals. (alteredq)
  • Fixed issue with WebGLRenderer.setTexture (rectalogic)
  • Fixed TorusGeometry normals. (mrdoob)
  • Fixed Ray behind-ray intersects. (mrdoob)
  • Added OrthoCamera. (alteredq)
  • Refactored postprocessing effects used in some examples. (alteredq)
  • Added .deallocateObject() and .deallocateTexture() methods to WebGLRenderer. (mrdoob)
  • Fixed a glitch in normal and phong shader. (evanw and alteredq)
  • Added .frustumCulled property to Object3D. (alteredq and mrdoob)

2011 08 14 - r43 (298.199 KB, gzip: 74.805 KB)

  • Improved Blender exporter - 2.58 (and 2.59) support, normals maps, specular, ao maps... (alteredq)
  • Added CORS to ImageUtils. (mrdoob)
  • Refactored TextGeometry and added Shape, Curve, Path, ExtrudeGeometry, TextPath. (zz85 and alteredq)
  • Added handling of custom attributes for ParticleSystems. (alteredq)
  • Fixed CanvasRenderer.setClearColor. (mrdoob, StephenHopkins and sebleedelisle)
  • Improved uniform handling in WebGLRenderer. (alteredq)
  • Implemented Shadow Mapping in WebGLRenderer. (alteredq)
  • Added Spotlight light type. (alteredq)
  • Fixed constructor-less prototypes. (pushmatrix)
  • Added DataTexture. (alteredq)
  • WebGLRenderer opaque pass now renders from front to back. (alteredq)
  • Simplified Color. (mrdoob)
  • Added preserveDrawingBuffer option to WebGLRenderer. (jeromeetienne)
  • Added UTF8Loader for loading the new, uber compressed, UTF8 format. (alteredq)
  • CanvasRenderer now supports RepeatWrapping, texture.offset and texture.repeat. (mrdoob)
  • Removed Stencil Shadows and Lensflare code. (mrdoob)

2011 07 06 - r42 (277.852 KB, gzip: 69.469 KB)

  • Added AnaglypWebGLRenderer and CrosseyedWebGLRenderer. (mrdoob, alteredq and marklundin)
  • Added TextGeometry. (zz85 and alteredq)
  • Added setViewOffset method to Camera. (greggman)
  • Renamed geometries to *Geometry. (mrdoob)
  • Improved Blender exporter. (alteredq, sweetfish and Jhonnyg)
  • Added Blender 2.58 exporter. (georgik)
  • Fixed Matrix4.multiply(). (thanks lukem1)
  • Added support for additional Euler rotation orders in Matrix4. (rectalogic)
  • Renamed QuakeCamera to FirstPersonCamera. (chriskillpack)
  • Improved Normal Map Shader. (alteredq)
  • Collision now supports Object3D.flipSided and Object3D.doubleSided. (NINE78)
  • Removed most of SceneUtils methods. (mrdoob)
  • Removed Sound object and SoundRenderer. (mrdoob)

2011 05 31 - r41/ROME (265.317 KB, gzip: 64.849 KB)

(Up to this point, some RO.ME specific features managed to get in the lib. The aim is to clean this up in next revisions.)

  • Improved Blender Object and Scene exporters. (alteredq)
  • Fixes on WebGL attributes. (alteredq and empaempa)
  • Reduced overall memory footprint. (mrdoob)
  • Added Face4 support to CollisionSystem. (NINE78)
  • Added Blender 2.57 exporter. (remoe)
  • Added Particle support to Ray. (mrdoob and jaycrossler)
  • Improved Ray.intersectObject performance by checking boundingSphere first. (mrdoob)
  • Added TrackballCamera. (egraether)
  • Added repeat and offset properties to Texture. (mrdoob and alteredq)
  • Cleaned up Vector2, Vector3 and Vector4. (egraether)

2011 04 24 - r40 (263.774 KB, gzip: 64.320 KB)

  • Fixed Object3D.lookAt. (mrdoob)
  • More and more Blender exporter goodness. (alteredq and mrdoob)
  • Improved CollisionSystem. (drojdjou and alteredq)
  • Fixes on WebGLRenderer. (empaempa)
  • Added Trident object. (sroucheray)
  • Added data object to Renderers for getting number of vertices/faces/callDraws from last render. (mrdoob)
  • Fixed Projector handling Particles with hierarchies. (mrdoob)

2011 04 09 - r39 (249.048 KB, gzip: 61.020 KB)

  • Improved WebGLRenderer program cache. (alteredq)
  • Added support for pre-computed edges in loaders and exporters. (alteredq)
  • Added Collisions classes. (drojdjou)
  • Added Sprite object. (empaempa)
  • Fixed *Loader issue where Workers were kept alive and next loads were delayed. (alteredq)
  • Added THREE namespace to all the classes that missed it. (mrdoob)

2011 03 31 - r38 (225.442 KB, gzip: 55.908 KB)

  • Added LensFlare light. (empaempa)
  • Added ShadowVolume object (stencil shadows). (empaempa)
  • Improved Blender Exporter plus added Scene support. (alteredq)
  • Blender Importer for loading JSON files. (alteredq)
  • Added load/complete callbacks to Loader (mrdoob)
  • Minor WebGL blend mode clean up. (mrdoob)
  • *Materials now extend Material (mrdoob)
  • material.transparent define whether material is transparent or not (before we were guessing). (mrdoob)
  • Added internal program cache to WebGLRenderer (reuse already available programs). (mrdoob)

2011 03 22 - r37 (208.495 KB, gzip: 51.376 KB)

  • Changed JSON file format. (Re-exporting of models required) (alteredq and mrdoob)
  • Updated Blender and 3DSMAX exporters for new format. (alteredq)
  • Vertex colors are now per-face (alteredq)
  • Geometry.uvs is now a multidimensional array (allowing infinite uv sets) (alteredq)
  • CanvasRenderer renders Face4 again (without spliting to 2 Face3) (mrdoob)
  • ParticleCircleMaterial > ParticleCanvasMaterial. Allowing injecting any canvas.context code! (mrdoob)

2011 03 14 - r36 (194.547 KB, gzip: 48.608 KB)

  • Added 3DSMAX exporter. (alteredq)
  • Fixed WebGLRenderer aspect ratio bug when scene had only one material. (mrdoob)
  • Added sizeAttenuation property to ParticleBasicMaterial. (mrdoob)
  • Added PathCamera. (alteredq)
  • Fixed WebGLRenderer bug when Camera has a parent. CameraCamera.updateMatrix method. (empaempa)
  • Fixed Camera.updateMatrix method and Object3D.updateMatrix. (mrdoob)

2011 03 06 - r35 (187.875 KB, gzip: 46.433 KB)

  • Added methods translate, translateX, translateY, translateZ and lookAt methods to Object3D. (mrdoob)
  • Added methods setViewport and setScissor to WebGLRenderer. (alteredq)
  • Added support for non-po2 textures. (mrdoob and alteredq)
  • Minor API clean up. (mrdoob)

2011 03 02 - r34 (186.045 KB, gzip: 45.953 KB)

  • Now using camera.matrixWorldInverse instead of camera.matrixWorld for projecting. (empaempa and mrdoob)
  • Camel cased properties and object json format (Re-exporting of models required) (alteredq)
  • Added QuakeCamera for easy fly-bys (alteredq)
  • Added LOD example (alteredq)

2011 02 26 - r33 (184.483 KB, gzip: 45.580 KB)

  • Changed build setup (build/Three.js now also include extras) (mrdoob)
  • Added ParticleSystem object to WebGLRenderer (alteredq)
  • Added Line support to WebGLRenderer (alteredq)
  • Added vertex colors support to WebGLRenderer (alteredq)
  • Added Ribbon object. (alteredq)
  • Added updateable textures support to WebGLRenderer (alteredq)
  • Added Sound object and SoundRenderer. (empaempa)
  • LOD, Bone, SkinnedMesh objects and hierarchy being developed. (empaempa)
  • Added hierarchies examples (mrdoob)

2010 12 31 - r32 (89.301 KB, gzip: 21.351 KB)

  • Scene now supports Fog and FogExp2. WebGLRenderer only right now. (alteredq)
  • Added setClearColor( hex, opacity ) to WebGLRenderer and CanvasRenderer (alteredq & mrdoob)
  • WebGLRenderer shader system refactored improving performance. (alteredq)
  • Projector now does frustum culling of all the objects using their sphereBoundingBox. (thx errynp)
  • material property changed to materials globaly.

2010 12 06 - r31 (79.479 KB, gzip: 18.788 KB)

  • Minor Materials API change (mappings). (alteredq & mrdoob)
  • Added Filters to WebGLRenderer
  • python build.py --includes generates includes string

2010 11 30 - r30 (77.809 KB, gzip: 18.336 KB)

  • Reflection and Refraction materials support in WebGLRenderer (alteredq)
  • SmoothShading support on CanvasRenderer/MeshLambertMaterial
  • MeshShaderMaterial for WebGLRenderer (alteredq)
  • Removed RenderableFace4 from Projector/CanvasRenderer (maybe just temporary).
  • Added extras folder with GeometryUtils, ImageUtils, SceneUtils and ShaderUtils (alteredq & mrdoob)
  • Blender 2.5x Slim now the default exporter (old exporter removed).

2010 11 17 - r29 (69.563 KB)

  • New materials API Still work in progress, but mostly there. (alteredq & mrdoob)
  • Line clipping in CanvasRenderer (julianwa)
  • Refactored CanvasRenderer and SVGRenderer. (mrdoob)
  • Switched to Closure compiler.

2010 11 04 - r28 (62.802 KB)

  • Loader class allows load geometry asynchronously at runtime. (alteredq)
  • MeshPhongMaterial working with WebGLRenderer. (alteredq)
  • Support for huge objects. Max 500k polys and counting. (alteredq)
  • Projector.unprojectVector and Ray class to check intersections with faces (based on mindlapse work)
  • Fixed Projector z-sorting (not as jumpy anymore).
  • Fixed Orthographic projection (was y-inverted).
  • Hmmm.. lib file size starting to get too big...

2010 10 28 - r25 (54.480 KB)

  • WebGLRenderer now up to date with other renderers! (alteredq)
  • .obj to .js python converter (alteredq)
  • Blender 2.54 exporter
  • Added MeshFaceMaterial (multipass per face)
  • Reworked CanvasRenderer and SVGRenderer material handling

2010 10 06 - r18 (44.420 KB)

  • Added PointLight
  • CanvasRenderer and SVGRenderer basic lighting support (ColorStroke/ColorFill only)
  • Renderer > Projector. CanvasRenderer, SVGRenderer and DOMRenderer do not extend anymore
  • Added computeCentroids method to Geometry

2010 09 17 - r17 (39.487 KB)

  • Added Light, AmbientLight and DirectionalLight (philogb)
  • WebGLRenderer basic lighting support (philogb)
  • Memory optimisations

2010 08 21 - r16 (35.592 KB)

  • Workaround for Opera bug (clearRect not working with context with negative scale)
  • Additional Matrix4 and Vector3 methods

2010 07 23 - r15 (32.440 KB)

  • Using new object UV instead of Vector2 where it should be used
  • Added Mesh.flipSided boolean (false by default)
  • CanvasRenderer was handling UVs at 1,1 as bitmapWidth, bitmapHeight (instead of bitmapWidth - 1, bitmapHeight - 1)
  • ParticleBitmapMaterial.offset added
  • Fixed gap when rendering Face4 with MeshBitmapUVMappingMaterial

2010 07 17 - r14 (32.144 KB)

  • Refactored CanvasRenderer (more duplicated code, but easier to handle)
  • Face4 now supports MeshBitmapUVMappingMaterial
  • Changed order of *StrokeMaterial parameters. Now it's color, opacity, lineWidth.
  • BitmapUVMappingMaterial > MeshBitmapUVMappingMaterial
  • ColorFillMaterial > MeshColorFillMaterial
  • ColorStrokeMaterial > MeshColorStrokeMaterial
  • FaceColorFillMaterial > MeshFaceColorFillMaterial
  • FaceColorStrokeMaterial > MeshFaceColorStrokeMaterial
  • ColorStrokeMaterial > LineColorMaterial
  • Rectangle.instersects returned false with rectangles with 0px witdh or height

2010 07 12 - r13 (29.492 KB)

  • Added ParticleCircleMaterial and ParticleBitmapMaterial
  • Particle now use ParticleCircleMaterial instead of ColorFillMaterial
  • Particle.size > Particle.scale.x and Particle.scale.y
  • Particle.rotation.z for rotating the particle
  • SVGRenderer currently out of sync

2010 07 07 - r12 (28.494 KB)

  • First version of the WebGLRenderer (ColorFillMaterial and FaceColorFillMaterial by now)
  • Matrix4.lookAt fix (CanvasRenderer and SVGRenderer now handle the -Y)
  • Color now using 0-1 floats instead of 0-255 integers

2010 07 03 - r11 (23.541 KB)

  • Blender 2.5 exporter (utils/export_threejs.py) now exports UV and normals (Thx kikko)
  • Scene.add > Scene.addObject
  • Enabled Scene.removeObject

2010 06 22 - r10 (23.959 KB)

  • Changed Camera system. (Thx Paul Brunt)
  • Object3D.overdraw = true to enable CanvasRenderer screen space point expansion hack.

2010 06 20 - r9 (23.753 KB)

  • JSLinted.
  • autoClear property for renderers.
  • Removed SVG rgba() workaround for WebKit. (WebKit now supports it)
  • Fixed matrix bug. (transformed objects outside the x axis would get infinitely tall :S)

2010 06 06 - r8 (23.496 KB)

  • Moved UVs to Geometry.
  • CanvasRenderer expands screen space points (workaround for antialias gaps).
  • CanvasRenderer supports BitmapUVMappingMaterial.

2010 06 05 - r7 (22.387 KB)

  • Added Line Object.
  • Workaround for WebKit not supporting rgba() in SVG yet.
  • No need to call updateMatrix(). Use .autoUpdateMatrix = false if needed. (Thx Gregory Athons).

2010 05 17 - r6 (21.003 KB)

  • 2d clipping on CanvasRenderer and SVGRenderer
  • clearRect optimisations on CanvasRenderer

2010 05 16 - r5 (19.026 KB)

  • Removed Class.js dependency
  • Added THREE namespace
  • Camera.x -> Camera.position.x
  • Camera.target.x > Camera.target.position.x
  • ColorMaterial > ColorFillMaterial
  • FaceColorMaterial > FaceColorFillMaterial
  • Materials are now multipass (use array)
  • Added ColorStrokeMaterial and FaceColorStrokeMaterial
  • geometry.faces.a are now indexes instead of references

2010 04 26 - r4 (16.274 KB)

  • SVGRenderer Particle rendering
  • CanvasRenderer uses context.setTransform to avoid extra calculations

2010 04 24 - r3 (16.392 KB)

  • Fixed incorrect rotation matrix transforms
  • Added Plane and Cube primitives

2010 04 24 - r2 (15.724 KB)

  • Improved Color handling

2010 04 24 - r1 (15.25 KB)

  • First alpha release