INF 1366 Computao Grfica Interativa X 3 D

  • Slides: 50
Download presentation
INF 1366 – Computação Gráfica Interativa X 3 D – Iluminação, Environment Sensors e

INF 1366 – Computação Gráfica Interativa X 3 D – Iluminação, Environment Sensors e Protótipos Alberto B. Raposo abraposo@tecgraf. puc-rio. br http: //www. tecgraf. puc-rio. br/~abraposo/INF 1366 Alberto Raposo – PUC-Rio

Iluminação • Conceito básico: fontes de luz virtual atuam como fontes de raios que

Iluminação • Conceito básico: fontes de luz virtual atuam como fontes de raios que atingem objetos e chegam ao viewpoint – X 3 D não define forma de renderização (ray tracing, etc. ) – é definição de mais alto nível Alberto Raposo – PUC-Rio

Renderização • Processo que combina as contribuições de todas as fontes de luz, formas

Renderização • Processo que combina as contribuições de todas as fontes de luz, formas e efeitos, computando o que será visto pixel a pixel. • Muitas fontes de luz “encarece” a renderização – Browsers X 3 D tendem a limitar o número de fontes de luz em 8. – Não há sombras geradas por objetos Alberto Raposo – PUC-Rio

3 tipos de fontes de luz em X 3 D • Direcional • Puntual

3 tipos de fontes de luz em X 3 D • Direcional • Puntual • Spot Alberto Raposo – PUC-Rio

Directional. Light • Todos os raios em uma direção. Intensidade constante (como se fosse

Directional. Light • Todos os raios em uma direção. Intensidade constante (como se fosse o Sol) Alberto Raposo – PUC-Rio

Directional. Light Alberto Raposo – PUC-Rio

Directional. Light Alberto Raposo – PUC-Rio

Point. Light Alberto Raposo – PUC-Rio

Point. Light Alberto Raposo – PUC-Rio

Point. Light Alberto Raposo – PUC-Rio

Point. Light Alberto Raposo – PUC-Rio

Spot. Light Alberto Raposo – PUC-Rio

Spot. Light Alberto Raposo – PUC-Rio

Spot. Light Alberto Raposo – PUC-Rio

Spot. Light Alberto Raposo – PUC-Rio

Background Node • Provê cubo que “rodeia” a cena, definindo 6 URLs com as

Background Node • Provê cubo que “rodeia” a cena, definindo 6 URLs com as imagens que representarão o fundo • Texture. Background Node – Idêntico ao Background, só que usa 6 Image. Texture Nodes ao invés de URLs Alberto Raposo – PUC-Rio

Background Node Alberto Raposo – PUC-Rio

Background Node Alberto Raposo – PUC-Rio

Fog • Simula a Fog: – Branco ou cinza: neblina – Preto: “night-time” effect

Fog • Simula a Fog: – Branco ou cinza: neblina – Preto: “night-time” effect Alberto Raposo – PUC-Rio

Fog Type access. Type Name Default SFColor input. Output Color 111 SFString input. Output

Fog Type access. Type Name Default SFColor input. Output Color 111 SFString input. Output fog. Type “LINEAR” [ “LINEAR” | ”EXPONENTIAL”] Immersive SFFloat input. Output visibility. Range 0 [0, ) Immersive SFBool input. Only set_bind Immersive SFBool output. Only is. Bound Immersive SFTime output. Only bind. Time Immersive SFNode input. Output metadata NULL Range Profile Immersive [X 3 DMetadata. Object] Core visibility. Range: distância da câmera onde objetos estarão totalmente obscurecidos pelo Fog fog. Type: como o fog se comporta em função da distância do objeto Alberto Raposo – PUC-Rio

Environment Sensors • Load. Sensor – Lida com recursos externos, indicando quando imagens de

Environment Sensors • Load. Sensor – Lida com recursos externos, indicando quando imagens de texturas, sons e outros arquivos X 3 D são carregados antes de começar uma animação. • Proximity. Sensor • Visibility. Sensor Alberto Raposo – PUC-Rio

Proximity. Sensor • Detecta mudanças de posição e orientação do observador em relação a

Proximity. Sensor • Detecta mudanças de posição e orientação do observador em relação a uma caixa que delimita o volume ativo do sensor Alberto Raposo – PUC-Rio

Visibility. Sensor • Similar ao Proximity. Sensor, mas detecta quando o volume associado ao

Visibility. Sensor • Similar ao Proximity. Sensor, mas detecta quando o volume associado ao objeto está no campo de visão do usuário. Alberto Raposo – PUC-Rio

Sound • Define fonte, localização, intensidade, direção e características espaciais de uma fonte de

Sound • Define fonte, localização, intensidade, direção e características espaciais de uma fonte de som na cena. • Tem um nó Audio. Clip como filho Alberto Raposo – PUC-Rio

Audio. Clip • Refere-se a um arquivo de áudio externo Alberto Raposo – PUC-Rio

Audio. Clip • Refere-se a um arquivo de áudio externo Alberto Raposo – PUC-Rio

Prototyping • Criação de novos nós que podem ser reutilizados repetidamente em X 3

Prototyping • Criação de novos nós que podem ser reutilizados repetidamente em X 3 D, como qualquer outro nó. • Proto. Declare precede Proto. Instance usada na cena • Extern. Proto. Declare – Permite manter “cópia mestre” do protótipo em algum lugar e reutilizá-lo em outros arquivos X 3 D • Protótipo recebe o tipo do primeiro nó declarado em seu corpo – O protótipo só pode ser colocado no grafo de cena em locais onde esse primeiro nó poderia ser colocado. Alberto Raposo – PUC-Rio

Proto. Declare • Interface – Define campos dos nós, que serão os pontos de

Proto. Declare • Interface – Define campos dos nós, que serão os pontos de entrada e saída de dados do protótipo • Corpo – Nós que são instanciados na criação do protótipo. • São permitidos nós padrões e outros protótipos dentro dos protótipos Alberto Raposo – PUC-Rio

Proto. Interface Alberto Raposo – PUC-Rio

Proto. Interface Alberto Raposo – PUC-Rio

Tipos de Campo Alberto Raposo – PUC-Rio

Tipos de Campo Alberto Raposo – PUC-Rio

Tipos de Campo Alberto Raposo – PUC-Rio

Tipos de Campo Alberto Raposo – PUC-Rio

Tipos de Campo Alberto Raposo – PUC-Rio

Tipos de Campo Alberto Raposo – PUC-Rio

Proto. Interface Alberto Raposo – PUC-Rio

Proto. Interface Alberto Raposo – PUC-Rio

Proto. Body • Nós que definem a funcionalidade do protótipo, formando um subgrafo que

Proto. Body • Nós que definem a funcionalidade do protótipo, formando um subgrafo que será “plugado” ao grafo de cena sempre que o protótipo for instanciado Alberto Raposo – PUC-Rio

Exemplo • 10_Text. String. Prototype. x 3 d Alberto Raposo – PUC-Rio

Exemplo • 10_Text. String. Prototype. x 3 d Alberto Raposo – PUC-Rio

VRML - Tipos de Nós • • Agrupamento Geométricos Aparência Câmera Iluminação Sensores Interpoladores

VRML - Tipos de Nós • • Agrupamento Geométricos Aparência Câmera Iluminação Sensores Interpoladores Script Alberto Raposo – PUC-Rio

VRML – Scene Authoring Interface Roteamento de eventos entre os nós não é suficiente

VRML – Scene Authoring Interface Roteamento de eventos entre os nós não é suficiente para o tratamento de várias classes de comportamento VRML define o nó Script e a EAI, que permitem ao usuário conectar o mundo a programas externos Alberto Raposo – PUC-Rio

VRML – Nó Script (1) Evento Nó Script Programa externo (processamento do evento) Evento

VRML – Nó Script (1) Evento Nó Script Programa externo (processamento do evento) Evento (alterando estado do mundo VRML) Alberto Raposo – PUC-Rio

VRML – Nó Script (2) • Nós Script – Trazem lógica de decisão e

VRML – Nó Script (2) • Nós Script – Trazem lógica de decisão e gerenciamento de estados para mundos VRML – Capazes de receber, processar e gerar eventos que controlam o comportamento dos objetos do mundo – Programa associado ao nó pode controlar toda a interação e o comportamento dos elementos do mundo virtual Alberto Raposo – PUC-Rio

VRML – Nó Script (3) • Através do nó Script é possível usar técnicas

VRML – Nó Script (3) • Através do nó Script é possível usar técnicas mais sofisticadas que a interpolação linear para a geração de animações • Exemplo: Touch. Sensor usuário clica sobre um objeto Script Time. Sensor start a cada pulso de relógio t nova posição f(t) (qualquer) Alberto Raposo – PUC-Rio Programa externo Nó geométrico move

 • Fazer download do tutorial disponível em: http: //web 3 d. vapourtech. com/tutorials/vrml

• Fazer download do tutorial disponível em: http: //web 3 d. vapourtech. com/tutorials/vrml 97/ Alberto Raposo – PUC-Rio

VRML – Nó Script – Exemplo 1 (1) #VRML V 2. 0 utf 8

VRML – Nó Script – Exemplo 1 (1) #VRML V 2. 0 utf 8 Group { children [ DEF Sph Transform { children Shape { geometry Cone {} appearance Appearance { material Material { diffuse. Color 1 0 0 } } Transform { translation -2. 4. 2 1 rotation 0 1 1. 9 children [ Shape { geometry Box {} appearance Appearance { material DEF MATERIAL Material {} } } DEF TS Touch. Sensor {} ] } DEF SC Script { url "extouchcube. class" field SFColor current. Color 0 0 0 event. In SFColor color. In event. Out SFBool is. Red } ] } Alberto Raposo – PUC-Rio DEF my. Color. Interpolator { key [0. 0, 0. 3, 0. 6, 1. 0 ] key. Value [1 0 0 , 0 1 0, 1 0 0, 0 0 1] } DEF my. Clock Time. Sensor { cycle. Interval 10 } DEF XTIMER Time. Sensor { loop TRUE cycle. Interval 5 } DEF ENGINE Orientation. Interpolator { key [ 0, . 5, 1] key. Value [ 0 1 0 0, 0 1 0 3. 14, 0 1 0 6. 28] } ROUTE TS. touch. Time TO my. Clock. set_start. Time ROUTE my. Clock. fraction TO my. Color. set_fraction ROUTE my. Color. value_changed TO MATERIAL. diffuse. Color ROUTE my. Color. value_changed TO SC. color. In ROUTE SC. is. Red TO XTIMER. enabled ROUTE XTIMER. fraction TO ENGINE. set_fraction ROUTE ENGINE. value_changed TO Sph. set_rotation

VRML – Nó Script – Exemplo 1 (2) Roteamento de eventos do exemplo anterior

VRML – Nó Script – Exemplo 1 (2) Roteamento de eventos do exemplo anterior Alberto Raposo – PUC-Rio

VRML – Nó Script – Exemplo 1 (3) import vrml. *; Programa Java associado

VRML – Nó Script – Exemplo 1 (3) import vrml. *; Programa Java associado ao nó Script do exemplo anterior import vrml. field. *; import vrml. node. *; public class extouchcube extends Script { // declaração dos campos e event. Outs usados private SFColor current. Color; private SFBool is. Red; public void initialize() { current. Color = (SFColor) get. Field("current. Color"); is. Red = (SFBool) get. Event. Out("is. Red"); } public void process. Event(Event e) { // chamado no recebimento do evento color. In current. Color. set. Value((Const. SFColor)e. get. Value()); } public void events. Processed() { if (current. Color. get. Red() >= 0. 5) // vermelho maior que 50% is. Red. set. Value(false); else is. Red. set. Value(true); } } Alberto Raposo – PUC-Rio

VRML – Nó Script – Exemplo 1 (4) Visualização do exemplo anterior Alberto Raposo

VRML – Nó Script – Exemplo 1 (4) Visualização do exemplo anterior Alberto Raposo – PUC-Rio

VRML – Nó Script – Exemplo 2 (1) #VRML V 2. 0 utf 8

VRML – Nó Script – Exemplo 2 (1) #VRML V 2. 0 utf 8 Viewpoint { position 0 5 18 orientation 1 0 0 -0. 24 field. Of. View 0. 785398 } Spot. Light { location 0 10 0 direction 0 -1 0 radius 100 } #Objeto móvel (esfera amarela) DEF MOV_OBJ Transform { translation -8 0 0 children [ Shape { geometry Sphere { radius 0. 7 } appearance Appearance { material Material { diffuse. Color 1 1 0 } } } ] } Alberto Raposo – PUC-Rio # Sensores (Botões) Transform { translation 6. 25 0 0 children [ DEF TOUCH 1 Touch. Sensor {} Shape { geometry Box { size. 5 1 1 } appearance Appearance { material Material { diffuse. Color 1 0 0 } } } ] } Transform { translation 6. 75 0 0 children [ DEF TOUCH 2 Touch. Sensor {} Shape { geometry Box { size. 5 1 1 } appearance Appearance { material Material { diffuse. Color 0 1 0 } } } ] }

VRML – Nó Script – Exemplo 2 (2) # Cubos que não se movem

VRML – Nó Script – Exemplo 2 (2) # Cubos que não se movem Transform { translation -5 0 0 children [ DEF CUBE_CHILDREN Shape { geometry DEF CUBE_LARGE Box { size 1 1 1} appearance Appearance { material Material { diffuse. Color 1 0 1 } } } ] } Transform { translation 0 5 0 children [ USE CUBE_CHILDREN ] } Transform { translation 0 -4. 5 0 children [ USE CUBE_CHILDREN ] } # Trajetórias para a esfera DEF I_1 Position. Interpolator { key [ 0, 0. 0833, 0. 167, 0. 25, 0. 333, 0. 417, 0. 583, 0. 667, 0. 75, 0. 833, 0. 917, 1] key. Value [ -8 0 0, -7 -4 0, -4 -6 0, 0 -7 0, 2. 75 -5 0, 4 -3 0, 5 0 0, 4 3 0, 2. 75 5 0, 0 7 0, -4 6 0, -7 4 0, -8 0 0] } DEF I_2 Position. Interpolator {. . . } # Relógio DEF TIMER Time. Sensor { loop TRUE cycle. Interval 7 } Alberto Raposo – PUC-Rio # Roteamento de eventos ROUTE TIMER. fraction_changed TO I_1. set_fraction ROUTE TIMER. fraction_changed TO I_2. set_fraction ROUTE TIMER. fraction_changed TO S. start ROUTE S. new. Position TO MOV_OBJ. translation # Script responsável pelo comportamento da esfera DEF S Script { event. In SFFloat start field SFNode inside USE TOUCH 1 field SFNode outside USE TOUCH 2 event. Out SFVec 3 f new. Position field SFNode Pos. Interp 1 USE INTERP 1 field SFNode Pos. Interp 2 USE INTERP 2 url "exballs. class" }

VRML – Nó Script – Exemplo 2 (3) Programa Java associado ao nó Script

VRML – Nó Script – Exemplo 2 (3) Programa Java associado ao nó Script do exemplo anterior import vrml. *; (. . . ) aux 1 = (Node)(outside. get. Value()); sensor 2 = (Const. SFBool) aux 1. get. Event. Out("is. Over"); public class exballs extends Script { private SFNode inside; (. . . ) private boolean outsid = true; // boolean outsid stores the last sensor touch if(sensor 2. get. Value()) outsid = true; else if(sensor 1. get. Value()) outsid = false; // Choosing which trajectory to follow, public void initialize() { // according to the boolean outsid. // mapping variables into VRML-script fields/events Const. SFFloat f = (Const. SFFloat) e. get. Value(); inside = (SFNode) get. Field("inside"); outside = (SFNode) get. Field("outside"); if( outsid && ff > f. get. Value() ) new. Position = (SFVec 3 f) get. Event. Out("new. Position"); aux = (Node) Pos. Interp 2. get. Value(); (. . . ) } publicd process. Event (Event e) { Const. SFBool sensor 1; Const. SFBool sensor 2; // Getting sensor events Node aux 1 = (Node)(inside. get. Value()); sensor 1 = (Const. SFBool) Alberto Raposo –aux 1. get. Event. Out("is. Over"); PUC-Rio else if ( !outsid && ff > f. get. Value() ) aux = (Node) Pos. Interp 1. get. Value(); ff = f. get. Value(); // Mapping new position into an Event. Out Const. SFVec 3 f tmp = (Const. SFVec 3 f) aux. get. Event. Out("value_changed"); new. Position. set. Value(tmp); } }

VRML – Nó Script – Exemplo 2 (4) Visualização do exemplo anterior Alberto Raposo

VRML – Nó Script – Exemplo 2 (4) Visualização do exemplo anterior Alberto Raposo – PUC-Rio

VRML: Java. Script Ver código em 10_javascript. wrl Alberto Raposo – PUC-Rio

VRML: Java. Script Ver código em 10_javascript. wrl Alberto Raposo – PUC-Rio

VRML - EAI (External Authoring Interface) mundo VRML E A I applet Java EAI

VRML - EAI (External Authoring Interface) mundo VRML E A I applet Java EAI é uma inteface para pemitir que ambientes externos acessem nós de uma cena VRML Alberto Raposo – PUC-Rio

VRML - EAI Nó Script mundo VRML E A I applet Java Alberto Raposo

VRML - EAI Nó Script mundo VRML E A I applet Java Alberto Raposo – PUC-Rio Evento Nó Script Programa externo (processamento do evento) Evento (alterando estado do mundo VRML)

VRML - EAI • EAI – Maior modularidade e simplicidade dos programas – Maior

VRML - EAI • EAI – Maior modularidade e simplicidade dos programas – Maior liberdade para criação de interfaces sofisticadas para inteação com mundos VRML – Adequada para a criação de sistemas multimídia complexos • Nó Script – Adequado para dar comportamento individual a objetos da cena Alberto Raposo – PUC-Rio

EAI • Para usar a EAI é necessário criar página HTML incluindo a cena

EAI • Para usar a EAI é necessário criar página HTML incluindo a cena VRML e um applet que realiza a interação com a cena. • O seguinte trecho deve estar na página HTML Alberto Raposo – PUC-Rio

EAI • Programa Java precisa pegar referência ao objeto Browser Vêm com o browser

EAI • Programa Java precisa pegar referência ao objeto Browser Vêm com o browser (ex. , Cortona) Alberto Raposo – PUC-Rio

Bibliografia Adicional • • The Annotated VRML 97 Reference: http: //accad. osu. edu/~pgerstma/class/vnv/resour ces/info/Annotated.

Bibliografia Adicional • • The Annotated VRML 97 Reference: http: //accad. osu. edu/~pgerstma/class/vnv/resour ces/info/Annotated. Vrml. Ref/Book. html Web 3 D Consortium: http: //www. web 3 d. org/ Cortona: http: //www. parallelgraphics. com/products/corto na/ “VRML 2. 0 - An Introductory view by examples” http: //www. dca. fee. unicamp. br/~leopini/tutvrml/vrml-tut. html Alberto Raposo – PUC-Rio

Bibliografia Adicional • Script – • EAI – – • http: //web 3 d.

Bibliografia Adicional • Script – • EAI – – • http: //web 3 d. vapourtech. com/tutorials/vrml 97 http: //www. parallelgraphics. com/developer/products/ cortona/eai http: //dmi. uib. es/~abasolo/cursovrml/diapos/097. html Lista de tutoriais: http: //philliphansel. com/tutorials. htm Alberto Raposo – PUC-Rio