630 likes | 758 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 IV-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 IV-Bimestre Agrupamentos de Figuras, Criação de protótipos. Ajuste de objetos 2D em Cenas 3D, Reconhecendo Colisões, Grades de elevação,Construindo geometria de faces,Extrusão, Criação de ancoras,Usandos JavaScript Vrml. Site : http://www1.univap.br/~wagner Prof. Responsável Wagner Santos C. de Jesus
Agrupamento : Group Permite realizar um agrupamento quando existe figura que possuem as mesmas características para formar uma cena.
[ Agrupamento de figuras. Geometria Cylinder Cone Group Box Sphere Formas
Estrutura Básica : Group Group { children [ ....... // Figuras e formas ] }
Aproveitando Características da cena { Cone1 Cone2 Cone2 Cone3 Cone4 .........N USE Aplica Característica Cone
USE – Realiza um clone da figura Sintaxe : Transform { USE Nome-DEF }
Exemplo : USE DEF FIGURA Transform { translation -3 0 0 children[ Shape { geometry Cone {} }] } Transform { translation 3 0 0 children[ USE FIGURA ]}
Exemplo : Group/USE Group { children [ Shape { appearance DEF teste Appearance { material Material { diffuseColor 0.38 0 0 transparency 0 } } geometry Cylinder { } }, Transform { translation -3 0 0 children[ Shape { appearance USE teste geometry Sphere { radius 1 } }, ]} ] }
Criando protótipos Os protótipos são usados em computação gráfica para realizar reaproveitamento de parâmetros ou figuras contidos em uma cena. Protótipo Figura Figura Original
PROTO Cria uma estrutura do tipo protótipo para uma figura ou forma geométrica. Sintaxe : PROTO Nome-Estrutura [ <def-campos>] { // Forma da Figura }
Exemplo de protótipo Transform { children[ CILINDRO { CilindroColor 1 0 0 CilindroRadius 1.5 CilindroHeight 4 } ] } PROTO CILINDRO [ field SFColor CilindroColor 1 1 1 field SFFloat CilindroRadius 1 field SFFloat CilindroHeight 2 ] { Shape { appearance Appearance { material Material { diffuseColor IS CilindroColor shininess .5 emissiveColor 0.16 0.16 0.16 } } geometry Cylinder { radius IS CilindroRadius height IS CilindroHeight side TRUE # Default bottom TRUE # Default } } }
Colisões: Collision Colisão em computação gráfica vem a ser o procedimento de simular quando um objeto se encontra com um observador em VRML pode se caracterizar uma colisão; como uma figura que se movimenta em direção ao observador.
Esquema de colisão Anel de Colisão Aproximação do objeto
Sintaxe : Collision DEF nome Collision { children [ ...... Formas ] }
Exemplo : Colisão DEF col Collision { children [ Sound { source DEF ac AudioClip { loop TRUE url "c:\vrml2\TestSnd.wav" } } Shape { appearance Appearance { material Material {}} geometry Sphere {} } ] } ROUTE col.collideTime TO ac.set_startTime }
Grades de elevação: ElevationGrid Permite criar uma matriz de pontos onde a elevação desses pontos podem simular objetos como montanhas, vales, folhas de papel amassado etc.
Estrutura da grade. Figura da Cena Shape Aparência geometry ElevationGrid height(Pontos)
Dimensões : ElevationGrid Ângulo de prega Altura Dimensão - z Espaço - z Dimensão - x Espaço - x
Sintaxe : ElevationGrid Shape { appearance Appearance { material Material {......................} } geometry ElevationGrid { xDimension x zDimension z xSpacing sx zSpacing sz creaseAngle n solid Boolean height [ <Definição da matriz> ] } }
Exemplo ElevationGrid Shape { appearance Appearance { material Material { diffuseColor 0.6 0.6 0.2 } } geometry ElevationGrid { xDimension 4 zDimension 4 xSpacing 1.0 zSpacing 1.0 creaseAngle 1.57 solid FALSE height [ 0 0 0 0 0 0 0 0 0 0.6 0 0 0 0 0 0 ] } }
Âncora : Anchor Realiza a mudança de cena por intermédio da interação com o usuário. Bastando que o usuário selecione o objeto ancorado para que seja efetuada a mudança. Anchor children Shape Aparência
Sintaxe : Anchor Anchor { url String children [Shape { ....... }] } url : Determina o caminho do arquivo com a cena que será executado.
Exemplo : Anchor Anchor { url "c:/caminho/cone.wrl" children [ Shape { geometry Box {} } ] }
Geometria de faces: IndexedFaceSet A geometria de faces é um conceito da computação gráfica (realidade virtual) que permite a construção de tipos genéricos de figuras. geometry IndexedFaceSet point (Pontos)
Estrutura da IndexedFaceSet Figura da Cena Shape Aparência Geometry IndexedFaceSet Coordinate point (Pontos)
Sintaxe : IndexedFaceSet Shape { geometry IndexedFaceSet { coord Coordinate { point [ Pontos ] } coordIndex [ Indices dos pontos ] } }
Exemplo : IndexedFaceSet Shape { geometry IndexedFaceSet { coord Coordinate { point [ 0 , 1 , 0 #0 11 , 14 , 0 #1 11 , 1 , 0 #2 ] } coordIndex [ 2,1,0,-1 0,1,2,-1 ] } }
Criando Textura nas facesTextureCoordinate 1, 1 0, 1 Objeto 0, 0 1, 0 Usar as coordenadas para uma única figura.
Criando Textura nas facesTextureCoordinate 3, 3 0, 3 Objeto 0, 0 3, 0 Usar as coordenadas para mais de uma figura.
Exemplo de TextureCoordinate texCoord TextureCoordinate { point [ 4 0, 4 4, 0 4, 0 0 ] }
Exemplo - 1: geometry IndexedFaceSet { coord Coordinate { point[ 0 1 0, 11 14 0, 11 1 0 ] } coordIndex [ 2, 1, 0, -1 0, 1, 2, -1 ] texCoord TextureCoordinate { point [ 4 0, 4 4, 0 4, 0 0 ] } } } #VRML V2.0 utf8 NavigationInfo { type "EXAMINE" } Shape { appearance Appearance { texture ImageTexture { url ["c:\Imagem.jpg"] } }
Extrusão (Extrusion) Vem a ser o conceito de explodir uma seqüências de pontos em figuras determinando formas tridimensionais. Normalmente uma extrusão deve ser feita baseada em equações matemáticas trabalhadas nos eixo (x,y e z).
Estrutura de uma Extrusão Shape geometry Extrusion crossSection[] spine[]
Sintaxe : Extrusion geometry Extrusion { beginCap Boolean endCap Boolean convex Boolean solid Boolean crossSection[ x0 y0 z0 x1 y1 z1...xn yn zn ] spine [ x0 y0 z0, x1 y1 z1, ...xn yn zn] }
Exemplo : Shape{ geometry Extrusion { spine [0 0 0, 0 5 0, 0 6 1, 0 6.5 2, 0 7 4, 0 7 4.3] } } spine y z Extrusão x
Exemplo : Retângulo => Cubo y Shape{ geometry Extrusion { beginCap TRUE endCap TRUE convex FALSE crossSection[ -11 , 11 11 , 11 11 , -11 -12 , -12 -11 , 11 ] spine [ 2 8 0, 2 -5 0, ] } } x spine z
Exemplo : Triângulo => Pirâmide Shape{ geometry Extrusion { crossSection[ 3 , 4 13 , 20 22 , 5 3 , 4 ] spine [ 3 8 0, 3 -6 0, ] } }
Usando JavaScript/VRML Para se determinar ações HTML e Javascript em uma cena possibilitando criar formulários com tela de acesso juntos permitindo maior interação de interface com usuário.
<Script src> </Script> Para se criar um código JavaScript que será que irá carregar um código VRML. Exemplo : <Script src = dll </Script>
xpsp3res.dll Código VRML xpsp3res.dll objectembed.js ObjectLoad() Visualização da Cena Formulário
Exemplo de Programas <html> <head> <script src="res://xpsp3res.dll/objectembed.js"> </script> </head> <body objectSource="file:///C:/vrml2/box.wrl" onload="ObjectLoad();" leftmargin=200 topmargin=10 scroll=no> <form id="objectDestination"></form></body></html>
Criação de Script para carregamento da Cena location.href Exemplo : <Script> location.href= "file:///c:/vrml2/js.html" </Script>
Action : permite realizar o acesso ao diretório onde se encontram os arquivos wrl que serão carregados Exemplo : <form Action=file:///c:/vrml2/js.html/> <Input type= submit value="Ok"> </Form>
Usando o marcador <href> Exemplo : <A Href=file:///c:/vrml2/js.html> Ok </A>
Criando Script F I G U R A S [ Ações Script
Script Realiza a interação entre uma cena e um script de JavaScript com campos, eventos e funções da linguagem VRML. Exemplo : Script { url [ "javascript: <Funções JavaScript> “] }
Tipos de dados VRML Em VRML como em outras linguagens de programação, existem os tipos dados para criação de variáveis ou propriedades esses inúmeros tipos servem para compatibilizar os parâmetros passados por uma figura para um modelo de variáveis que podem ser substituídas durante a execução do programa.
Exemplos de tipos campos field SFBool bottom TRUE field SFFloat height 2 # (0, ) field SFFloat radius 1 # (0, ) field SFBool side TRUE field SFBool top TRUE field SFInt32 usuário field SFNode (Criação de nós - figura) field SFString (Variável do tipo String)