Recs.
Updated
Three.js is a cross-browser JavaScript library/API used to create and display animated 3D computer graphics in a web browser using WebGL, CSS3D or SVG.
Specs
Pros
Pro Actively developed
Three.js has great project health, with activity on Github daily for bug fixes and new features.
Pro Well documented
The documentation is detailed, providing clear explanations and code samples of the various features. There are also hundreds of examples available.
Pro Support for most industry standard file formats
Three.js has importers for most of the industry standard files format (obj, mtl, fbx, 3ds, gltf, collada, babylon, playcanvas, stl, vrml, draco and many more), making it easy to author assets in your favourite modelling software and import them for use them in three.js.
Pro Feature rich
Effects: Anaglyph, cross-eyed and parallax barrier
Scenes: add and remove objects at run-time; fog
Cameras: perspective and orthographic; controllers: trackball, FPS, path and more
Animation: armatures, forward kinematics, inverse kinematics, morph and keyframe
Lights: ambient, direction, point and spot lights; shadows: cast and receive
Materials: Lambert, Phong, Standard, smooth shading, textures, PBR and more
Shaders: access to full OpenGL Shading Language (GLSL) capabilities: lens flare, depth pass and extensive post-processing library
Objects: meshes, particles, sprites, lines, ribbons, bones and more - all with Level of detail
Geometry: plane, cube, sphere, torus, 3D text and more; modifiers: lathe, extrude and tube
Data loaders: binary, image, JSON and scene
Utilities: full set of time and 3D math functions including frustum, matrix, quaternion, UVs and more
Export and import: utilities to create Three.js-compatible JSON files from within: Blender, openCTM, FBX, Max, and OBJ
Support: API documentation, public forum
Examples: Over 150 files of coding examples plus fonts, models, textures, sounds and other support files