1 universidade do vale do paraíba colégio técnico antônio teixeira fernandes disciplina...
TRANSCRIPT
1
Universidade do Vale do ParaíbaColégio Técnico Antônio Teixeira FernandesDisciplina Introdução a Computação Gráfica
(ICG)Material III-BimestreTransformação Geométrica em 3D.
Temporizadores e Rotas. Definições para reaproveitamento de código
Reaproveitamento de Cenas.Reproduzindo Filmes em Cenas. Reproduzindo sons em Cenas. Inserindo texto em uma Cena.
Sensor de Toque.Sensor de Proximidade.
Site : http://www1.univap.br/~wagner
Prof. ResponsávelWagner Santos C. de Jesus
2
Transformações Geométricas em 3D
Chamamos de transformação o ato de levar um objeto de um ponto para outro, num sistema de referências. As transformações mais usadas são :
• Translação• Rotação • Escala.
3
Criando uma TransformaçãoTransform
Transform {} – Cria a transformaçãochildren [] – Estrutura filha para a
transformação.
4
Exemplo :
Transform
{
children
[
Shape { geometry Sphere { } }
]
}
5
#VRML V2.0 utf8...Transform{ translation 3 0 3 children [ Shape { .... geometry Sphere { } } ]}
Transform{ scale .5 .5 .5
rotation 0 1 0 .7535 children [ Shape { ...... geometry Box { } } ]}
Transform{ translation -3 0 -3 rotation 1 0 0 1.57 children [ Shape { ..... geometry Cone { } } ]}
6
Escala
Determina o tamanho do objeto.
Sintaxe : (-x a x), (-y a y), (-z a z)
scale x y z
x
y
z
7
Exemplo de EscalaTransform { scale .3 .3 .3 children[
Shape { appearance Appearance {
material Material {
diffuseColor 0 0.59 0 }
} geometry Box { }
}]}
x=.3, y= .3, z= .3
8
Translação
Determina a movimentação do objeto.
Sintaxe : (-x a x), (-y a y), (-z a z)
translation x y z
x
y
z
9
Exemplo de TranslaçãoTransform { translation 3 0 0 children[
Shape { appearance Appearance {
material Material {
diffuseColor 0 0.59 0 }
} geometry Box { }
}]}
+-
+
-
x=3,y=0,z=0
10
Rotação
Determina a rotação para um objeto.
Sintaxe : ( 0 – 1) – valores para x y z
rotation x y z ângulo
x
z
y
11
Exemplo de RotaçãoTransform { rotation 0 0 1 0.78 children[
Shape { appearance Appearance {
material Material {
diffuseColor 0 0.59 0 }
} geometry Box { }
}]}
x
z
y
12
center e scaleOrientation
center – Define o centro da escala de transformação.
scaleOrientation – Define o eixo de rotação para escala de operação.
13
Reaproveitamento de cenas
Inline {} – permite trazer parte de uma cena dentro do ambiente criado em uma outra cena.
Sintaxe:
Inline { url [ “Caminho” ] }
14
Diagrama de reaproveitamento de cenas
Cena
Principal
Sub-Cena
Chamada por
Inline{}
15
Exemplo :
Inline { url [ " Cubo.wrl " ] }
Transform { rotation 1 0 0 0.785398163397448 translation 0 0 0 children[ Inline { url [ "cubopos.wrl" ] } ] }
ou
16
Definições de figuras
DEF : Determina um nome para a figura que irá compor a cena.
Exemplo :
DEF FIGURA Transform { translation 3 0 0 children[ Shape { appearance Appearance { material Material { diffuseColor 1 0 0 } } geometry Cylinder { } }]}
17
Reproduzindo filmes em cenasMovieTexture { } – atribui a um objeto um
filme que será dado como textura em movimento.
Sintaxe :texture MovieTexture
{ url ["mpg ou avi"] loop booleano stopTime -n }
18
Propriedade Valor
url Caminho do arquivo de imagens
loop Determina se o fim vai estar parado ou em movimento (true/false).
stopTime Um valor negativo que determina o tempo de execução da animação do filme.
19
Exemplo MoviTexture
Shape { appearance Appearance { texture MovieTexture { url ["C:\clock.avi"] loop TRUE stopTime -1 } } geometry Box { } }
20
Criando sons em uma cena sound
maxBack maxFrontminBack
minFront
location
direction
-20 db
0 db
Elipsóide Mínimo
Elipsóide Máximo
direção
Atenuação
21
AudioCLip : aponta para o arquivo de sons que será reproduzido.
Sound
AudioCLip
Arquivo de Sons
(wav,mp3..)
22
Propriedades da instrução sound.
Frontal Máximo(MaxFont): determina o alcance do som.Frontal mínimo(MinFront): determina a alcance mais interno para o som.Maximo do fundo(MaxBack): determina valores relativos, próximos da faixa de localização de emissão do som.Mínimo do fundo (MinBack): determina valores relativos internos a faixa de localização de emissão do som.
Localização (location): Determina o local, em relação aos eixos x, y e z, de propagação do som. Direção (direction): Determina em que direção o som irá se propagar em relação aos eixos.
23
Sintaxe: AudioCLip
source AudioClip
{
loop boolean
url [ caminho url ]
}
24
Exemplo : sound
Sound { maxFront 50 minBack 50 source AudioClip { loop TRUE url ["Beethoven.mp3"] } }
25
Textos em cenas
Shape geometry Text
String[]
FontStyle
26
Inserindo texto na cena geometry Text
geometry Text { } – permite escrever um texto que será exibido na cena em formato 3D. Propriedade string [],
Exemplo :
geometry Text { string [“texto a ser exibido”] }
27
Exemplo Prático:
Shape {
geometry Text { string[“Informática”] }
}
28
Configurando Fonte : FontStyle PLAIN (letra padrão), BOLD (negrito), ITALIC (itálico), BOLD ITALIC (ambos).
size - O campo tamanho: irá definir o tamanho das letras. Poderão ser indicados valores entre (Zero e UM), ou um número de zero a infinito. Se um número negativo for colocado o texto será invertido.spacing - servirá para definir o espaçamento entre duas linhas de texto. Também pode-se definir um número negativo, fazendo com que o texto que estiver abaixo mude para posição oposta.
horizontal - o campo horizontal: irá definir se o texto será escrito da esquerda para a direita. Se a propriedade for mudada para FALSE o texto irá ser escrito na vertical.
topToBottom - o campo de cima para baixo: irá definir com que o texto seja escrito na seqüência natural. Caso a propriedade seja mudada para FALSE, o texto que deveria estar embaixo será enviado para cima, ou seja, haverá uma inversão da ordem na qual ele foi escrito.
justify - o campo justificar: servirá para definir o alinhamento entre as linhas do texto. As opções são: BEGIN - alinha o texto da esquerda para direita (alinhamento padrão); FIRST - faz o alinhamento pela primeira palavra do texto; MIDDLE - centraliza o texto com base na palavra que tiver o maior número de caracteres; END - ajusta o texto usando como referencia o último caractere da primeira palavra.
leftToRighto o campo da esquerda para direita: irá permitir com que o texto seja escrito na forma convencional, ou de maneira invertida, quando a propriedade estiver modificada para FALSE.
family o campo família: irá determinar o tipo de letra que deverá ser usada no texto, sendo o permitidas somente a indicação de um dos três tipos: SERIF, SANS e TYPEWRITER.
29
Sintaxe : FontStyle
fontStyle FontStyle {
<Estilos de Fontes>
}
30
Exemplo :
fontStyle FontStyle { family "SERIF" style "PLAIN" size 0.31 spacing 0.23 justify "BEGIN" horizontal TRUE leftToRight TRUE topToBottom TRUE }
31
Temporizador
Para se determinar o tempo de execução para um movimento de um elemento contido em uma cena se faz necessário o recurso do temporizador. (TimeSensor)
32
Sintaxe :
DEF TIMER TimeSensor {} – cria um temporizador com recurso de liga e desliga e o intervalo de tempo para executar animações.
33
Propriedade do TimeSensor
Propriedade Valor
cycleInterval Valor correspondente a tempo em segundos 0,
loop Repetir ou não a freqüência da animação (true/false).
34
Exemplo : TimeSensor
DEF TIMER TimeSensor
{
cycleInterval 1
loop FALSE
}
35
Rotas
Rotas são caminhos traçados para que um objeto da cena percorra um deslocamento em x,y ou z. realizando movimentos de rotação ou translação.
36
Movimento de figuras
Transformação
Figura (Shape)
Quadro (Orientação/Posição)
Eixo de Movimentação
Temporizador]
37
Tipos de rotas
OrientationInterpolator – define caminho de rotação para os eixos x,y e z.
PositionInterpolator – define rota de translação para os eixos x,y e z.
38
Propriedades key e keyValue
Key[] – determina a divisão dos quadros para serem animados. (0 – 1)
keyValue[] – determina os valores de deslocamento nos eixos x,y e z. (- a )
39
TimerSensor
Interpolador
fraction_changed = .415
0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1
0 cycleIntervaltick
key
keyValues
0 1
V1 V2 V3 . . . . . . . . . . . . . . . . Vn
40
Key – Valores de quadros
Key[ 0 0.05 0.1 0.15 0.2 0.25 0.3.....n]
keyValue – Valores dos eixos
keyValue [ 0 0 0, 0 0 0.2,
0 0 0.4, 0 0 0.6, 0 0 0.8,
............ ]
41
Exemplo (rotação): OrientationInterpolator
DEF ROTOR OrientationInterpolator {
Key[ 0 0.05 0.1 0.15 0.2 0.25 0.3.....]keyValue [
1 0 0 0, 1 0 0 3.14,
1 0 0 6.28, 1 0 0 9.42,
1 0 0 12.56, 1 0 0 15.7, ] }
42
Exemplo (Translação):PositionInterpolator
DEF ROTOR PositionInterpolator {
Key[ 0 0.05 0.1 0.15 0.2 0.25 0.3.....]keyValue [ 0 0 0,
0 0 0.2, 0 0 0.4,
0 0 0.6, 0 0 0.8, ]}
43
Executando Rotas
TimeSensor OrientationInterpolatorRotação
PositionInterpolator
Translação
ROUTE
Interpolador
44
ROUTE (Executando Rotas)
Determinar que tipo de figuras será executada mediante as rotas que foram criadas e qual temporizador será usado para realizar a translação ou rotação.
45
Associando ROUTE ao TimeSensor
Propriedades
fraction_changed – Evento que é executado na troca de valores do temporizador.
value_changed – Substitui os valores no ROUTER para realizar o deslocamento.
set_fraction – Captura valores correspondentes aos quadros que deverão ser movimentados.
rotation – Captura elementos de rotação dos eixos.
translation – Captura os elemento para translação dos eixos
46
Sintaxe : ROUTE TO
ROUTE <objeto>.propriedade TO <objeto_router>.propriedade
47
Exemplo prático (Rotação)
ROUTE TIMER.fraction_changed TO ROTOR.set_fraction
ROUTE ROTOR.value_changed TO FIGURA.rotation
Exemplo prático (Translação)
ROUTE TIMER.fraction_changed TO ROTOR.set_fraction
ROUTE ROTOR.value_changed TO FIGURA.translation
48
Sensor de Toque : TouchSensor{}
Determina a sensibilidade em um determinado objeto ao passar ou clicar com mouse.
TouchSensor
TimeSensor
Interpolador
Objeto
49
Exemplo Associação do sensor com o objeto
DEF FIGURA Transform { children[ DEF TOQUE TouchSensor{} Shape { appearance Appearance { material Material { diffuseColor 0 0.7 0 } } geometry Cone { side TRUE bottom TRUE } }]}
50
Observação sobre TimeSensor
DEF TIMER TimeSensor
{
cycleInterval 10
loop FALSE
}
É necessário que a propriedade loop seja FALSE, para que o sensor de toque funcione.
51
Propriedade ROUTE para TouchSensor{}
touchTime – Verifica se houve uma mudança no temporizador.
isOver – Coloca em loop por intermédio de um simples movimento do mouse.
52
Exemplo prático
ROUTE TOQUE.touchTime TO TIMER.startTime
ROUTE TOQUE.isOver TO TIMER.loop
ROUTE TIMER.fraction_changed TO ROTOR.set_fraction
ROUTE ROTOR.value_changed TO FIGURA.translation
53
Sensor de Aproximação : ProximitySensor {}
Determina a sensibilidade em um determinado objeto havendo aproximação no mesmo.
ProximitySensor
TimeSensor
Interpolador
Objeto
54
Exemplo : ProximitySensor
DEF ABREFECHA ProximitySensor
{
center 0 0 0
size 5 2 8
}
55
Exemplo ROUTER
ROUTE ABREFECHA.enterTime TO TIMER.startTime
ROUTE ABREFECHA.exitTime TO TIMER.startTime