550 likes | 659 Views
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
E N D
Universidade do Vale do ParaíbaColégio Técnico Antônio Teixeira FernandesDisciplina Introdução a Computação Gráfica (ICG) Material III-Bimestre Transformaçã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ável Wagner Santos C. de Jesus
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.
Criando uma TransformaçãoTransform Transform {} – Cria a transformação children [] – Estrutura filha para a transformação.
Exemplo : Transform { children [ Shape { geometry Sphere { } } ] }
#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 { } } ] }
Escala Determina o tamanho do objeto. Sintaxe : (-x a x), (-y a y), (-z a z) scale x y z y x z
Exemplo de Escala Transform { scale .3 .3 .3 children[ Shape { appearance Appearance { material Material { diffuseColor 0 0.59 0 } } geometry Box { } } ]} x=.3, y= .3, z= .3
Translação Determina a movimentação do objeto. Sintaxe : (-x a x), (-y a y), (-z a z) translation x y z y x z
Exemplo de Translação Transform { translation 3 0 0 children[ Shape { appearance Appearance { material Material { diffuseColor 0 0.59 0 } } geometry Box { } } ]} x=3,y=0,z=0 + - + -
Rotação Determina a rotação para um objeto. Sintaxe : ( 0 – 1) – valores para x y z rotation x y z ângulo y x z
Exemplo de Rotação Transform { rotation 0 0 1 0.78 children[ Shape { appearance Appearance { material Material { diffuseColor 0 0.59 0 } } geometry Box { } } ]} y x z
center e scaleOrientation center – Define o centro da escala de transformação. scaleOrientation – Define o eixo de rotação para escala de operação.
Reaproveitamento de cenas Inline {} – permite trazer parte de uma cena dentro do ambiente criado em uma outra cena. Sintaxe: Inline { url [ “Caminho” ] }
Diagrama de reaproveitamento de cenas Cena Principal Sub-Cena Chamada por Inline{}
Exemplo : Inline { url [ " Cubo.wrl " ] } ou Transform { rotation 1 0 0 0.785398163397448 translation 0 0 0 children[ Inline { url [ "cubopos.wrl" ] } ] }
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 { } } ]}
Reproduzindo filmes em cenas MovieTexture { } – atribui a um objeto um filme que será dado como textura em movimento. Sintaxe : texture MovieTexture { url ["mpg ou avi"] loop booleano stopTime -n }
Exemplo MoviTexture Shape { appearance Appearance { texture MovieTexture { url ["C:\clock.avi"] loop TRUE stopTime -1 } } geometry Box { } }
Criando sons em uma cena sound Elipsóide Mínimo Elipsóide Máximo 0 db -20 db direção Atenuação maxFront maxBack minBack minFront direction location
AudioCLip : aponta para o arquivo de sons que será reproduzido. Sound AudioCLip Arquivo de Sons (wav,mp3..)
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.
Sintaxe: AudioCLip source AudioClip { loop boolean url [ caminho url ] }
Exemplo : sound Sound { maxFront 50 minBack 50 source AudioClip { loop TRUE url ["Beethoven.mp3"] } }
Textos em cenas geometry Text Shape String[] FontStyle
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”] }
Exemplo Prático: Shape { geometry Text { string[“Informática”] } }
Configurando Fonte : FontStyle PLAIN (letra padrão), BOLD (negrito), ITALIC (itálico), BOLDITALIC (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.
Sintaxe : FontStyle fontStyle FontStyle { <Estilos de Fontes> }
Exemplo : fontStyle FontStyle { family "SERIF" style "PLAIN" size 0.31 spacing 0.23 justify "BEGIN" horizontal TRUE leftToRight TRUE topToBottom TRUE }
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)
Sintaxe : DEF TIMER TimeSensor {} – cria um temporizador com recurso de liga e desliga e o intervalo de tempo para executar animações.
Exemplo : TimeSensor DEF TIMER TimeSensor { cycleInterval 1 loop FALSE }
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.
Movimento de figuras Transformação Figura (Shape) ] Quadro (Orientação/Posição) Temporizador Eixo de Movimentação
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.
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 )
tick cycleInterval 0 Timer Sensor 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 fraction_changed = .415 0 1 key Interpolador V1 V2 V3 . . . . . . . . . . . . . . . . Vn keyValues
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, ............ ]
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, ] }
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, ]}
Executando Rotas Interpolador OrientationInterpolatorRotação TimeSensor PositionInterpolator Translação ROUTE
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.
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
Sintaxe : ROUTE TO ROUTE <objeto>.propriedade TO <objeto_router>.propriedade
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
Sensor de Toque : TouchSensor{} Determina a sensibilidade em um determinado objeto ao passar ou clicar com mouse. TouchSensor TimeSensor Objeto Interpolador
Exemplo Associação do sensor com o objeto DEF FIGURA Transform { children[ DEF TOQUETouchSensor{} Shape { appearance Appearance { material Material { diffuseColor 0 0.7 0 } } geometry Cone { side TRUE bottom TRUE } } ]}
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.