desenvolvimento de ambientes 3d para web usando three js

24
Desenvolvimento de ambiente 3D para Web usando Three JS Nathalia Sautchuk Patrício

Upload: nathalia-sautchuk-patricio

Post on 27-Jun-2015

706 views

Category:

Technology


5 download

DESCRIPTION

Na palestra feita na Web.br 2013 foram abordados conceitos iniciais de WebGL e apresentada a engine livre Three.js. Foram construídos alguns exemplos de ambientes 3D para Web através do uso dessa engine.

TRANSCRIPT

Page 1: Desenvolvimento de ambientes 3D para Web usando Three JS

Desenvolvimento de ambiente 3D para Web usando Three JS Nathalia Sautchuk Patrício

Page 2: Desenvolvimento de ambientes 3D para Web usando Three JS

Esta obra foi licenciada sob uma Licença Creative Commons Attribution-ShareAlike 3.0 Brazil License.

Page 3: Desenvolvimento de ambientes 3D para Web usando Three JS

WebGL

!   Novo padrão para gráficos 3D na Web

! Desenvolvido e mantido pelo Kronos Group

!   Parte da família de tecnologias do HTML5 ! Não é uma especificação oficial do W3C

! Suportada pela maioria dos browsers com suporte ao HTML5

! Renderização de gráficos com o uso de Javascript no browser

Page 4: Desenvolvimento de ambientes 3D para Web usando Three JS

Definição Técnica

! É uma API

! Baseado no OpenGL ES 2.0

! Mistura-se com outros conteúdos web

! Foi construído para aplicações web dinâmicas

! É multiplataforma

! É uma especificação aberta, sem royalties

Page 5: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Sistema de coordenadas 3D ! Coordenadas x, y e z

Page 6: Desenvolvimento de ambientes 3D para Web usando Three JS

Sistema de coordenadas

Disponível em https://commons.wikimedia.org/wiki/File:3D_coordinate_system.svg

Page 7: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Modelo (ou mesh) ! objeto composto por um ou mais polígonos

! Polígono ! composto por vértices

!   ex. triângulo, quadrado

! Vértice ! triplas x, y, z, definindo posições de coordenadas no

espaço 3d

Page 8: Desenvolvimento de ambientes 3D para Web usando Three JS

Modelos

Disponível em http://upload.wikimedia.org/wikipedia/commons/8/88/Blender3D_UVTexTut1.png

Page 9: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Materiais ! propriedades da superfície de um modelo

! Texturas ! definem a aparência de uma superfície

! Luzes ! definem como a cena estará iluminada

Page 10: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Transformações ! operações que movem o modelo por uma quantidade

relativa sem a necessidade de mover cada vértice ! permitem um modelo ser escalado, rotacionado e

transladado

! Matrizes ! representa as transformações ! objetos matemáticos contendo um array de valores

usados para computar as posições transformadas dos vértices

Page 11: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Câmeras ! objeto que define onde o usuário está posicionado e

para onde está orientado

! Perspectiva ! tamanho do campo de visão

!   Viewport ! limites retangulares onde desenhar

Page 12: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Projeções ! Câmeras são quase sempre representados usando uma

dupla de matrizes

!   A primeira matriz define a posição e a orientação da câmera

!   A segunda matriz é a matriz de projeção aquela que representa a translação das coordenadas 3D da câmera no espaço de desenho 2D do viewport

Page 13: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

Disponível em http://obviam.net/index.php/3dprogramming-with-android-projections-perspective/

Page 14: Desenvolvimento de ambientes 3D para Web usando Three JS

Conceitos básicos

! Shaders !   São pedaços de código de programa que implementa

algoritmos para obter os pixels de um modelo da tela

!   São definidas em uma linguagem de alto nível e compiladas em código utilizável pela GPU

! WebGL requer shaders

Page 15: Desenvolvimento de ambientes 3D para Web usando Three JS

Three.js

! É uma engine 3D em JavaScript

! Criada por Mr.doob, Ricardo Cabello Miguel, um programador de Barcelona, Espanha

! Provê um conjunto fácil e intuitivo de objetos que são comumente encontrados em gráficos 3D

! É rápida, usa várias das boas técnicas de engines gráficas

! É poderosa, com vários tipos de objetos e utilidades

! É open source, hospedada no GitHub

Page 16: Desenvolvimento de ambientes 3D para Web usando Three JS

Three.js

! Esconde os detalhes da renderização 3D

! É orientado a objetos

! É rico em recursos

! É rápido

! Suporta interação

! Faz a matemática

Page 17: Desenvolvimento de ambientes 3D para Web usando Three JS

Three.js

!   Tem suporte a diversos tipos de formatos de arquivo 3D

! É extensível

! Também funciona com o canvas 2D do HTML5

Page 18: Desenvolvimento de ambientes 3D para Web usando Three JS

Three.js

! Coisas que a Three.js não faz ! Não é uma engine de jogos nem uma plataforma de

mundo virtual

! Não tem diversos recursos comumente encontradas nesses sistemas como letreiros, avatares, e física

! Não tem suporte a conexões em rede para construção de jogos multiplayer

Page 19: Desenvolvimento de ambientes 3D para Web usando Three JS

Three.js

! GitHub ! https://github.com/mrdoob/three.js/

Page 20: Desenvolvimento de ambientes 3D para Web usando Three JS

Quer saber mais?

!   Blogs e Sites !   Learning WebGL

http://learningwebgl.com/blog/

! WebGL Fundamentals http://games.greggman.com/game/webgl-fundamentals/

! WebGL Chrome Experiments http://www.chromeexperiments.com/webgl

! WebGL Mozilla Labs Demos https://developer.mozilla.org/en-US/demos/tag/tech:webgl/

Page 21: Desenvolvimento de ambientes 3D para Web usando Three JS

Quer saber mais?

!   Blogs e Sites ! Aerotwist

http://www.aerotwist.com/tutorials/getting-started-with-three-js/

!   Learning Three.js http://learningthreejs.com/

! BKcore http://bkcore.com/blog/3d/webgl-three-js-workflow-tips.html

! AlteredQualia http://alteredqualia.com/

Page 22: Desenvolvimento de ambientes 3D para Web usando Three JS

Quer saber mais?

! Lista oficial de discussão sobre a especificação

! http://www.khronos.org/webgl/public-mailing-list/

! Lista sobre desenvolvimento com WebGL

! https://groups.google.com/forum/?fromgroups#!forum/webgl-dev-list

Page 23: Desenvolvimento de ambientes 3D para Web usando Three JS

Quer saber mais?

! Alguns livros…

Disponível em http://oreilly.com/

Page 24: Desenvolvimento de ambientes 3D para Web usando Three JS

Obrigada! Nathalia Sautchuk Patrício [email protected]