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

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

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

Apresentações semelhantes


Apresentação em tema: "Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa X3D – Iluminação, Environment Sensors e Protótipos Alberto B. Raposo"— Transcrição da apresentação:

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

2 Alberto Raposo – PUC-Rio 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

3 Alberto Raposo – PUC-Rio 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

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

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

6 Alberto Raposo – PUC-Rio DirectionalLight

7 Alberto Raposo – PUC-Rio PointLight

8 Alberto Raposo – PUC-Rio PointLight

9 Alberto Raposo – PUC-Rio SpotLight

10 Alberto Raposo – PUC-Rio SpotLight

11 Alberto Raposo – PUC-Rio 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

12 Alberto Raposo – PUC-Rio Background Node

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

14 Alberto Raposo – PUC-Rio Fog TypeaccessTypeNameDefaultRangeProfile SFColorinputOutputColor1 1 1Immersive SFStringinputOutputfogTypeLINEAR[ LINEAR | EXPONENTIAL] Immersive SFFloatinputOutputvisibilityRange0 [0, ) Immersive SFBoolinputOnlyset_bindImmersive SFBooloutputOnlyisBoundImmersive SFTimeoutputOnlybindTimeImmersive SFNodeinputOutputmetadataNULL[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

15 Alberto Raposo – PUC-Rio Environment Sensors LoadSensor –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

16 Alberto Raposo – PUC-Rio 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

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

18 Alberto Raposo – PUC-Rio 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

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

20 Alberto Raposo – PUC-Rio 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.

21 Alberto Raposo – PUC-Rio ProtoDeclare 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

22 Alberto Raposo – PUC-Rio ProtoInterface

23 Alberto Raposo – PUC-Rio Tipos de Campo

24 Alberto Raposo – PUC-Rio Tipos de Campo

25 Alberto Raposo – PUC-Rio Tipos de Campo

26 Alberto Raposo – PUC-Rio ProtoInterface

27 Alberto Raposo – PUC-Rio 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

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

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

30 Alberto Raposo – PUC-Rio 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

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

32 Alberto Raposo – PUC-Rio 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

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

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

35 Alberto Raposo – PUC-Rio 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 children [ Shape { geometry Box {} appearance Appearance { material DEF MATERIAL Material {} } } DEF TS TouchSensor {} ] } DEF SC Script { url "extouchcube.class" field SFColor currentColor 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

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

37 Alberto Raposo – PUC-Rio VRML – Nó Script – Exemplo 1 (3) 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); } } Programa Java associado ao nó Script do exemplo anterior

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

39 Alberto Raposo – PUC-Rio VRML – Nó Script – Exemplo 2 (1) #VRML V2.0 utf8 Viewpoint { position orientation fieldOfView } SpotLight { location direction radius 100 } #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 } } } ] } Transform { translation children [ DEF TOUCH2 TouchSensor {} Shape { geometry Box { size } appearance Appearance { material Material { diffuseColor } } } ] }

40 Alberto Raposo – PUC-Rio VRML – Nó Script – Exemplo 2 (2) # 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 } } } ] } Transform { translation children [ USE CUBE_CHILDREN ] } Transform { translation children [ USE CUBE_CHILDREN ] } # Relógio DEF TIMER TimeSensor { loop TRUE cycleInterval 7 } # Trajetórias para a esfera DEF I_1 PositionInterpolator { key [ 0, , 0.167, 0.25, 0.333, 0.417, 0.5, 0.583, 0.667, 0.75, 0.833, 0.917, 1] keyValue [ , , , , , , 5 0 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

41 Alberto Raposo – PUC-Rio VRML – Nó Script – Exemplo 2 (3) Programa Java associado ao nó Script do exemplo anterior 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"); 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); } }

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

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

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

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

46 Alberto Raposo – PUC-Rio 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

47 Alberto Raposo – PUC-Rio 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

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

49 Alberto Raposo – PUC-Rio Bibliografia Adicional The Annotated VRML 97 Reference: ces/info/AnnotatedVrmlRef/Book.html Web3D Consortium: Cortona: na/ VRML An Introductory view by examples vrml/vrml-tut.html

50 Alberto Raposo – PUC-Rio Bibliografia Adicional Script –http://web3d.vapourtech.com/tutorials/vrml97 EAI –http://www.parallelgraphics.com/developer/products/ cortona/eai –http://dmi.uib.es/~abasolo/cursovrml/diapos/097.html Lista de tutoriais:


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

Apresentações semelhantes


Anúncios Google