INF 1366 Computao Grfica Interativa X 3 D
- Slides: 50
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 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 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 • Spot Alberto Raposo – PUC-Rio
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
Point. Light Alberto Raposo – PUC-Rio
Point. 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 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
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 “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 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 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 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 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
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 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
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. 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
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 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 (alterando estado do mundo VRML) 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 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: 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 97/ Alberto Raposo – PUC-Rio
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 Alberto Raposo – PUC-Rio
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 – PUC-Rio
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 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 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 – 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 é 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 – 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 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 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 (ex. , Cortona) Alberto Raposo – PUC-Rio
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. 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
- Color 01122008
- Uniderp interativa portal
- Grfica
- Función escalonada significado
- Grfica
- Inf1060
- Inf 327
- Inf schule scratch
- Inf
- Inf 1900
- Inf smartwatch
- Inf
- Rcbottom.inf
- Inf
- Rr. communicantes albi
- Ma da infinitiiv harjutused
- Astd inf meta
- Dipl wirt inf
- Hash160 to address
- Mag inf
- Inf
- Perfect infinitive
- A occipitalis
- Inf
- Conjugata diagonalis interna
- Bare verbs list
- Inf 110
- Mononukeloza
- C infinity v character table
- Oran cherry release
- Inf
- Middle cerebral artery branches
- Inf3135
- Define prim
- Inf 111
- Inf
- Nextbusca
- Enformatik sınav soruları
- Inf 121 uci
- Infinitive without to
- Porno inf
- Inf
- Artere thyroidienne inf
- Inf hartsol
- Www.inf