Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Universidade Federal do Ma
Introdução à Computação Gráfica Prof. Anselmo C. de Paiva Depto de Informática VRML
2
Roteiro Introdução a VRML Conceitos Chave
Construindo e Agrupando Formas Predefinidas Prof. Anselmo C. de Paiva - DEINF-UFMA
3
1-2 - Introdução a VRML - Conceitos Chave
Virtual Reality Modeling Language
4
Arquivo VRML Descrição textual de um mundo VRML.. Extensão wrl
Prof. Anselmo C. de Paiva - DEINF-UFMA
5
Tipos de Componentes de um Arquivo VRML:
VRML Header (cabeçalho) - obrigatório Protótipos Formas, interpoladores, sensores e scripts Rotas Prof. Anselmo C. de Paiva - DEINF-UFMA
6
Outros itens: Comentários Nodos Campos e valores de campos
Nomes de nodos definidos Nomes de nodos usados Prof. Anselmo C. de Paiva - DEINF-UFMA
7
fig 2.1 Prof. Anselmo C. de Paiva - DEINF-UFMA
8
O Cabeçalho VRML #VRML V2.0 utf8
Prof. Anselmo C. de Paiva - DEINF-UFMA
9
Comentários # Draw the hut walls
Prof. Anselmo C. de Paiva - DEINF-UFMA
10
Nodos Nodos descrevem formas e suas propriedades. Geralmente contém:
tipo (obrigatório) chaves (obrigatório) campos (pocionais) e seus valores dentro das chaves Prof. Anselmo C. de Paiva - DEINF-UFMA
11
Exemplo de nodo Cylinder { } height 2.0 radius 2.0
Prof. Anselmo C. de Paiva - DEINF-UFMA
12
Campos e valores de campos
height 2.0 radius 2.0 São os atributos de um nodo São opcionais porque têm valores default Prof. Anselmo C. de Paiva - DEINF-UFMA
13
Definições de nomes de campos
DEF node-name node-type { ... } Prof. Anselmo C. de Paiva - DEINF-UFMA
14
Uso de nomes de campos USE USE node-name
Prof. Anselmo C. de Paiva - DEINF-UFMA
15
Formas geometry - define a estrutura material - aparência (cor)
texture - textura (vidro, madeira, etc.) Estes atributos ficam dentro do nodo SHAPE VRML suporta formas geométricas primitivas e avançadas Prof. Anselmo C. de Paiva - DEINF-UFMA
16
Agrupando formas Nodo group Prof. Anselmo C. de Paiva - DEINF-UFMA
17
3 - Construindo e Agrupando Formas Predefinidas
18
Forma - Nodo Shape Todas as formas são construídas com o nodo Shape
appearance NULL #exposedField SFNode geometry NULL #exposedField SFNode } Prof. Anselmo C. de Paiva - DEINF-UFMA
19
Aparência - nodo appearance
O atributo do campo Appearance pode ser preenchido com um nodo appearance Appearance { material NULL #exposedField SFNode texture NULL #exposedField SFNode textureTransform NULL #esposedField SFNode } Prof. Anselmo C. de Paiva - DEINF-UFMA
20
Nodo Material Especifica atributos de material podendo ser usado como valor do atributo material de appearance Material { ambientIntensity 0.2 #exposedField SFFloat diffuseColor #exposedField SFColor emissiveColor #exposedField SFColor shininess #exposedField SFFloat specularColor #exposedField SFColor transparency 0.0 #exposedField SFFloat } Prof. Anselmo C. de Paiva - DEINF-UFMA
21
Caixa - Nodo Box Cria uma caixa, podendo ser usado como valor do campo geometry no nodo shape. Box { size #field SFVec3f Prof. Anselmo C. de Paiva - DEINF-UFMA
22
Exemplos fig 3.1 Prof. Anselmo C. de Paiva - DEINF-UFMA
23
Prof. Anselmo C. de Paiva - DEINF-UFMA
24
Nodo Cone Cone { } bottomRadius 1.0 #field SFFloat
height 2.0 #field SFFloat side TRUE #field SFBool bottom TRUE #field SFBool } Prof. Anselmo C. de Paiva - DEINF-UFMA
25
Prof. Anselmo C. de Paiva - DEINF-UFMA
26
Prof. Anselmo C. de Paiva - DEINF-UFMA
27
Nodo Cylinder Cylinder { } radius 1.0 #field SFFloat
height 2.0 #field SFFloat side TRUE #field SFBool top TRUE #field SFBool bottom TRUE #field SFBool } Prof. Anselmo C. de Paiva - DEINF-UFMA
28
Prof. Anselmo C. de Paiva - DEINF-UFMA
29
Prof. Anselmo C. de Paiva - DEINF-UFMA
30
Prof. Anselmo C. de Paiva - DEINF-UFMA
31
Nodo Sphere Sphere { } radius 1.0 #field SFFloat
Prof. Anselmo C. de Paiva - DEINF-UFMA
32
Prof. Anselmo C. de Paiva - DEINF-UFMA
33
Nodo Group Group { children [ ] #exposedField MFNode
bboxCenter #field SFVec3f bboxSize #field SFVec3f addChildren #eventIn MFNode removeChildren #eventOut MFNode Prof. Anselmo C. de Paiva - DEINF-UFMA
34
Prof. Anselmo C. de Paiva - DEINF-UFMA
35
Prof. Anselmo C. de Paiva - DEINF-UFMA
36
use a geometria “texto” no nodo “shape”
4 - Formas de Texto use a geometria “texto” no nodo “shape”
37
Nodo Texto Text { } string [ ] #exposedField MFString
length [ ] #exposedField MFFloat maxExtent 0.0 #exposedField SFFloat fontStyle NULL #exposedField SFNode } Prof. Anselmo C. de Paiva - DEINF-UFMA
38
Prof. Anselmo C. de Paiva - DEINF-UFMA
39
Use o campo translation do nodo Transform agrupado a uma forma
5 - Posicionando Formas Use o campo translation do nodo Transform agrupado a uma forma
40
Nodo Transform Transform { children [ ] #exposedField MFNode
translation #exposedField SFVec3f rotation #exposedField SFRotation scale #exposedField SFVec3f scaleOrientation #exposedField SFRotation bboxCenter #field SFVec3f bboxSize #field SFVec3f center #exposedField SFVec3f addChildern #eventIn MFNode removeChildren #eventIn MFNode Prof. Anselmo C. de Paiva - DEINF-UFMA
41
Transform { translation 0.0 2.0 0.0 children [ Shape {
#VRML V2.0 utf8 Transform { translation children [ Shape { appearance Appearance { material Material { } } geometry Cylinder { } } ] Prof. Anselmo C. de Paiva - DEINF-UFMA
42
Prof. Anselmo C. de Paiva - DEINF-UFMA
43
Prof. Anselmo C. de Paiva - DEINF-UFMA
44
campos “rotation” e “center”do nodo “Transform”
6 - Rotacionando Formas campos “rotation” e “center”do nodo “Transform”
45
Eixos de Rotação Prof. Anselmo C. de Paiva - DEINF-UFMA
46
Prof. Anselmo C. de Paiva - DEINF-UFMA
47
Valores para Eixos de Rotação Comuns
Y: Z: Prof. Anselmo C. de Paiva - DEINF-UFMA
48
Ângulos de Rotação Radianos 1 grau = 0.0175 radianos
360 graus = 6.3 radianos x graus = x* radianos Prof. Anselmo C. de Paiva - DEINF-UFMA
49
Prof. Anselmo C. de Paiva - DEINF-UFMA
50
Prof. Anselmo C. de Paiva - DEINF-UFMA
51
Prof. Anselmo C. de Paiva - DEINF-UFMA
52
Prof. Anselmo C. de Paiva - DEINF-UFMA
53
Prof. Anselmo C. de Paiva - DEINF-UFMA
54
7 - Escala
55
Prof. Anselmo C. de Paiva - DEINF-UFMA
56
Sintaxe Prof. Anselmo C. de Paiva - DEINF-UFMA
57
Prof. Anselmo C. de Paiva - DEINF-UFMA
58
Prof. Anselmo C. de Paiva - DEINF-UFMA
59
TimeSensor, PositionInterpolator, OrientationInterpolator
7 - Animação TimeSensor, PositionInterpolator, OrientationInterpolator
60
Animação requer dois elementos
Um relógio: Nodo TimeSensor Uma descrição de como as coisas mudam ao longo do tempo: Nodos PositionInterpolation e OrientationInterpolation Prof. Anselmo C. de Paiva - DEINF-UFMA
61
Animação Pode-se ligar a saída de um TimeSensor na entrada de um PositionInterpolation ou OrientationInterpolation e a saída destes nodos a um nodo Transform. Prof. Anselmo C. de Paiva - DEINF-UFMA
62
Relógio O campo eventOut time do TimeSensor indica a hora corrente.
Um TimeSensor pode ser iniciado ou parado pela definição de valores absolutos para startTime e stopTime Prof. Anselmo C. de Paiva - DEINF-UFMA
63
Tempo Fracionário Inicia em 0.0 e vai até 1.0
fraction_changed eventOut indica mudanças no tempo fracionário cycleInterval define a duração entre 0.0 e 1.0 campo loop = TRUE -> repete o ciclo Prof. Anselmo C. de Paiva - DEINF-UFMA
64
Posições-chave em tempo fracionário
Deve-se prover um valor de posição e/ou orientação para cada um dos instantes de tempo entre 0 e 1. Há infinitos instantes entre 0 e 1. Pode-se definir apenas algumas posições-chave e o interpolador calcula as demais. Prof. Anselmo C. de Paiva - DEINF-UFMA
65
Interpolação linear Prof. Anselmo C. de Paiva - DEINF-UFMA
66
Interpolação com múltiplas chaves
Prof. Anselmo C. de Paiva - DEINF-UFMA
67
Sintaxe: Nodo Time Prof. Anselmo C. de Paiva - DEINF-UFMA
68
Nodo PositionInterpolator
Prof. Anselmo C. de Paiva - DEINF-UFMA
69
Nodo OrientationInterpolator
Prof. Anselmo C. de Paiva - DEINF-UFMA
70
Prof. Anselmo C. de Paiva - DEINF-UFMA
71
Prof. Anselmo C. de Paiva - DEINF-UFMA
72
Animação de tamanho pode ser feita usando um nodo PositionInterpolator ligado com o eventIn set_scale de um objeto. Prof. Anselmo C. de Paiva - DEINF-UFMA
73
10 - Aparência de Materiais
Nodos Appearance, Material, ColorInterpolator e ScalarInterpolator
74
Prof. Anselmo C. de Paiva - DEINF-UFMA
75
Sombreamento Prof. Anselmo C. de Paiva - DEINF-UFMA
76
Prof. Anselmo C. de Paiva - DEINF-UFMA
77
Nodo Shape Prof. Anselmo C. de Paiva - DEINF-UFMA
78
Nodo Appearance Prof. Anselmo C. de Paiva - DEINF-UFMA
79
Nodo Material Prof. Anselmo C. de Paiva - DEINF-UFMA
80
Exemplo Group { children [ Shape {
appearance Appearance { material Material { diffuseColor } } geometry Sphere { } }, appearance Appearance { material Material { diffuseColor } } geometry Cylinder { radius 2.0 height 0.05 } appearance Appearance { material Material { diffuseColor } } geometry Cylinder { radius 0.15 height 5.0 } } ] Prof. Anselmo C. de Paiva - DEINF-UFMA
81
Nodo ColorInterpolator
Prof. Anselmo C. de Paiva - DEINF-UFMA
82
Nodo ScalarInterpolator
Prof. Anselmo C. de Paiva - DEINF-UFMA
83
11 - Grupos
84
Nodo Group Prof. Anselmo C. de Paiva - DEINF-UFMA
85
Nodo Switch Prof. Anselmo C. de Paiva - DEINF-UFMA
86
Nodo Billboard Prof. Anselmo C. de Paiva - DEINF-UFMA
87
12 - Importação de Arquivos
88
Nodo Inline Prof. Anselmo C. de Paiva - DEINF-UFMA
89
Prof. Anselmo C. de Paiva - DEINF-UFMA
90
13 - Construindo formas com pontos linhas e faces
PointSet, IndexedLineSet, IndexedfaceSet, CoordinateInterpolator
91
Prof. Anselmo C. de Paiva - DEINF-UFMA
92
Prof. Anselmo C. de Paiva - DEINF-UFMA
93
Prof. Anselmo C. de Paiva - DEINF-UFMA
94
0, 1, 2, 3, 0, -1, 4, 5, 6, 7, 4, -1, 0, 4, -1, 1, 5, -1, 2, 6, -1, 3, 7 Prof. Anselmo C. de Paiva - DEINF-UFMA
95
Prof. Anselmo C. de Paiva - DEINF-UFMA
96
0, 1, 2, 3, -1, 7, 6, 5, 4, -1, 0, 4, 5, 1, -1, 1, 5, 6, 2, -1, 2, 6, 7, 3, -1, 3, 7, 4, 0 Prof. Anselmo C. de Paiva - DEINF-UFMA
97
Prof. Anselmo C. de Paiva - DEINF-UFMA
98
Bordas suaves Prof. Anselmo C. de Paiva - DEINF-UFMA
99
Prof. Anselmo C. de Paiva - DEINF-UFMA
100
Prof. Anselmo C. de Paiva - DEINF-UFMA
101
Prof. Anselmo C. de Paiva - DEINF-UFMA
102
Prof. Anselmo C. de Paiva - DEINF-UFMA
103
Prof. Anselmo C. de Paiva - DEINF-UFMA
104
Prof. Anselmo C. de Paiva - DEINF-UFMA
105
Prof. Anselmo C. de Paiva - DEINF-UFMA
106
Prof. Anselmo C. de Paiva - DEINF-UFMA
107
14 - Superfícies ElevationGrid
108
Prof. Anselmo C. de Paiva - DEINF-UFMA
109
Prof. Anselmo C. de Paiva - DEINF-UFMA
110
Prof. Anselmo C. de Paiva - DEINF-UFMA
111
Prof. Anselmo C. de Paiva - DEINF-UFMA
112
15 - Toróides Extrusion
113
Características-chave
Perfil (cross section) Caminho (spine) Escala Orientação Prof. Anselmo C. de Paiva - DEINF-UFMA
114
Prof. Anselmo C. de Paiva - DEINF-UFMA
115
Prof. Anselmo C. de Paiva - DEINF-UFMA
116
Prof. Anselmo C. de Paiva - DEINF-UFMA
117
Prof. Anselmo C. de Paiva - DEINF-UFMA
118
Prof. Anselmo C. de Paiva - DEINF-UFMA
119
17 - Texturas
120
Prof. Anselmo C. de Paiva - DEINF-UFMA
121
Prof. Anselmo C. de Paiva - DEINF-UFMA
122
Prof. Anselmo C. de Paiva - DEINF-UFMA
123
Prof. Anselmo C. de Paiva - DEINF-UFMA
124
Prof. Anselmo C. de Paiva - DEINF-UFMA
125
Prof. Anselmo C. de Paiva - DEINF-UFMA
126
Prof. Anselmo C. de Paiva - DEINF-UFMA
127
Prof. Anselmo C. de Paiva - DEINF-UFMA
128
Prof. Anselmo C. de Paiva - DEINF-UFMA
129
23 - Neblina Nodo Fog
130
Atributos da neblina Cor (default: branco) Espessura
Tipo: Linear ou Exponential Prof. Anselmo C. de Paiva - DEINF-UFMA
131
Modo de criação de neblina
Não simula partículas em suspensão Quanto mais longe do usuário, mais a cor dos objetos se aproxima da cor da neblina Prof. Anselmo C. de Paiva - DEINF-UFMA
132
Background Não é afetado pela neblina
Prof. Anselmo C. de Paiva - DEINF-UFMA
133
Prof. Anselmo C. de Paiva - DEINF-UFMA
134
Prof. Anselmo C. de Paiva - DEINF-UFMA
135
24 - Sons
136
Formatos de Som Wave - Representação real do som
Midi - Instruções para tocar o som em um instrumento digital Midi é muito mais compacto do que Wave Prof. Anselmo C. de Paiva - DEINF-UFMA
137
Prof. Anselmo C. de Paiva - DEINF-UFMA
138
Prof. Anselmo C. de Paiva - DEINF-UFMA
139
Prof. Anselmo C. de Paiva - DEINF-UFMA
140
Prof. Anselmo C. de Paiva - DEINF-UFMA
141
25 - Controlando o Nível de Detalhe
Nodo LOD
142
Prof. Anselmo C. de Paiva - DEINF-UFMA
143
Prof. Anselmo C. de Paiva - DEINF-UFMA
144
Prof. Anselmo C. de Paiva - DEINF-UFMA
145
26 - Controlando o Ponto de Vista
Nodos Viewpoint e NavigationInfo
146
Viewpoint Como qualquer objeto, o ponto de vista pode ser movido sendo colocado como “child” de um nodo “Transform”. Prof. Anselmo C. de Paiva - DEINF-UFMA
147
Campo de Visão Prof. Anselmo C. de Paiva - DEINF-UFMA
148
Viewpoint “jump” e “no-jump”
Jump - quando o ponto de vista é mudado, a visão do usuário também muda No-Jump - não há mudança da visão com a troca do viewpoint, mas apenas quando esse se movimentar depois da troca. Exemplo: elevador Prof. Anselmo C. de Paiva - DEINF-UFMA
149
Avatar Representação do usuário no mundo virtual Características:
aparência / dimensões como se move Prof. Anselmo C. de Paiva - DEINF-UFMA
150
Modos de movimentação Walk Fly Examine None
Prof. Anselmo C. de Paiva - DEINF-UFMA
151
Dimensões de um avatar width - quão perto um avatar pode chegar de um objeto antes de colidir com ele height - a que distância do chão o avatar fica quando caminha sobre ele step height - especifica a altura máxima de um obstáculo que um avatar pode passar quando estiver caminhando Prof. Anselmo C. de Paiva - DEINF-UFMA
152
Prof. Anselmo C. de Paiva - DEINF-UFMA
153
Prof. Anselmo C. de Paiva - DEINF-UFMA
154
Prof. Anselmo C. de Paiva - DEINF-UFMA
155
VisibilitySensor, ProximitySensor, Collision
27 - Sensores de Usuário VisibilitySensor, ProximitySensor, Collision
156
Prof. Anselmo C. de Paiva - DEINF-UFMA
157
Prof. Anselmo C. de Paiva - DEINF-UFMA
158
Prof. Anselmo C. de Paiva - DEINF-UFMA
159
Prof. Anselmo C. de Paiva - DEINF-UFMA
160
28 - Portais Anchor
161
Prof. Anselmo C. de Paiva - DEINF-UFMA
162
Seleção de pontos de vista: #
Prof. Anselmo C. de Paiva - DEINF-UFMA
163
29 - Informações sobre o mundo
WorldInfo
164
Prof. Anselmo C. de Paiva - DEINF-UFMA
165
30 - Scripts
166
Nodo Script tem seus próprios campos, eventos de entrada e de saída, conforme definido pelo programador Prof. Anselmo C. de Paiva - DEINF-UFMA
167
Campos Script { } ... field tipoDoCampo nomeDoCampo valorInicial
Prof. Anselmo C. de Paiva - DEINF-UFMA
168
Exemplos Prof. Anselmo C. de Paiva - DEINF-UFMA
169
Mais Exemplos Prof. Anselmo C. de Paiva - DEINF-UFMA
170
Prof. Anselmo C. de Paiva - DEINF-UFMA
171
Evento de Entrada Script { } ... eventIn tipoDoEvento nomeDoEvento
Prof. Anselmo C. de Paiva - DEINF-UFMA
172
Prof. Anselmo C. de Paiva - DEINF-UFMA
173
Evento de Saída Script { } ... eventOut tipoDoEvento nomeDoEvento
Prof. Anselmo C. de Paiva - DEINF-UFMA
174
Usando Campos e Eventos em uma Definição de Interface
Script { field SFFloat gravity -9.8 field SFVec3f velocity field SFVec3f position eventIn SFVec3f set_position eventOut SFVec3f position_changed eventIn SFFloat set_fraction } Prof. Anselmo C. de Paiva - DEINF-UFMA
175
Para definir um exposed field
Defina o field (ex. position) Defina o eventIn (ex. set_position) Defina o eventOut (ex. position_changed) Prof. Anselmo C. de Paiva - DEINF-UFMA
176
Scripts podem ser escritos em Java ou JavaScript
url “myscript.js” field ... eventIn ... eventOut ... } Prof. Anselmo C. de Paiva - DEINF-UFMA
177
Incluindo scripts no nodo
url “javascript: function set_position (pos,time) { position = pos ; } “ field ... eventIn ... eventOut ... Prof. Anselmo C. de Paiva - DEINF-UFMA
178
Controle de execução tipicamente um script executa sempre que um eventIn recebe um valor, computa alguma coisa e coloca o resultado em um ou mais eventOuts Prof. Anselmo C. de Paiva - DEINF-UFMA
179
mustEvaluate se a avaliação do script não pode ser postergada, então o campo mustEvaluate deve ser true. Prof. Anselmo C. de Paiva - DEINF-UFMA
180
directOutput quando um script precisa manipular mais do que suas variáveis de entrada, deve-se deixar directOutput true. neste caso, perde-se performance, mas é possível manipular a estrutura do mundo vrml Prof. Anselmo C. de Paiva - DEINF-UFMA
181
API - Application Programming Interface
Características: acesso aos campos da interface e eventOut’s do nodo script conversão entre os tipos VRML e os da linguagem habilidade de iniciar e terminar um script e responder a eventos acesso ao browser para mudar a estrutura de um mundo ou carregar um novo mundo Prof. Anselmo C. de Paiva - DEINF-UFMA
182
Acessando Campos e eventOut’s
Em Java a API fornece classes para acessar os campos e eventOut’s: getField e getEventOut Em JavaScript a API automaticamente cria uma interface para cada campo ou eventOut. Prof. Anselmo C. de Paiva - DEINF-UFMA
183
Eventos Eventos recebidos tem dois componentes:
Event value - um valor, como uma coordenada 3d. Event time stamp - o valor de tempo absoluto no qual o evento foi gerado. Prof. Anselmo C. de Paiva - DEINF-UFMA
184
Conversão entre tipos Em Java a API fornece um conjunto de classes para os tipos VRML Em javaScript a API automaticamente converte os tipos VRML para tipos JavaScript Prof. Anselmo C. de Paiva - DEINF-UFMA
185
Prof. Anselmo C. de Paiva - DEINF-UFMA
186
Criando um Interpolador
DEF Mover Script { url “move1.js” eventIn SFFloat set_fraction eventOut SFVec3f value_changed } Prof. Anselmo C. de Paiva - DEINF-UFMA
187
Rotina para mover em linha
function set_fraction(fraction,eventTime) { value_changed[0] = fraction; value_changed[1] = 0.0; value_changed[2] = 0.0; } Prof. Anselmo C. de Paiva - DEINF-UFMA
188
Rotina para interpolador senoidal
function set_fraction(fraction,eventTime) { value_changed[0] = fraction; value_changed[1] = Math.sin(fraction*6.28); value_changed[2] = 0.0; } Prof. Anselmo C. de Paiva - DEINF-UFMA
189
Rotina para um interpolador helicoidal
function set_fraction(fraction,eventTime) { value_changed[0] = fraction; value_changed[1] = Math.sin(fraction*6.28); value_changed[2] = Math.cos(fraction*6.28); } Prof. Anselmo C. de Paiva - DEINF-UFMA
190
Interpolador helicoidal parametrizado
Prof. Anselmo C. de Paiva - DEINF-UFMA
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.