Three.js

Hoje, Three.js é um tema que tem adquirido grande relevância em diversas áreas da sociedade. Da política à cultura popular, Three.js tornou-se um ponto constante de discussão e uma fonte de inspiração para muitas pessoas. Com o tempo, Three.js cresceu em importância e teve um impacto significativo na forma como as pessoas interagem umas com as outras. Este artigo pretende explorar detalhadamente o impacto de Three.js na sociedade atual e examinar como ele evoluiu ao longo do tempo. Da mesma forma, serão analisadas as diferentes perspectivas e opiniões que existem em torno de Three.js, com o objetivo de fornecer uma visão abrangente deste tema tão relevante.
Three.js
Captura de tela
Three.js
Exemplos de capturas de tela do Three.js
Autor Ricardo Cabello (Mr.doob)
Desenvolvedor Autores do Three.js
Lançamento 24 de abril de 2010
Versão estável r164 (26 de abril de 2024)
Escrito em JavaScript
Gênero(s) Biblioteca JavaScript
Licença MIT
Estado do desenvolvimento Ativo
Página oficial threejs.org

Three.js é uma biblioteca JavaScript/API cross-browser usada para criar e mostrar gráficos 3D animados em um navegador web. Three.js usa WebGL. O código-fonte é hospedado em um repositório no GitHub.

Visão geral

Three.js permite a criação de animações 3D aceleradas de GPU usando a linguagem JavaScript como parte de um website sem depender de extensões de browsers proprietárias. Isto é possível graças ao advento do WebGL.

Bibliotecas de alto nível como Three.js ou GLGE, SceneJS, PhiloGL ou um número de outras bibliotecas tornam possível ao autor animações de computador 3D complexas que mostram no browser sem o esforço necessário para uma aplicação stand-alone tradicional ou um plugin.

História

Three.js foi primeiro lançado por Ricardo Cabello ao GitHub em abril de 2010. As origens da biblioteca podem ser traçadas de volta ao seu envolvimento com demoscenes no início dos anos 2000. O código foi primeiro desenvolvido em ActionScript, então em 2009 transferido para o JavaScript. Na mente de Cabello, os dois pontos fortes para transferir para o JavaScript foram, não tendo de compilar o código antes de cada execução e independência de plataforma. Com o advento do WebGL, Paul Brunt foi capaz de adicionar o renderizador para este muito facilmente, como o Three.js foi projetado com o código renderizador como um módulo ao invés do próprio core. As contribuições de Cabello incluem o design de API, CanvasRenderer, SVGRenderer e sendo responsável por mesclar as entregas de vários contribuidores dentro do projeto.

O segundo contribuidor em termos de entrega, Branislav Ulicny, começou com o Three.js em 2010 após ter postado um número de demos WebGL em seu próprio site. Ele quis que as aptidões de renderizar do WebGL no Three.js ultrapassassem às do CanvasRenderer ou SVGRenderer. Suas maiores contribuições geralmente envolvem materiais, sombreadores e pós-processamento.

Logo após a introdução do WebGL 1.0 no Firefox 4 em março de 2011, Joshua Koo entrou na equipe. Ele construiu sua primeira demo em Three.js para texto 3D em setembro de 2011. Suas contribuições frequentemente se referem a geração de geometria.

Há mais de 650 contribuidores no total.

Recursos

Three.js inclui os seguintes recursos:

  • Efeitos: Anaglifo, olhos cruzados e barreira paralaxe.
  • Cenários: adiciona e remove objetos em tempo de execução; névoa
  • Câmeras: perspectiva e ortográfico; controladores: trackball, FPS, path e mais
  • Animação: armaduras, cinemática direta, cinemática inversa, animação por vértice e quadro-chave
  • Luzes: ambiente, direção, luzes de ponto e local; sombras: cast e receive
  • Materiais: Lambert, Phong, smooth shading, texturas e mais
  • Sombreadores: acesso a todas as capacidades do OpenGL Shading Language (GLSL): lens flare, depth pass e extensa biblioteca de pós-processamento
  • Objetos: malhas, partículas, sprites, linhas, fitas, ossos e mais - tudo com nível de detalhe
  • Geometria: plana, cubo, esfera, toro, texto 3D e mais; modificadores: lathe, extrude e tubo
  • Carregadores de dados: binário, imagem, JSON e cenário
  • Utilidades: completa configuração de tempo e funções matemáticas 3D incluindo tronco de bases paralelas, matriz, quaterniões, UVs e mais
  • Exporta e importa: utilidades para criar arquivos JSON compatíveis com Three.js de dentro: Blender, openCTM, FBX, Max, e OBJ
  • Suporte: a documentação da API está sob construção, fórum público e wiki em completa operação
  • Exemplos: Mais de 150 arquivos de exemplos de código mais fontes, modelos, texturas, sons e outros arquivos de suporte
  • Debugging: Stats.js, WebGL Inspector, Three.js Inspector

Three.js roda em todos os browsers suportados pelo WebGL 1.0.

Three.js é disponível sob a licença MIT.

Uso

A biblioteca Three.js é um simples arquivo JavaScript. Ela pode ser incluida dentro de uma página web por ligação a uma cópia local ou remota.

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

O seguinte código cria um cenário, adiciona uma câmera e um cubo ao cenário, cria um renderizador WebGL e adiciona sua janela de exibição no document.body element. Uma vez carregado, o cubo gira em eixos X e 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.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>

Usos selecionados e trabalhos

A biblioteca Three.js é usada para uma ampla variedade de aplicações e propósitos. As seguintes listas identificam usos selecionados e trabalhos.

Mídia mixada

  • The Little Black Jacket, 2012, clássico de CHANEL revisitado por Karl Lagerfeld e Carine Roitfeld. Uma exibição online mostrando 113 fotos de celebridades fotografadas por Karl Lagerfeld.
  • Daftunes, 2012, um projeto de visualização de som interativo.
  • PlayPit, 2012
  • o álbum Rome| O filme 3 Dreams in Black, 2011, produzido por Chris Milk. "'3 Dreams of Black' é o vídeo musical interativo WebGL mais viajado que você tem visto todo dia"
  • One Millionth Tower, 2011 - "Existe em uma configuração 3D feita possível por uma biblioteca JavaScript chamada three.js, que permite aos espectadores andar por aí no bairro alto." -
  • Ellie Goulding's Lights, 12 de outubro de 2011, "uma experiência de vídeo musical interativo e colorido usando webgl"
  • Hello Racer, 2011 - Premiou o FWA Site do Dia hoje, 5 de junho de 2011
  • WebGL Reader, 2011
  • The Wilderness Downtown, 2010
  • Audible Visuals, 2016, coleção de visualizadores de áudio derivados do espiral Archimedean.

Visualização modelo e aplicações para criação de cenários

  • 3D Gerber Viewer
  • Clara.io
  • Kuda
  • Our Bricks
  • P3D
  • repovizz
  • Shapesmith
  • Stackhack
  • Sunglass
  • ThingView
  • Three Fab
  • ThreeNodes
  • ThreeScene
  • Verold Studio
  • WebGL Craft
  • zb3D Grapher
  • SimLab Composer

Ferramentas de autoria para games e simulação

  • AgentCubes - uma ferramenta para projetar games incluindo modelagem 3D e programação arraste e solte, 2013

Games

  • Cube - um game sobre Google Maps, 2012
  • Ocuara - a Survival Horror MMO Proof-of-concept, 2014
  • MafiaEmpires - um Mafia MMO, 2014
  • Tiny Shipping, 2012
  • Marble Soccer, 2012
  • Three.js Tetris, 2012
  • Trigger Rally, 2012
  • ChuClone, 2012
  • WebGL Zombies vs Cow, 2012
  • Pacmaze, 2011 - um software livre multiplayer online 3D clone do Pac-Man
  • Slimetribe - turn-based and RPG-like game experiment, 2012
  • Street basketball, 2016
  • / Laby, 2017

Educação

  • Interactive 3D Graphics - Massive Open Online Course, 2013
  • PhysGL.org (http://www.physgl.org) - Empacotadores JavaScript para three.js com um IDE baseado em web, para fazer gráficos 3D, facilmente acessível a estudantes e professores, 2012

Comunidade

IDEs online com suporte embutido para Three.js estão disponíveis no WebGL Playground, HTML Snippet e jsFiddle. Documentação está disponível para a API assim como recomendações gerais na Wiki. Suporte para desenvolvedores praticando na biblioteca é fornecido via fórum de problemas no GitHub, enquanto o suporte para desenvolvedores construindo aplicativos e páginas web é fornecido via StackOverflow. Suporte online em tempo real é fornecido usando IRC via Freenode. Muitos desenvolvedores estão também no Twitter.

Ver também

Referências

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

Bibliografia

Um número de livros de ciência da computação referem-se ao Three.js como uma ferramenta para simplificar o processo de desenvolvimento para aplicações WebGL assim como um método fácil para tornar-se familiar com os conceitos de WebGL. Estes livros, em ordem de apresentação, incluem:

  • 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 

Ligações externas