63
1 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 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

Material IV-Bimestre

  • Upload
    mahdis

  • View
    20

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Material IV-Bimestre

1

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ávelWagner Santos C. de Jesus

Page 2: Material IV-Bimestre

2

Agrupamento : Group

Permite realizar um agrupamento quando existe figura que possuem as mesmas características para formar uma cena.

Page 3: Material IV-Bimestre

3

Geometria

Agrupamento de figuras.

Group

Cylinder

Cone

Box

Sphere[ Formas

Page 4: Material IV-Bimestre

4

Estrutura Básica : Group

Group {

children [

....... // Figuras e formas

]

}

Page 5: Material IV-Bimestre

5

Aproveitando Características da cena

Cone USE {Cone1

Cone2

Cone2

Cone3

Cone4

.........N

Característica Aplica

Page 6: Material IV-Bimestre

6

USE – Realiza um clone da figura

Sintaxe :

Transform {

USE Nome-DEF

}

Page 7: Material IV-Bimestre

7

Exemplo : USE

DEF FIGURA Transform { translation -3 0 0 children[

Shape {

geometry Cone {}

}]

}

Transform { translation 3 0 0 children[

USE FIGURA

]}

Page 8: Material IV-Bimestre

8

Exemplo : Group/USEGroup { 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 } },

]}

] }

Page 9: Material IV-Bimestre

9

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

Page 10: Material IV-Bimestre

10

PROTO

Cria uma estrutura do tipo protótipo para uma figura ou forma geométrica.

Sintaxe :

PROTO Nome-Estrutura [ <def-campos>] { // Forma da Figura}

Page 11: Material IV-Bimestre

11

Exemplo de protótipoPROTO 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 } }}

Transform { children[

CILINDRO { CilindroColor 1 0 0

CilindroRadius 1.5

CilindroHeight 4 }

] }

Page 12: Material IV-Bimestre

12

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.

Page 13: Material IV-Bimestre

13

Esquema de colisão

Anel de Colisão

Aproximação do objeto

Page 14: Material IV-Bimestre

14

Sintaxe : Collision

DEF nome Collision {

children [

...... Formas

]

}

Page 15: Material IV-Bimestre

15

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

}

Page 16: Material IV-Bimestre

16

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.

Page 17: Material IV-Bimestre

17

Estrutura da grade.

Shape Aparência

geometry ElevationGrid

height(Pontos)

Figura da Cena

Page 18: Material IV-Bimestre

18

Dimensões : ElevationGrid

Dimensão - x

Dimensão - z

Espaço - x

Espaço

- z

Ângulo de prega

Altura

Page 19: Material IV-Bimestre

19

Campos DescriçãoxDimension Determina a dimensões das colunas de uma grade. Valor

entre 0 e

zDimension

Determina as dimensões das linhas de uma grade. Valor

entre 0 e

xSpacing Determina o espaçamento entre as colunas da grade.

Valor entre 0 e zSpacing Determina o espaçamento entre as linhas da grade. Valor

entre 0 e creaseAngle O ângulo de prega entre a elevação dos pontos. Valor

entre 0 e solid Determina se a figura irá aparecer com aparência vazada

ou não. Booleano true/false.

height Determina os pontos que formarão a matriz da grade.

Page 20: Material IV-Bimestre

20

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> ] } }

Page 21: Material IV-Bimestre

21

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 00 0 0 00 0.6 0 0 0 0 0 0

] } }

Page 22: Material IV-Bimestre

22

Â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.

Shape Aparência

Anchor

children

Page 23: Material IV-Bimestre

23

Sintaxe : Anchor

Anchor {

url String

children [Shape { ....... }]

}

url : Determina o caminho do arquivo com a cena que será executado.

Page 24: Material IV-Bimestre

24

Exemplo : Anchor

Anchor {

url "c:/caminho/cone.wrl"

children [ Shape { geometry Box {} } ]

}

Page 25: Material IV-Bimestre

25

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)

Page 26: Material IV-Bimestre

26

Estrutura da IndexedFaceSet

Shape Aparência

Geometry IndexedFaceSet

point (Pontos)

Figura da Cena

Coordinate

Page 27: Material IV-Bimestre

27

Sintaxe : IndexedFaceSetShape

{geometry IndexedFaceSet{coord Coordinate{ point [ Pontos ]}coordIndex [ Indices dos pontos ]

}}

Page 28: Material IV-Bimestre

28

Exemplo : IndexedFaceSet

Shape{

geometry IndexedFaceSet{coord Coordinate

{point[

0 , 1 , 0 #011 , 14 , 0 #111 , 1 , 0 #2

]}

coordIndex[

2,1,0,-10,1,2,-1

]

}}

Page 29: Material IV-Bimestre

29

Criando Textura nas facesTextureCoordinate

Objeto

0, 0 1, 0

0, 1 1, 1

Usar as coordenadas para uma única figura.

Page 30: Material IV-Bimestre

30

Criando Textura nas facesTextureCoordinate

Usar as coordenadas para mais de uma figura.

Objeto

0, 0 3, 0

0, 3 3, 3

Page 31: Material IV-Bimestre

31

Exemplo de TextureCoordinate

texCoord TextureCoordinate

{

point [ 4 0, 4 4, 0 4, 0 0 ]

}

Page 32: Material IV-Bimestre

32

Exemplo - 1:#VRML V2.0 utf8

NavigationInfo{ type "EXAMINE" }

Shape{ appearance Appearance { texture ImageTexture { url ["c:\Imagem.jpg"] } }

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 ] }

}}

Page 33: Material IV-Bimestre

33

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).

Page 34: Material IV-Bimestre

34

Estrutura de uma Extrusão

Shape geometry

Extrusion

crossSection[] spine[]

Page 35: Material IV-Bimestre

35

Tabela de propriedadesCampos Descrição

beginCap Fecha ou não uma forma de interior aberto na parte superior TRUE/FALSE

endCap Fecha ou não uma forma de interior aberto na parte inferior TRUE/FALSE

convex Cria convecção na vista da forma que esta sendo observada. TRUE/FALSE

solid Tira a transparência das paredes da figura. TRUE/FALSE

crossSection Determina os pontos que formarão a figura que sofrerá extrusão. Valores (x,y e z) (seção de cruzamento)

spine Espinha dorsal são valores que determinam a forma para a figura.

Page 36: Material IV-Bimestre

36

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]

}

Page 37: Material IV-Bimestre

37

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]

}

}

x

z

y

spine

Extrusão

Page 38: Material IV-Bimestre

38

Exemplo : Retângulo => Cubo Shape{

geometry Extrusion {

beginCap TRUE endCap TRUE convex FALSE crossSection[

-11 , 1111 , 1111 , -11-12 , -12-11 , 11 ]

spine [ 2 8 0,2 -5 0,

]}

}

x

y

z

spine

Page 39: Material IV-Bimestre

39

Exemplo : Triângulo => Pirâmide

Shape{ geometry Extrusion { crossSection[

3 , 413 , 2022 , 53 , 4

] spine [

3 8 0,3 -6 0,

]}

}

Page 40: Material IV-Bimestre

40

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.

Page 41: Material IV-Bimestre

41

<Script src> </Script>

Para se criar um código JavaScript que será que irá carregar um código VRML.

Exemplo :

<Script src = dll </Script>

Page 42: Material IV-Bimestre

42

xpsp3res.dll

Código

VRMLxpsp3res.dll

objectembed.js ObjectLoad()

Visualização da Cena

Formulário

Page 43: Material IV-Bimestre

43

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>

Page 44: Material IV-Bimestre

44

Criação de Script para carregamento da Cena location.href

Exemplo :

<Script>

location.href= "file:///c:/vrml2/js.html"

</Script>

Page 45: Material IV-Bimestre

45

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>

Page 46: Material IV-Bimestre

46

Usando o marcador <href>

Exemplo :

<A Href=file:///c:/vrml2/js.html> Ok </A>

Page 47: Material IV-Bimestre

47

Criando Script

Script

Ações

F

I

G

U

R

A

S

[

Page 48: Material IV-Bimestre

48

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>“]

}

Page 49: Material IV-Bimestre

49

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.

Page 50: Material IV-Bimestre

50

Exemplos de tipos campos

field SFBool bottom TRUEfield SFFloat height 2 # (0, )field SFFloat radius 1 # (0, )field SFBool side TRUEfield SFBool top TRUEfield SFInt32 usuáriofield SFNode (Criação de nós - figura)field SFString (Variável do tipo String)

Page 51: Material IV-Bimestre

51

Tipos de variáveis de Eventos

eventIn SFBool <Varm_Evento>

eventIn SFBool <Varm_Evento>

eventOut SFBool <Varm_Evento>

Page 52: Material IV-Bimestre

52

Estrutura completa Script

Group { children [

DEF .... Definições de figurasDEF Java_Script Script {

... <Variáveis Eventos ou Campos> ....url [ “javascript:

... Programa.....“]

} ]}

Page 53: Material IV-Bimestre

53

Ligando e desligando a luz da cenarefletida no cubo.

Exemplo : JavaIlumina.wrl

Emissão de luz Liga

Desliga

Page 54: Material IV-Bimestre

54

Ligando e desligando a luz da cena

Exemplo : BrillhoJavaScript.wrl

Emissão de luz Liga/Desliga

Page 55: Material IV-Bimestre

55

Switch

Permite realizar a mudança de estado ativo ou não mediante a seleção do objeto. Podendo substituir um objeto na tela em tempo de execução.

Exemplo :

DEF nome Switch {choice [ ..... ]

} Exemplo =>EsferaCuboJs.wrl

Page 56: Material IV-Bimestre

56

Criação de figuras em tempo de execução.

String (VRML)

Browser

crea

teV

rmlF

rom

Str

ing(

)

Ação (Cena)

[

Page 57: Material IV-Bimestre

57

createVrmlFromString()

Dada uma string contendo a geometria da figura o método createVrmlFromString() irá montá-la usando as especificações determinadas criando um nó.

Sintaxe :

node = Browser.createVrmlFromString(string);

Page 58: Material IV-Bimestre

58

addChildren

Essa propriedade cria a figura no vídeo especificada com o novo nó.

Exemplo:

Objetonode.addChildren = tempNode;

Page 59: Material IV-Bimestre

59

DEF Scene Group { children [ DEF Sensor TouchSensor {} Shape { appearance Appearance { material Material { diffuseColor .1 .44 .22 shininess .1 specularColor .15 .15 .02 ambientIntensity 0 emissiveColor .04 .18 .09 } } geometry Box { size 1 1 1 } } ]}

DEF AddedObject Group { children [ ]}

DEF Generate Script { eventIn SFTime touchTime field SFNode addedObject USE AddedObject field MFNode tempNode [] field SFString str "" directOutput TRUE url "javascript: function touchTime (val) { str = 'Transform { children [Shape {geometry Sphere{} } ] }'; tempNode=Browser.createVrmlFromString(str); addedObject.addChildren=tempNode;

} "}

ROUTE Sensor.touchTime TO Generate.touchTime

Exemplo : criação de objetos

Page 60: Material IV-Bimestre

60

addRoute()Cria comunicação com as instruções

de Rota, para gerar animações de figuras.

a

d

d

R

o

u

t

e

Temporizador

Troca de valores

Nó aparência

Material

ROUTE Browser

Parâmetros

Page 61: Material IV-Bimestre

61

Exemplo método : addRoute()

Browser.addRoute(timer, 'fraction_changed', tempNode[0].children[0].appearance.material, 'transparency');

Page 62: Material IV-Bimestre

62

Execução das definições

# Generate Executa o scriptROUTE Sensor.touchTime TO Generate.touchTime# Executa temporizadorROUTE Sensor.touchTime TO Timer.startTime

Exemplo : criaObjJS.wrl

Page 63: Material IV-Bimestre

63

Links (Pesquisa)

http://vrmlworks.crispen.org/tutorials/JavaScript/

http://vrmlworlds.com/developer/tutorials/scripts/scripting4.html

http://www.maxwell.lambda.ele.puc-rio.br/cgi-bin/PRG_0599.EXE/4949_8.PDF?NrOcoSis=12322&CdLinPrg=pt

http://www.cresesb.cepel.br/VRML/cresesb_centro/cresesb_centro.wrl

http://www.web3d.org/x3d/publiclists/vrml_list_archives/0404/msg00086.html