Three.js

Three.js

Screen captures of Three.js examples
Original author(s) Ricardo Cabello (Mr.doob)
Developer(s) Three.js Authors[1]
Initial release April 24, 2010 (2010-04-24)[2]
Stable release
r82 / October 26, 2016 (2016-10-26)
Development status Active
Written in JavaScript
Type JavaScript library
License MIT[1]
Website threejs.org

Three.js is a cross-browser JavaScript library/API used to create and display animated 3D computer graphics in a web browser. Three.js uses WebGL. The source code is hosted in a repository on GitHub.

Overview

Three.js allows the creation of GPU-accelerated 3D animations using the JavaScript language as part of a website without relying on proprietary browser plugins.[3][4] This is possible thanks to the advent of WebGL.[5]

High-level libraries such as Three.js or GLGE, SceneJS, PhiloGL or a number of other libraries make it possible to author complex 3D computer animations that display in the browser without the effort required for a traditional standalone application or a plugin.[6]

History

Three.js was first released by Ricardo Cabello to GitHub in April 2010.[2] The origins of the library can be traced back to his involvement with the demoscene in the early 2000s. The code was first developed in ActionScript, then in 2009 ported to JavaScript. In Cabello's mind, the two strong points for the transfer to JavaScript were not having to compile the code before each run and platform independence. With the advent of WebGL, Paul Brunt was able to add the renderer for this quite easily as Three.js was designed with the rendering code as a module rather than in the core itself.[7] Cabello's contributions include API design, CanvasRenderer, SVGRenderer and being responsible for merging the commits by the various contributors into the project.

The second contributor in terms of commits, Branislav Ulicny started with Three.js in 2010 after having posted a number of WebGL demos on his own site. He wanted WebGL renderer capabilities in Three.js to exceed those of CanvasRenderer or SVGRenderer.[7] His major contributions generally involve materials, shaders and post-processing.

Soon after the introduction of WebGL on Firefox 4 in March 2011, Joshua Koo came on board. He built his first Three.js demo for 3D text in September 2011.[7] His contributions frequently relate to geometry generation.

There are over 650 contributors in total.[7]

Features

Three.js includes the following features:[8]

Three.js runs in all browsers supported by WebGL.

Three.js is made available under the MIT license.[1]

Usage

The Three.js library is a single JavaScript file. It can be included within a web page by linking to a local or remote copy.

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

The following code creates a scene, adds a camera and a cube to the scene, creates a WebGL renderer and adds its viewport in the document.body element. Once loaded, the cube rotates about its X- and Y-axis.

<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.WebGLRenderer();
        renderer.setSize( window.innerWidth, window.innerHeight );

        document.body.appendChild( renderer.domElement );
    }

    function animate() {
        requestAnimationFrame( animate );
        render();
    }

    function render() {
        mesh.rotation.x += 0.01;
        mesh.rotation.y += 0.02;

        renderer.render( scene, camera );
    }

</script>

Selected Uses and Works

The Three.js library is being used for a wide variety of applications and purposes. The following lists identify selected uses and works.

Mixed Media

Model Visualization and Scene Creation Applications

Game and Simulation Authoring Tools

Games

Education

Community

Online IDEs with built-in support for Three.js are available at WebGL Playground,[69] HTML Snippet[70] and jsFiddle.[71] Documentation is available for the API[72] as well as general advice on the Wiki.[73] Support for developers committing to the library is provided via the Issues forum on GitHub,[74] while support for developers building apps and web pages is provided via StackOverflow.[75] Real-time on-line support is provided using IRC via Freenode.[76] Most of the developers are also on Twitter.

See also

References

  1. 1 2 3 "Three.js/license". github.com/mrdoob. Retrieved 20 May 2012.
  2. 1 2 "First commit". github.com/mrdoob. Retrieved 20 May 2012.
  3. O3D
  4. Unity (game engine)
  5. "Khronos Releases Final WebGL 1.0 Specification". Khronos Group. March 3, 2011. Retrieved 2 June 2012.
  6. Crossley, Rob (11 January 2010). "Study: Average dev costs as high as $28m". Intent Media Ltd. Retrieved 2 June 2012.
  7. 1 2 3 4 "Three.js White Paper". Github.com. 2012-05-21. Retrieved 2013-05-09.
  8. mrdoob (2012-11-26). "Features mrdoob/three.js Wiki GitHub". Github.com. Retrieved 2013-05-09.
  9. "Stats.js". Github.com. Retrieved 2013-05-09.
  10. "WebGL Inspector". Benvanik.github.com. Retrieved 2013-05-09.
  11. "Three.js Inspector Labs". Zz85.github.com. Retrieved 2013-05-09.
  12. Lagerfeld, Karl (2012). "The Little Black Jacket". CHANEL. Retrieved 2 June 2012.
  13. "Google Chrome Experiments - Daftunes". Chromeexperiments.com. Retrieved 2013-05-09.
  14. "Daftunes". Daftunes.com. Retrieved 2013-05-09.
  15. Eiji Muroichi @muroicci. "PlayPit". Playpit.kowareru.com. Retrieved 2013-05-09.
  16. "Rome the album | 3 Dreams in Black the film". Ro.me. Retrieved 2013-05-09.
  17. Hollister, Sean (2011-05-12). "3 Dreams of Black is the Trippiest". Engadget.com. Retrieved 2013-05-09.
  18. Koblin, Aaron (2011-05-13). "3D Dreams in Modern Browser". Googleblog.blogspot.com. Retrieved 2013-05-09.
  19. One Millionth TowerOne Millionth Tower
  20. "'Ellie Goulding's Lights". Lights.elliegoulding.com. Retrieved 2013-05-09.
  21. "Ellie Goulding Credits". Lights.elliegoulding.com. Retrieved 2013-05-09.
  22. "Ellie Goulding Lights". Thefwa.com. Retrieved 2013-05-09.
  23. "Hello Racer". Helloracer.com. Retrieved 2013-05-09.
  24. "FWA Site of the Day". Helloenjoy.com. 2011-06-05. Retrieved 2013-05-09.
  25. "WebGL Reader". Fhtr.org. Retrieved 2013-05-09.
  26. "3D Gerber Viewer". Mayhewlabs.com. 2013-01-18. Retrieved 2013-05-09.
  27. "Clara.io 3D Editor". exocortex.com. 2013-11-05. Retrieved 2013-12-10.
  28. "Kuda". Code.google.com. Retrieved 2013-05-09.
  29. "Our Bricks". Our Bricks. Retrieved 2013-05-09.
  30. "P3D". P3d.in. Retrieved 2013-05-09.
  31. "repovizz". Retrieved 2015-01-09.
  32. Benjamin Nortier. "Shapesmith". Shapesmith. Retrieved 2013-05-09.
  33. "Stackhack". Stackhack. Retrieved 2013-05-09.
  34. "Sunglass". Sunglass.io. Retrieved 2013-05-09.
  35. ThingView
  36. Jason Kadrmas. "Three Fab". Blackjk3.github.com. Retrieved 2013-05-09.
  37. "ThreeNodes". Idflood.github.com. Retrieved 2013-05-09.
  38. "ThreeScene". Errolschwartz.com. Retrieved 2013-05-09.
  39. "Verold Studio". Verold.com. Retrieved 2013-05-09.
  40. "WebGL Craft". Danielribeiro.github.com. Retrieved 2013-05-09.
  41. Kaala. "zb3D Grapher". Archived from the original on 23 November 2013. Retrieved 30 November 2013.
  42. "SimLab Composer". simlab-soft.com. 2015-08-19. Retrieved 2015-08-19.
  43. "AgentCubes - a game design tool". Agentsheets.com. Retrieved 2013-05-09.
  44. "The Scalable Game Design arcade featuring Three.js based games". Scalablegamedesign.cs.colorado.edu. Retrieved 2013-05-09.
  45. "Cube - a game about Google Maps". Playmapscube.com. Retrieved 2013-05-09.
  46. Creative, Google. "Cube | Awwwards | Site of the day". Awwwards. Retrieved 2013-05-09.
  47. "Ocuara". ocuara.com. Retrieved 2014-01-01.
  48. "MafiaEmpires". www.wizardsworkshop.co.uk. Retrieved 2014-04-05.
  49. "Tiny Shipping". Ld23.librador.com. Retrieved 2013-05-09.
  50. "10 of the best educational games of Ludum Dare 23, part 2". Brainsforgames.rachelnponce.com. 2012-05-09. Retrieved 2013-05-09.
  51. "Marble Soccer". Marblesoccer.com. 2011-04-13. Retrieved 2013-05-09.
  52. Acosta, Darien (2012-04-09). "WebGL - Game - Marble Soccer". Webgl.com. Retrieved 2013-05-09.
  53. "Three.js Tetris". Fridek.github.com. Retrieved 2013-05-09.
  54. "3D Tetris with Three.js tutorial - part 1". Smashinglabs.pl. Retrieved 2013-05-09.
  55. "Trigger Rally". Triggerrally.com. Retrieved 2013-05-09.
  56. "Trigger Rally - online edition". CreativeJS. 2012-03-02. Retrieved 2013-05-09.
  57. "ChuClone". Chuclone.com. Retrieved 2013-05-09.
  58. "ChuClone". Chrome Experiments. Retrieved 2013-05-09.
  59. html5 games (2011-11-07). "ChuClone". html5 games. Retrieved 2013-05-09.
  60. "WebGL Zombies vs Cow". Yagiz.me. Retrieved 2013-05-09.
  61. "Zombies vs Cow - 3D Site Links". 3dsitelinks.com. Retrieved 2013-05-09.
  62. "Pacmaze". Pacmaze.com. Retrieved 2013-05-09.
  63. ";Pacmaze by Jerome Etienne". Chrome Experiments. Retrieved 2013-05-09.
  64. Internet Catch Of The Day (2011-08-20). "Pac Maze!". Internet Catch of the Day. Retrieved 2013-05-09.
  65. "Slimetribe". Zbigniew Lipka. Retrieved 2013-11-08.
  66. "Developing a street basketball game". Alexander Buzin. Retrieved 2016-08-08.
  67. Interactive 3D Graphics
  68. "3D computer graphics for everyone"
  69. "WebGL Playground". WebGL Playground. Retrieved 2013-05-09.
  70. "HTML Snippet". Html5snippet.net. 2011-05-15. Retrieved 2013-05-09.
  71. "jsFiddle". jsFiddle. Retrieved 2013-05-09.
  72. "Three.js API reference". Mrdoob.github.com. 2000-01-01. Retrieved 2013-05-09.
  73. mrdoob (2013-03-15). "Three.js Wiki". Github.com. Retrieved 2013-05-09.
  74. mrdoob. "Three.js Issues". Github.com. Retrieved 2013-05-09.
  75. "Three.js". StackOverflow. Retrieved 2013-05-09.
  76. "Freenode - Three.js". Webchat.freenode.net. Retrieved 2013-05-09.

Bibliography

A number of computer science textbooks refer to Three.js as a tool for simplifying the development process for WebGL applications as well as an easy method for becoming familiar with the concepts of WebGL. These textbooks in order of appearance include:

  • Dirksen, Jos (2013). Learning Three.js: The JavaScript 3D Library for WebGL. UK: Packt Publishing. ISBN 9781782166283. 
  • Parisi, Tony (2012). Webgl Up and Running. Sebastopol: Oreilly & Associates Inc. ISBN 9781449323578. 
  • Seidelin, Jacob (2012). HTML5 games : creating fun with HTML5, CSS3, and WebGL. Chichester, West Sussex, U.K: John Wiley & Sons. pp. 412–414. ISBN 1119975085.  - "Three.js can make game development easier by taking care of low-level details"
  • Williams, James (2012). Learning HTML5 game programming : a hands-on guide to building online games using Canvas, SVG, and WebGL. Upper Saddle River, NJ: Addison-Wesley. pp. 117–120, 123–131, 136, 140–142. ISBN 0321767365. 
  • Raasch, Jon (2011). Smashing WebKit. Chichester: Wiley. pp. 181, 182, 216. ISBN 1119999138. 
Wikimedia Commons has media related to Three.js.
This article is issued from Wikipedia - version of the 11/14/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.