1 Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina...

Preview:

Citation preview

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