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.
Examples — Documentation — Migrating — Help
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>
2013 04 17 - r58 (411,339 KB, gzip: 97,298 KB)
- Removed
Matrix4
'stranslate()
,rotateX()
,rotateY()
,rotateZ()
androtateByAxis()
. (mrdoob) - Documentation improvements. (yurifury, tmcw, deepan2k5, cjshannon and sh0ot1e)
- Improvements to
WebGLRenderer
stable z sorting.(wereHamster and mrdoob) - Lots of progress in
SceneLoader2
andSceneExporter2
, now known asObjectLoader
andObjectExporter
. (mrdoob) - Added morphTargets support to
MeshNormalMaterial
. (mrdoob) - Renamed
Matrix4
'sextractPosition()
tocopyPosition()
. (mrdoob) - Editor now using localStorage for keeping state. (mrdoob and sole)
- Added
MaterialLoader
andMaterialExporter
. (mrdoob) - Renamed
Matrix4
'ssetRotationFrom*()
tomakeRotationFrom*()
. (bhouston) - Added
setGeometry()
andsetMaterial()
toMesh
. (mrdoob) - Editor primitives can now have the parameters updated at any point. (mrdoob)
- Renamed
Matrix4
'scompose()
tomakeFromPositionQuaternionScale()
and addedmakeFromPositionEulerScale()
. (bhouston) - Added
rotateOnAxis()
andtranslateOnAxis()
toObject3D
. (WestLangley) - Removed
Matrix4
'scrossVector()
. (WestLangley) - Added
PLYLoader
(ASCII files). (menway) - Added new
BokehShader2
. (zz85) - Replaced recursive calls in
PolyhedronGeometry
with an analytical construction of the geometry. (bhickey) - Renamed
Object3D
'sgetChildByName()
togetObjectByName()
and addedgetObjectById()
. (mrdoob) - Add
materialOffset
parameter toGeometryUtils
'smerge()
. (tapio) - Now using prototype based
EventDispatcher
. (mrdoob) - Added
linewidth
toShaderMaterial
. (mrdoob) LOD
support inRaycaster
. (mrdoob)- Added lights support to
ColladaLoader
. (mrdoob) - Started
WebGLRenderer3
. Aiming to find better solutions for the WebGL layer. (mrdoob) - Optimized the PCF shadow map filtering to use vector comparisons. (MiiBond)
SoftwareRenderer
now handles color changes at runtime. (mrdoob)- Added
BoxHelper
. (mrdoob) - Removed
setClearColorHex()
,parameters.clearColor
andparameters.clearAlpha
. (mrdoob) - Refactored
CameraHelper
. (mrdoob) - Fixed bug in
DirectionalLightHelper
andSpotLightHelper
. (mrdoob) - Fixed bug in Phong shader when using normal maps with derivative tangents. (WestLangley)
- Added support for
FaceColors
toSoftwareRenderer
. - Updated
convert_obj_three.py
docstring with current loader interface. (wilsaj) - Updated
OculusRiftEffect
. Now it should work with the original OculusRift. (troffmo5) - Fixed vertex normals and UVs for
CircleGeometry
. (WestLangley) - Added snapping to the editor. (arodic)
- Fixed
SpotLight
'sangle
andSpotlightHelper
's cone size bug. (WestLangley) - Using
CanvasRenderer
in the editor when there is no WebGL support. (mrdoob) - Update
STLLoader
with github improvements. (gero3) - Fixed UVs for faces that straddle the seam in
PolyhedronGeometry
. (WestLangley) - Cleaned up
ArrowHelper
. (WestLangley) - Added
VertexColors
support forLine
inCanvasRenderer
. (gero3) - Fixed
TrackballControls
zoom increment to normalize responsiveness across various inputs. (protometa)
2013 03 15 - r57 (403,818 KB, gzip: 96,416 KB)
- Added Renderer panel to the editor. (mrdoob)
- Added support for custom attributes to
BufferGeometry
. (zz85) CanvasRenderer
andSVGRenderer
behave likeWebGLRenderer
withMeshLambertMaterial
and no lights. (mrdoob)- Added
ColorConverter
in examples folder. (bhouston and zz85) - Fixed
SVGRenderer
when autoClear false. (mrdoob) - Made
WebGLRenderer
sorting truly stable. (wereHamster and mrdoob) - Improved
Object3D
andCamera
lookAt()
. (WestLangley) - Added
RingGeometry
. (merpnderp) - Made
OBJLoader
andOBJMTLLoader
more robust. (mrdoob) - Added pan to
OrbitControls
. (WestLangley and mrdoob) - Added
.getColumnFromMatrix()
toVector3
. (WestLangley) - Renamed
Object3D
properties
touserData
. (mrdoob) - Simplified
PointLightHelper
,DirectionalLightHelper
,SpotLightHelper
andHemisphereLightHelper
. (mrdoob) - Added
GridHelper
. (mrdoob) - Added
.clone()
method toAmbientLight
,PointLight
,DirectionalLight
,SpotLight
andHemisphereLight
. (mrdoob)
2013 02 15 - r56 (408,927 KB, gzip: 97,095 KB)
- Added
LineDashedMaterial
support toCanvasRenderer
. (sole) - Documentation improvements. (gero3, erich666, Stompfrog, morenoh149, chrmoritz and mrdoob)
- Added
Matrix3.getNormalMatrix()
andVector3.transformDirection()
. (WestLangley) - Added generator for Sublime Text 2 completion file. (mrdoob)
- Removed
Matrix4
'sgetPosition()
andgetColumn*()
. (mrdoob and bhouston) - Blender exporter improvements. (migvel)
- Added
Vector*.toArray()
. (mrdoob) - Added Maya exporter for JSON format. (etic)
- Improvements to
FlyControls
. (WestLangley) - Improvements to
OBJLoader
andOBJMTLLoader
. (edwardsp and Fktrcfylh) - Added
.reflect()
,projectOnVector()
andprojectOnPlane()
toVector3
. (bhouston) - Added
OculusRiftEffect
. (troffmo5) - Fixed loading of JSON format 2.0 files in the editor. (mrdoob and drewnoakes)
- Added
setHSL()
andgetHSL()
toColor
. (pksunkara and mrdoob) - Added binary files support to
STLLoader
. (aleeper) - Removed
setHSV()
,getHSV()
fromColor
. (mrdoob) - Replaced
ColorUtils.adjustHSV()
withColor
's.offsetHSL()
. (mrdoob) - Added
Line3
. (bhouston) - Added
linewidth
support toBufferGeometry
lines. (arodic) - Renamed
Box3
/Line3
/Plane
/Ray
/Sphere
's.transform()
toapplyMatrix4()
. (bhouston) - Added
smoothstep
andsmootherstep
toMath
. (bhouston) - Improvements to the editor. (drewnoakes)
- Added
.reset()
toTrackballControls
. (WestLangley) - Added two edge detection shader effects. (zz85)
- Unit conversion handling in
ColladaLoader
. (jihoonl)
2013 01 15 - r55 (406,462 KB, gzip: 96,542 KB)
- Added
set()
,identity()
,copy()
,multiplyScalar()
,determinant()
,getInverse()
andclone()
toMatrix3
. (bhouston) - Added a refactored
WebGLRenderer
under theWebGLRenderer2
name (may becomeWebGLRenderer
next release). (gero3) - Optimised
Matrix4
'sdeterminant()
. (bhouston) - Added
negate()
toPlane
. (bhouston) - Added
containsPoint()
andintersectsObject()
toFrustum
. (bhouston) - Fixed
MeshNormalMaterial
rendering inCanvasRenderer
andSVGRenderer
. (mrdoob) - Moved
Matrix*/Quaternion
'smultiply*
toVector*
's.apply*
. (mrdoob) - Added
MeshNormalMaterial
withSmoothShading
support toCanvasRenderer
. (mrdoob) - Added
Edit / Clone
to the editor. (mrdoob) - Fixes to
ArrowHelper
. (bhouston and WestLangley) - Improved
Geometry
'smergeVertices()
. (bhouston) - Improved
LatheGeometry
. (bhouston and WestLangley) - Added
insertPass
toEffectComposer
. (alteredq) - Added support for
BufferGeometry
support toLine
. (arodic) - Added
intersectsSphere
toSphere
. (Fox32) - Added Tone Mapping to
WebGLDeferredRenderer
. (alteredq) - Made
updateMorphTargets
a public method ofMesh
. (jonobr1) - Added
add()
,addColors()
,addScalar()
,multiply()
andmultiplyScalar()
toColor
. (mrdoob) - Renamed
Vector*/Matrix*/Quaternion
'sadd()/sub()/cross()...
toaddVectors()/subVectors()/crossVectors()...
. (mrdoob) - Renamed
Vector*/Matrix*/Quaternion
'saddSelf()/subSelf()/crossSelf()...
toadd()/sub()/cross()...
. (mrdoob) - Moved
GeometryUtils
'sexplode()
andtessellate()
toExplodeModifier
andTessellateModifier
. (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 toProjector
. (mrdoob) - Added
applyEuler()
andapplyAxisAngle()
inVector3
. (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 useSpriteMaterial
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
andDataTexture
. (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 inFrustum
. (bhouston) - Added
Box3
,Sphere
math classes and implemented inGeometry
. (bhouston) - Added bilinear filtered shadow map. (MiiBond)
- Added test framework. (bhouston)
- Replaced
UV
withVector2
. (mrdoob) - Renamed
Ray
toRaycaster
and added newRay
math class. (bhouston) - Improvements to
CSS3DRenderer
. (mrdoob, benaadams and zz85) - Implemented
.dispose()
toGeometry
,BufferGeometry
,Texture
,Material
andWebGLRenderTarget
for deallocating from GPU. (mrdoob and alteredq) - Moved
SubdivisionModifier
out of the build toexamples/js/modifiers
. (mrdoob) - Improvements to
ColladaLoader
. (dgossow) - Added Blender 2.65 exporter. (tapio)
- Added
.setMaterialIndex()
toGeometryUtils
. (gero3) - Added benchmark framework. (bhouston)
- Fixed Blender scene exporter rotations. (alteredq and WestLangley)
- Added
devicePixelRatio
support toCanvasRenderer
andWebGLRenderer
. (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
'sperPixel
is nottrue
by default. (alteredq)- Added
LineDashedMaterial
. (alteredq) - Added
.setContextStyle
toColor
. (greyscales) - Corrected normal matrix calculations. (WestLangley)
- Added
KaleidoShader
,MirrorShader
andRGBShiftShader
. (felixturner) - Added area weighted vertex normals computation to
Geometry
. (alteredq) - Moved geometry.materials to
MeshFaceMaterial
. (gero3, alteredq and mrdoob) - Removed
materials
andsides
fromCubeGeometry
. (mrdoob) - Move
GeometryUtils
's.clone()
toGeometry
. (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 toShaderMaterial
. (alteredq) - Split
ShaderExtras
into single files (BasicShader
,BlendShader
,ConvolutionShader
, ... ). (mrdoob) - Added
HueSaturationShader
andBrightnessContrastShader
. (tapio) - Fixed
ColladaLoader
not loading sometimes. (tapio) - Added
material.vertexColors = THREE.FaceColor
support toCanvasRenderer
andSVGRenderer
. (mrdoob) - Added
Object3D.defaultEulerOrder
. (mrdoob) - Replaced
SceneUtils.traverseHierarchy
andSceneUtils.showHierarchy
withobject.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
andObjectLibrary
(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()
toVector3
. (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 toObject3D
. (gero3 and mrdoob) SkinnedMesh
can now work withMorphAnimMesh
. (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
forParticleSystems
. (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
andSVGRenderer
. (mrdoob) - Added handling of multiple UV layers and anisotropy to Blender exporter. (alteredq)
- Handling bump and anisotropy in
Loader
andSceneLoader
. (alteredq) - Added mousewheel support to
TrackballControls
. (jherrm) - Added
MTLLoader
andOBJMTLLoader
. (angelxuanchang) - Updated
UTF8Loader
to latest version. (angelxuanchang and alteredq) - Pluginized
SceneLoader
. (alteredq) - Added support of
object.renderDepth
inProjector
. (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
andSVGRenderer
out of common build. (mrdoob) - Improvements to Morph targets. (alteredq and gero3)
- Added
.deallocateMaterial
method toWebGLRenderer
. (alteredq) - Added
.worldToLocal
and.localToWorld
methods toObject3D
. (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
andEventTarget
in loaders. (mrdoob) - Added
Path.ellipse
. (linzhp) - Added
near
andfar
properties toRay
. (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 toRay
. (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
withoutmap
inCanvasRenderer
. (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
'sflipSided
anddoubleSided
properties are nowMaterial
'sside
property. (alteredq and mrdoob)- Added
.clone
method to*Material
. (gero3, mrdoob and alteredq) - IEWEBGL support. (iewebgl and mrdoob)
- Added
CircleGeometry
. (hughes) - Added
bumpMap
toMeshPhongMaterial
. (alteredq) - Added
specularMap
toMeshBasicMaterial
,MeshLambertMaterial
andMeshPhongMaterial
. (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 toMaterial
. (alteredq) - Fixed
GeometryUtils.triangulateQuads
. (alteredq) - Improvements to
GeometryUtils.tessellate
. (alteredq) - Change
PlaneGeometry
from XY to XZ. (mrdoob) WebGLRenderer
back tohighp
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
toMaterial
andpremultiplyAlpha
toTexture
. (alteredq) - Improvements to
CubeCamera
. (alteredq and mrdoob) CanvasRenderer.setClearColor()
and.setClearColorHex()
now setsopacity
to 1 when null. (mrdoob)- Fixed broken UVs in
SubdivisionModifier
. (zz85) - Renamed
Matrix4
'ssetTranslation
,setRotationX
,setRotationY
,setRotationZ
,setRotationAxis
andsetScale
tomakeTranslation
,makeRotationX
,makeRotationY
,makeRotationZ
,makeRotationAxis
andmakeScale
. (mrdoob) Matrix4
static methodsmakeFrustum
,makePerspective
,makeOrtho
to non-static methods. (mrdoob)- Refactore handling of
Matrix4
toMatrix3
inversion. (alteredq) - Added
GodRays
postprocessing. (huwb) - Added
LinePieces
support toProjector
. (mrdoob) - Fixed UVs handling bug in
GeometryUtils.tessellate
. (alteredq) - Serious performance improvements to
Matrix4
,Matrix3
andFrustum
. (gero3) - Fixes to
LatheGeometry
. (zz85) - Removed
Vertex
. UseVector3
instead. (mrdoob) - Implemented real
Spotlight
s. (alteredq) - Added
ParametricGeometry
. (zz85) - Added basic
OBJLoader
in/examples/js/loaders
folder. (mrdoob) - Moved
ColladaLoader
andUTF8Loader
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 toMaterial
. (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. toAnaglyphEffect
& 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
andOctahedronGeometry
with timothypratley'sPolyhedronGeometry
code which also bringsTetrahedronGeometry
. (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
toMorphAnimMesh
. (alteredq) - Added handling of named animation sequences to
MorphAnimMesh
. (alteredq) - Extended
MorphAnimMesh
to be able to play animations backwards. (alteredq) - Added
.generateDataTexture
toImageUtils
. (alteredq) - Removed hierarchy support and
.intersectScene()
fromRay
. (mrdoob) - Added
.triangulateQuads
toGeometryUtils
. (alteredq) Projector
andWebGLRenderer
now handles doubleSided lighting properly. (mrdoob and alteredq)- Fixed
MorphAnimMesh
playback bug where the last frame didn't display. (alteredq) TrackballControls
implementsEventTarget
. (mrdoob)- Added
.clone
toVertex
,Face3
andFace4
. (alteredq) - Added
.explode
and.tessellate
toGeometryUtils
. (alteredq) - Added
.lerpSelf
toVector2
,Vector3
andUV
. (alteredq) - Fixed
DOMRenderer
by using single-materials. (ajorkowski ) - Added
.setPrecision
toRay
. (mrdoob) - Blender exporter now honors the "Flip YZ" option. (rectalogic)
- Added
NoBlending
toMaterial
andWebGLRenderer
. (kovleouf) - Added
.applyMatrix
toObject3D
. (mrdoob and alteredq) - Added
.attach
and.detach
toSceneUtils
to retain position in space. (alteredq) - Added
.sign
toMath
. (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
andParticleSystem
. (mrdoob)
2012 01 14 - r47 (378,169 KB, gzip: 96,015 KB)
- Resurrected lens flares as custom
WebGLRenderer
plugin. (alteredq) - Fixed typos in
Matrix4
'stranspose()
andgetInverse()
. (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 withformat
andtype
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 toTexture
andRenderTarget
. (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
DirectionalLight
s. (alteredq) - Added
Gyroscope
object. (alteredq) - Added
alpha
andpremultipliedAlpha
parameters toWebGLRenderer
. (mrdoob) Ray
properly handling children with scaled parents. (mrdoob)- Renamed
Axes
object toAxisHelper
. (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
'sSphericalReflectionMapping
rendering. (mrdoob) - Improved
SubdivisionModifier
. (zz85) - Refactored
*Controls
to use externally supplied time delta. (alteredq) - Improvements to
CombinedCamera
. (zz85) ColladaLoader
doesn't create extraObject3D
. (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
andSphereGeometry
. (mrdoob) - Improvements to
Curve
. (zz85) - Removed
Collisions
code and focusing onRay
. (mrdoob) - Added
cloneObject()
method toSceneUtils
. (alteredq)
2011 10 06 - r45 (340.863 KB, gzip: 86.568 KB)
Object/Scene.add*()
andObject/Scene.remove*()
are nowObject/Scene.add()
andObject/Scene.remove()
. (mrdoob)LOD.add()
is nowLOD.addLevel()
. (mrdoob)- Reworked
CylinderGeometry
. (mrdoob) - Added
.depthWrite
and.fog
toMaterial
. (alteredq) - Added
.applyMatrix
toGeometry
. (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()
toGeometryUtils
. (alteredq) - Fixed buggy scenegraph manipulation (adding/removing objects). (jsermeno, alteredq and skython)
- Renamed
MeshShaderMaterial
toShaderMaterial
. (alteredq) - Fixed
CanvasRenderer
ignoring color ofSmoothShading
edMeshLambertMaterial
. (mrdoob) - Renamed
renderer.data
torenderer.info
. (mrdoob) - Fixed ShadowMap aspect ratio. (kig and alteredq)
- Fixed
Loader
'sextractUrlbase()
incorrect output for short urls. (rectalogic and alteredq) - Added
.color
and.visible
support toSprite
. (alteredq) - Added
Face4
, Vertex Colors and Maya support toColladaLoader
. (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
toWebGLRenderer
. (mrdoob and alteredq) - Added
OctahedronGeometry
. (clockworkgeek) - Splitted
Camera
intoPerspectiveCamera
andOrthographicCamera
. (mrdoob and alteredq) - Special cameras are now
*Controls
. (alteredq and mrdoob) - Added
SubdivisionModifier
. (zz85) Projector
'sunprojectVector()
now also works withOrthographicCamera
. (jsermeno)- Added
.setLens()
method toPerspectiveCamera
. (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 toWebGLRenderer
. (mrdoob) - Fixed a glitch in normal and phong shader. (evanw and alteredq)
- Added
.frustumCulled
property toObject3D
. (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 addedShape
,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 toWebGLRenderer
. (jeromeetienne) - Added
UTF8Loader
for loading the new, uber compressed, UTF8 format. (alteredq) CanvasRenderer
now supportsRepeatWrapping
,texture.offset
andtexture.repeat
. (mrdoob)- Removed Stencil Shadows and Lensflare code. (mrdoob)
2011 07 06 - r42 (277.852 KB, gzip: 69.469 KB)
- Added
AnaglypWebGLRenderer
andCrosseyedWebGLRenderer
. (mrdoob, alteredq and marklundin) - Added
TextGeometry
. (zz85 and alteredq) - Added
setViewOffset
method toCamera
. (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
toFirstPersonCamera
. (chriskillpack) - Improved Normal Map Shader. (alteredq)
Collision
now supportsObject3D.flipSided
andObject3D.doubleSided
. (NINE78)- Removed most of
SceneUtils
methods. (mrdoob) - Removed
Sound
object andSoundRenderer
. (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 toCollisionSystem
. (NINE78) - Added Blender 2.57 exporter. (remoe)
- Added
Particle
support toRay
. (mrdoob and jaycrossler) - Improved
Ray.intersectObject
performance by checking boundingSphere first. (mrdoob) - Added
TrackballCamera
. (egraether) - Added
repeat
andoffset
properties toTexture
. (mrdoob and alteredq) - Cleaned up
Vector2
,Vector3
andVector4
. (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
rendersFace4
again (without spliting to 2Face3
) (mrdoob)ParticleCircleMaterial
>ParticleCanvasMaterial
. Allowing injecting anycanvas.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 toParticleBasicMaterial
. (mrdoob) - Added
PathCamera
. (alteredq) - Fixed
WebGLRenderer
bug when Camera has a parent. CameraCamera.updateMatrix
method. (empaempa) - Fixed
Camera.updateMatrix
method andObject3D.updateMatrix
. (mrdoob)
2011 03 06 - r35 (187.875 KB, gzip: 46.433 KB)
- Added methods
translate
,translateX
,translateY
,translateZ
andlookAt
methods toObject3D
. (mrdoob) - Added methods
setViewport
andsetScissor
toWebGLRenderer
. (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 toWebGLRenderer
(alteredq) - Added
Line
support toWebGLRenderer
(alteredq) - Added vertex colors support to
WebGLRenderer
(alteredq) - Added
Ribbon
object. (alteredq) - Added updateable textures support to
WebGLRenderer
(alteredq) - Added
Sound
object andSoundRenderer
. (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 supportsFog
andFogExp2
.WebGLRenderer
only right now. (alteredq)- Added
setClearColor( hex, opacity )
toWebGLRenderer
andCanvasRenderer
(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 tomaterials
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 onCanvasRenderer
/MeshLambertMaterial
MeshShaderMaterial
forWebGLRenderer
(alteredq)- Removed
RenderableFace4
fromProjector
/CanvasRenderer
(maybe just temporary). - Added extras folder with
GeometryUtils
,ImageUtils
,SceneUtils
andShaderUtils
(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
andSVGRenderer
. (mrdoob) - Switched to Closure compiler.
2010 11 04 - r28 (62.802 KB)
Loader
class allows load geometry asynchronously at runtime. (alteredq)MeshPhongMaterial
working withWebGLRenderer
. (alteredq)- Support for huge objects. Max 500k polys and counting. (alteredq)
Projector.unprojectVector
andRay
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
andSVGRenderer
material handling
2010 10 06 - r18 (44.420 KB)
- Added
PointLight
CanvasRenderer
andSVGRenderer
basic lighting support (ColorStroke/ColorFill only)Renderer
>Projector
.CanvasRenderer
,SVGRenderer
andDOMRenderer
do not extend anymore- Added
computeCentroids
method toGeometry
2010 09 17 - r17 (39.487 KB)
- Added
Light
,AmbientLight
andDirectionalLight
(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
andVector3
methods
2010 07 23 - r15 (32.440 KB)
- Using new object
UV
instead ofVector2
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
withMeshBitmapUVMappingMaterial
2010 07 17 - r14 (32.144 KB)
- Refactored
CanvasRenderer
(more duplicated code, but easier to handle) Face4
now supportsMeshBitmapUVMappingMaterial
- Changed order of
*StrokeMaterial
parameters. Now it'scolor
,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
andParticleBitmapMaterial
Particle
now useParticleCircleMaterial
instead ofColorFillMaterial
Particle.size
>Particle.scale.x
andParticle.scale.y
Particle.rotation.z
for rotating the particleSVGRenderer
currently out of sync
2010 07 07 - r12 (28.494 KB)
- First version of the
WebGLRenderer
(ColorFillMaterial
andFaceColorFillMaterial
by now) Matrix4.lookAt
fix (CanvasRenderer
andSVGRenderer
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
supportsBitmapUVMappingMaterial
.
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
andSVGRenderer
clearRect
optimisations onCanvasRenderer
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
andFaceColorStrokeMaterial
geometry.faces.a
are now indexes instead of references
2010 04 26 - r4 (16.274 KB)
SVGRenderer
Particle renderingCanvasRenderer
usescontext.setTransform
to avoid extra calculations
2010 04 24 - r3 (16.392 KB)
- Fixed incorrect rotation matrix transforms
- Added
Plane
andCube
primitives
2010 04 24 - r2 (15.724 KB)
- Improved
Color
handling
2010 04 24 - r1 (15.25 KB)
- First alpha release