A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "INF 1366 – Computação Gráfica Interativa X3D – Iluminação, Environment Sensors e Protótipos Alberto B. Raposo abraposo@tecgraf.puc-rio.br http://www.tecgraf.puc-rio.br/~abraposo/INF1366."— Transcrição da apresentação:

1 INF 1366 – Computação Gráfica Interativa X3D – Iluminação, Environment Sensors e Protótipos
Alberto B. Raposo Alberto Raposo – PUC-Rio

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

3 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 X3D tendem a limitar o número de fontes de luz em 8. Não há sombras geradas por objetos Alberto Raposo – PUC-Rio

4 3 tipos de fontes de luz em X3D
Direcional Puntual Spot Alberto Raposo – PUC-Rio

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

6 DirectionalLight Alberto Raposo – PUC-Rio

7 PointLight Alberto Raposo – PUC-Rio

8 PointLight Alberto Raposo – PUC-Rio

9 SpotLight Alberto Raposo – PUC-Rio

10 SpotLight Alberto Raposo – PUC-Rio

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

12 Background Node Alberto Raposo – PUC-Rio

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

14 Fog Type accessType Name Default Range Profile SFColor inputOutput Color 1 1 1 Immersive SFString fogType “LINEAR” [ “LINEAR” | ”EXPONENTIAL”] SFFloat visibilityRange [0, ) SFBool inputOnly set_bind outputOnly isBound SFTime bindTime SFNode metadata NULL [X3DMetadataObject] Core visibilityRange: distância da câmera onde objetos estarão totalmente obscurecidos pelo Fog fogType: como o fog se comporta em função da distância do objeto Alberto Raposo – PUC-Rio

15 Environment Sensors LoadSensor ProximitySensor VisibilitySensor
Lida com recursos externos, indicando quando imagens de texturas, sons e outros arquivos X3D são carregados antes de começar uma animação. ProximitySensor VisibilitySensor Alberto Raposo – PUC-Rio

16 ProximitySensor 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

17 VisibilitySensor Similar ao ProximitySensor, mas detecta quando o volume associado ao objeto está no campo de visão do usuário. Alberto Raposo – PUC-Rio

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

19 AudioClip Refere-se a um arquivo de áudio externo
Alberto Raposo – PUC-Rio

20 Prototyping Criação de novos nós que podem ser reutilizados repetidamente em X3D, como qualquer outro nó. ProtoDeclare precede ProtoInstance usada na cena ExternProtoDeclare Permite manter “cópia mestre” do protótipo em algum lugar e reutilizá-lo em outros arquivos X3D 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

21 ProtoDeclare Interface Corpo
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

22 ProtoInterface Alberto Raposo – PUC-Rio

23 Tipos de Campo Alberto Raposo – PUC-Rio

24 Tipos de Campo Alberto Raposo – PUC-Rio

25 Tipos de Campo Alberto Raposo – PUC-Rio

26 ProtoInterface Alberto Raposo – PUC-Rio

27 ProtoBody 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

28 Exemplo 10_TextStringPrototype.x3d Alberto Raposo – PUC-Rio

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

30 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

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

32 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

33 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: geométrico Script TouchSensor TimeSensor nova posição usuário clica sobre um objeto a cada pulso de relógio t move start f(t) (qualquer) Programa externo Alberto Raposo – PUC-Rio

34 Fazer download do tutorial disponível em:
Alberto Raposo – PUC-Rio

35 VRML – Nó Script – Exemplo 1 (1)
#VRML V2.0 utf8 Group { children [ DEF Sph Transform { children Shape { geometry Cone {} appearance Appearance { material Material { diffuseColor } } } } Transform { translation rotation Shape { geometry Box {} material DEF MATERIAL Material {} } } DEF TS TouchSensor {} ] } DEF SC Script { url "extouchcube.class" field SFColor currentColor 0 0 0 eventIn SFColor colorIn eventOut SFBool isRed } ] } DEF myColor ColorInterpolator { key [0.0, 0.3, 0.6, 1.0 ] keyValue [1 0 0 , 0 1 0, 1 0 0, 0 0 1] } DEF myClock TimeSensor { cycleInterval 10 } DEF XTIMER TimeSensor { loop TRUE cycleInterval 5 } DEF ENGINE OrientationInterpolator { key [ 0, .5, 1] keyValue [ , , ] } ROUTE TS.touchTime TO myClock.set_startTime ROUTE myClock.fraction TO myColor.set_fraction ROUTE myColor.value_changed TO MATERIAL.diffuseColor ROUTE myColor.value_changed TO SC.colorIn ROUTE SC.isRed TO XTIMER.enabled ROUTE XTIMER.fraction TO ENGINE.set_fraction ROUTE ENGINE.value_changed TO Sph.set_rotation Alberto Raposo – PUC-Rio

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

37 VRML – Nó Script – Exemplo 1 (3)
Programa Java associado ao nó Script do exemplo anterior import vrml.*; import vrml.field.*; import vrml.node.*; public class extouchcube extends Script { // declaração dos campos e eventOuts usados private SFColor currentColor; private SFBool isRed; public void initialize() { currentColor = (SFColor) getField("currentColor"); isRed = (SFBool) getEventOut("isRed"); } public void processEvent(Event e) { // chamado no recebimento do evento colorIn currentColor.setValue((ConstSFColor)e.getValue()); } public void eventsProcessed() { if (currentColor.getRed() >= 0.5) // vermelho maior que 50% isRed.setValue(false); else isRed.setValue(true); } } Alberto Raposo – PUC-Rio

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

39 VRML – Nó Script – Exemplo 2 (1)
#VRML V2.0 utf8 Viewpoint { position orientation fieldOfView } SpotLight { location direction radius } #Objeto móvel (esfera amarela) DEF MOV_OBJ Transform { translation children [ Shape { geometry Sphere { radius 0.7 } appearance Appearance { material Material { diffuseColor } } ] } # Sensores (Botões) Transform { translation children [ DEF TOUCH1 TouchSensor {} Shape { geometry Box { size } appearance Appearance { material Material { diffuseColor } } } ] } translation DEF TOUCH2 TouchSensor {} diffuseColor } } ] } Alberto Raposo – PUC-Rio

40 VRML – Nó Script – Exemplo 2 (2)
# Trajetórias para a esfera DEF I_1 PositionInterpolator { key [ 0, , 0.167, 0.25, 0.333, 0.417, 0.5, 0.583, , 0.75, 0.833, 0.917, 1] keyValue [ , , , , , 4 -3 0, , 4 3 0, , 0 7 0, , , ] } DEF I_2 PositionInterpolator { ...} # Script responsável pelo comportamento da esfera DEF S Script { eventIn SFFloat start field SFNode inside USE TOUCH1 field SFNode outside USE TOUCH2 eventOut SFVec3f newPosition field SFNode PosInterp1 USE INTERP1 field SFNode PosInterp2 USE INTERP2 url "exballs.class" } # 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.newPosition TO MOV_OBJ.translation # Cubos que não se movem Transform { translation children [ DEF CUBE_CHILDREN Shape { geometry DEF CUBE_LARGE Box { size 1 1 1} appearance Appearance { material Material { diffuseColor } } } ] } translation 0 5 0 children [ USE CUBE_CHILDREN ] } translation children [ USE CUBE_CHILDREN ] } # Relógio DEF TIMER TimeSensor { loop TRUE cycleInterval 7 Alberto Raposo – PUC-Rio

41 VRML – Nó Script – Exemplo 2 (3)
Programa Java associado ao nó Script do exemplo anterior aux1 = (Node)(outside.getValue()); sensor2 = (ConstSFBool) aux1.getEventOut("isOver"); // boolean outsid stores the last sensor touch if(sensor2.getValue()) outsid = true; else if(sensor1.getValue()) outsid = false; // Choosing which trajectory to follow, // according to the boolean outsid. ConstSFFloat f = (ConstSFFloat) e.getValue(); if( outsid && ff > f.getValue() ) aux = (Node) PosInterp2.getValue(); else if ( !outsid && ff > f.getValue() ) aux = (Node) PosInterp1.getValue(); ff = f.getValue(); // Mapping new position into an EventOut ConstSFVec3f tmp = (ConstSFVec3f) aux.getEventOut("value_changed"); newPosition.setValue(tmp); } } import vrml.*; (...) public class exballs extends Script { private SFNode inside; (...) private boolean outsid = true; public void initialize() { // mapping variables into VRML-script fields/events inside = (SFNode) getField("inside"); outside = (SFNode) getField("outside"); newPosition = (SFVec3f) getEventOut("newPosition"); (...) } publicd processEvent (Event e) { ConstSFBool sensor1; ConstSFBool sensor2; // Getting sensor events Node aux1 = (Node)(inside.getValue()); sensor1 = (ConstSFBool) aux1.getEventOut("isOver"); Alberto Raposo – PUC-Rio

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

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

44 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

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

46 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

47 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

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

49 Bibliografia Adicional
The Annotated VRML 97 Reference: Web3D Consortium: Cortona: “VRML An Introductory view by examples” Alberto Raposo – PUC-Rio

50 Bibliografia Adicional
Script EAI Lista de tutoriais: Alberto Raposo – PUC-Rio


Carregar ppt "INF 1366 – Computação Gráfica Interativa X3D – Iluminação, Environment Sensors e Protótipos Alberto B. Raposo abraposo@tecgraf.puc-rio.br http://www.tecgraf.puc-rio.br/~abraposo/INF1366."

Apresentações semelhantes


Anúncios Google