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.

Slides:



Advertisements
Apresentações semelhantes
Python: Funções Claudio Esperança.
Advertisements

Programação em Java Prof. Maurício Braga
Wagner Santos C. de Jesus
DCA-0114 Computação Gráfica
Laboratório de Informática Imagens 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
CSS ( Folhas de Estilo).
Modelos de ILuminação Alex F. V. Machado.
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
SISTEMAS DISTRIBUÍDOS
Ismael Andrade Pimentel
INF 1366 – Computação Gráfica Interativa Transformações
April 05 Prof. Ismael H. F. Santos - 1 Modulo II CheckStyle Professor Ismael H F Santos –
INF 1366 – Computação Gráfica Interativa
Alberto B. Raposo INF 1366 – Computação Gráfica Interativa Raytracing (resumo) POVRAY – Persistence of Vision Raytracer Alberto.
April 05 Prof. Ismael H. F. Santos - 1 Módulo VI – J ava Standard Template Library (JSTL) Prof. Ismael H F Santos.
INF 1366 – Computação Gráfica Interativa X3D
INF 1366 – Computação Gráfica Interativa Grafos de Cena
INF 1366 – Computação Gráfica Interativa Iluminação e Shading
INF 1366 – Computação Gráfica Interativa X3D: Grouping Nodes, Viewing & Navigation, Appearance Alberto B. Raposo
INF 1366 – Computação Gráfica Interativa Animação por Computador
INF 1366 – Computação Gráfica Interativa Modelagem Geométrica
A terceira dimensão.
1 Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Introdução a Computação Gráfica (ICG) Material IV-Bimestre Agrupamentos.
1 Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Introdução a Computação Gráfica (ICG) Material III-Bimestre Transformação.
Universidade Federal de Engenharia de Itajubá Realidade Virtual - RV Alexandre Carlos Brandão Ramos
Básico.
Tópicos Aparência Importando Arquivos Inserção de Textos Interagindo com o AV.
PSI-2652: Processamento, Síntese e Análise de Imagens II Rodrigo Debczynski Fernandes – n°USP Prof. Marcio Lobo.
Internet Principais conceitos.
Classes e objetos P. O. O. Prof. Grace.
7 - Criação de Páginas Web
Desenvolvimento de Projetos e Aplicações Web
Tópicos avançados em internet B Carlos Oberdan Rolim Ciência da Computação.
Disciplina: Multimídia Prof a. Leila Jane Brum Lage Sena Guimarães Transparências: Wilson de Pádua Paula Filho.
Conceitos básicos de orientação a objetos
Ray Tracing Patrícia Cordeiro Pereira Pampanelli
Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo.
RV imersiva e não imersiva Conceitos e Dispositivos
VRML Departamento de Engenharia Elétrica EESC-USP
Layout.
Rodrigo Cristiano Silva
Game Engines.
Métodos de Construção de Software: Orientação a Objetos
Entendendo as definições de classe
VRML: Virtual Reality Modeling Language Alexandre Cardoso
Multimídia Exercícios VRML
Seminário de Introdução à Multimídia
Iluminação e Sombreamento
REVISÃO.
Professor: Márcio Amador
PrograMação para internet
CORBA Apresentação do Padrão CORBA Maurício Maron Mendes Ramiro Pereira de Magalhães
VRML Virtual Reality Modeling Language
Sistemas operacionais
Java Kickstart, day 2 Semelhanças com linguagem C.
Análise Léxica Prof. Alexandre Monteiro
Classes Abstratas e Interface
Introdução à Multimídia
Sistemas de Rastreamento de Baixo Custo para Desktops Tecgraf (Grupo de Tecnologia em Computação Gráfica) Depto. de Informática, PUC-Rio Alberto Raposo,
Educação Médica na Internet Renato M.E. Sabbatini NIB/UNICAMP Objetivos Aplicações Ferramentas Estratégias Recursos Metodologia Status Atual Para Saber.
VRML. Roteiro  Introdução  A história de VRML  Visão geral  Potencial  Fundamentos  Ferramentas de software  Vantagens e Desvantagens  Conclusões.
EXtensible 3D Felipe Leite (fml) Moroni Granja (mog) Rodrigo Leite (rml2) Rodrigo Marroquim (rpm)
Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa X3D – Event Utilities e Scripting Alberto B. Raposo
Arthur Gonçalves Christian Diego Eudes Raphael Icamaan Botelho.
OGRE 3D Open Source Graphics Engine Seminário Introdução à Multimídia.
Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.
Novos programas de TIC Flash/Dreamweaver. Conceitos e 1º acesso ao FLASH Conceitos e 1º acesso ao DREAMWEAVER Instalação.
Conceitos de Iluminação Gerando Eventos Em VRML, um nó de iluminação descreve como parte do mundo deve ser iluminada, mas não cria, automaticamente, uma.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Universidade Federal do Ma
Transcrição da apresentação:

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

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

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

DirectionalLight Alberto Raposo – PUC-Rio

PointLight Alberto Raposo – PUC-Rio

PointLight Alberto Raposo – PUC-Rio

SpotLight Alberto Raposo – PUC-Rio

SpotLight 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 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 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

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

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

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

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

AudioClip 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 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

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

ProtoInterface 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

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

Exemplo 10_TextStringPrototype.x3d 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) 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: Nó 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

Fazer download do tutorial disponível em: http://web3d.vapourtech.com/tutorials/vrml97/ 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 1 0 0 } } } } Transform { translation -2.4 .2 1 rotation 0 1 1 .9 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 [ 0 1 0 0, 0 1 0 3.14, 0 1 0 6.28] } 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

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

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

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

VRML – Nó Script – Exemplo 2 (1) #VRML V2.0 utf8 Viewpoint { position 0 5 18 orientation 1 0 0 -0.24 fieldOfView 0.785398 } SpotLight { 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 { diffuseColor 1 1 0 } } ] } # Sensores (Botões) Transform { translation 6.25 0 0 children [ DEF TOUCH1 TouchSensor {} Shape { geometry Box { size .5 1 1 } appearance Appearance { material Material { diffuseColor 1 0 0 } } } ] } translation 6.75 0 0 DEF TOUCH2 TouchSensor {} diffuseColor 0 1 0 } } ] } Alberto Raposo – PUC-Rio

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

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

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

VRML: JavaScript 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 EAI Nó Script mundo VRML applet Java E A I Programa externo (processamento do evento) mundo VRML Evento E A I Nó Script Evento (alterando estado do mundo VRML) applet Java 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 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/resources/info/AnnotatedVrmlRef/Book.html Web3D Consortium: http://www.web3d.org/ Cortona: http://www.parallelgraphics.com/products/cortona/ “VRML 2.0 - An Introductory view by examples” http://www.dca.fee.unicamp.br/~leopini/tut-vrml/vrml-tut.html 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: http://philliphansel.com/tutorials/tutorials.htm Alberto Raposo – PUC-Rio