mini-curso: x3d básico gustavo francisco frizzo cleber alexandre de azevedo

45
Mini-Curso: X3D Básico Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Upload: internet

Post on 18-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Mini-Curso: X3D BásicoMini-Curso: X3D Básico

Gustavo Francisco FrizzoCleber Alexandre de Azevedo

Page 2: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Sumário Sumário Introdução BS X3D

◦ Estrutura◦ Conceito

X3D-Edit Estrutura dos Objetos Campos dos Objetos DEF/USE Textos Transformações

◦ Translação◦ Rotação◦ Escala

Page 3: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

SumárioSumárioAparênciaSite de ReferênciasLinhaFace VisãoOutros GruposInterpolaçãoSensoresJunção com Java

Page 4: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

IntroduçãoIntroduçãoX3D significa extensible 3DFoi criado para fazer a

comunicação entre 3D e web, sendo feito em XML

O X3D não é uma API de programação,nem tão pouco um formato de arquivo para troca de geometrias

É um padrão aberto para distribuir conteúdo 3D

Page 5: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Site para ReferênciasSite para Referências http://www.web3d.org/x3d/content/

X3dTooltipsPortuguese.html

Page 6: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

BS ContactBS ContactÉ uma aplicação desenvolvida

pra visualização de conteúdo Web 3D.

Funciona como plugin para browsers

Pode ser encontrada em: http://www.bitmanagement.com/en/download

Vamos aos exemplos

Page 7: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3DX3DArquivos X3D são simples

arquivos de texto definidos pela extensão .x3d

O código é baseado em TAGs, como no HTML ou XML.

Exemplos:

<head> Codigo </head>

<!-- TAG de comentario -->

<Box size='10 50 10'/>

Page 8: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3DX3D

Um arquivo X3D começa com um cabeçalho que o

identifica o arquivo. Independente da

codificação, o cabeçalho contém os seguintes

elementos na ordem:

◦ Identificação do padrão suportado (neste caso

“X3D”);

◦ Versão do padrão suportado (a mais atual é a

3.2);

◦ Identificação da codificação de caracteres

suportado (“utf8” – case sensitive).

Page 9: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D – Cabeçalho BásicoX3D – Cabeçalho Básico

Page 10: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3DX3D

O código desenvolvido ficará

dentro das TAGs <Scene>

</Scene>

As TAGs <Shape> </Shape> são

usadas dentro de <Scene> e

definem uma forma.

Page 11: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Usando o X3D-Edit…Usando o X3D-Edit…

Page 12: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D-EditX3D-EditAmbiente que facilita a criação e

manipulação do código.Pode ser encontrado em:https://savage.nps.edu/X3D-Edit/#DownloadsPara usá-lo, descompacte o arquivo

baixado em alguma pasta e execute o arquivo:

..\X3D-Edit\x3deditor32\bin\x3deditor32.exe

Page 13: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Primeiro ExemploPrimeiro Exemplo

Page 14: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D – Estruturas BásicasX3D – Estruturas Básicas

• <Sphere/><Sphere/>

• <Box/><Box/>

• <Cone/><Cone/>

• <Cylinder/><Cylinder/>

Page 15: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExecícioExecícioCrie e visualize cada umas das

estruturas básicas apresentadas.

• <Sphere/><Sphere/>

• <Box/><Box/>

• <Cone/><Cone/>

• <Cylinder/><Cylinder/>

Page 16: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D – Estrutura BásicaX3D – Estrutura BásicaDEF e USE: usado com qualquer

elemento para dar um nome a ele (DEF) e depois usar ele de novo (USE)

Page 17: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercícioExercícioAltere o tamanho e a forma das

estruturas usando os comandos apreendidos.

Page 18: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - TextosX3D - Textos

Cada conjunto de aspas é uma linha.

Page 19: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercíciosExercíciosCrie um “Olá Mundo” em X3D.

Crie dois objetos (ex.: um cone e um cubo) na mesma cena.

Page 20: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

EixosEixos

Page 21: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D – TransformaçõesX3D – TransformaçõesTranslation

◦Translada o objeto de um ponto ao outro.

Page 22: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercícioExercício

Crie 5 objetos na mesma cena, fazendo com que eles não se interceptem.

Page 23: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - TransformaçõesX3D - TransformaçõesRotação

◦Rotaciona o objeto em volta do eixo.

rotation = ‘x y z angulo’ angulo = 0~3.14.

Page 24: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercícioExercícioUtilize a rotação para alterar a

posição dos objetos.

Page 25: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - TransformaçõesX3D - TransformaçõesScale

◦Aumenta ou diminui a escala de um objeto, multiplicando os lados (x, y, z) por um valor definido.

Page 26: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercícioExercícioAltere o tamanho dos seus

objetos utilizando a escala.

Page 27: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - TransformaçõesX3D - TransformaçõesUtilizando todas juntas.

Page 28: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercíciosExercíciosCrie um palhaço utilizando os

objetos e as transformações.

Crie uma cadeira.

Page 29: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - AparênciaX3D - AparênciaA aparência é alterada entre as

TAGs <Appearance> </Appearance>

É possível alterar a cor dos objetos, a forma com que emana ou absorve a luz do ambiente e adicionar texturas

Page 30: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - AparênciaX3D - AparênciaTAG <Material/>Material: diffuseColor:

◦ Reflete as luzes do ambiente. Depende do ângulo de visão e do ângulo da fonte de luz.

emissiveColor:◦ Incandecênsia do objeto, é independente da luz.

specularColor:◦ Conduz o reflexo do objeto.

Shininess:◦ Controla a intensidade especular (polído).

Transparency:◦ Permite ver através do objeto, 0 até1.

Page 31: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

X3D - AparênciaX3D - AparênciaTextura

Page 32: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExemploExemplo

Page 33: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ExercícioExercício

Crie 5 objetos com cores diferentes.

Page 34: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

SitesSiteshttp://www.web3d.org/x3d/content/X3

dTooltipsPortuguese.html Site para informação de tags e campos dela.

http://x3dGraphics.com Site com exemplos com código fonte e um livre gratis

com informações sobre X3D.

http://www.xj3d.org/ Site sobre o XJ3D, ferramenta utilizada na junção de X3D

com Java.

Page 35: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

IndexedLineSetIndexedLineSet

IndexedLineSet = cria linhas que precisão se fechar, onde o campo, onde -1 é para informar que um conjunto de linhas acabou. coordIndex indica a ordem de criação das linhas através dos vértices.Coordinate = cria os vértices, através do campo point, que serão usados no index

<IndexedLineSet DEF='ILS' coordIndex='0 1 2 0 -1'><Coordinate DEF='TurnPoints' point='0.0 -7.0 -1.0 -1.75 -7.0 -0.5 2.25 -7.0 -0.25'/></IndexedLineSet>

Page 36: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

IndexedFaceSetIndexedFaceSet

IndexedFaceSet = mesma coisa que o Line mas cria faces. Coordinate = continua igual.

<IndexedFaceSet DEF='IFS' coordIndex='0 1 2 3 -1 3 4 5 0 -1'><Coordinate point='0.0 0.0 0.0 2.0 0.0 0.0 2.0 2.0 0.0 0.0 2.0 0.0 0.0 2.0 -2.0 0.0 0.0 -2.0'/></IndexedFaceSet>

Page 37: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ViewpointViewpoint• NavigationInfo = Modo do usuário navegar pela cena com

campo type ("EXAMINE" "WALK" "FLY" "LOOKAT" "ANY" "NONE")., speed, headlight, avatarSize, visibilityLimit, transitionType, transitionTime entre outros.

• Viewpoints = define uma especifica posição e orientação ao olhar um cena 3D

description = nome da visão. orientation = orientação da visão. position = posisão da visão. fieldOfView = alcance limite da visão.

<Viewpoint DEF='DefaultPositionLeft7Degrees' description='7' orientation='1 0 0 -0.1'/>

<Viewpoint DEF='DefaultPositionLeft7Degrees' description='8' orientation='1 0 0 -0.3'/>

Page 38: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Outros GruposOutros Grupos• Group – grupo basico.

– bboxCenter (três valores)– bboxSize (três valores)

• StaticGroup - grupo não é animado.

• LOD (level of detail) - quando dois objetos se colidem ele deixa o de maior prioridade.

• Switch - serve para escolha de nodos.

Page 39: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

InterpolaçãoInterpolação<CoordinateInterpolator/><OrientationInterpolator/> -

dada as orientações essa tag cria um trajeto entre elas

<PositionInterpolator/> - dada as coordenadas essa tag cria um trajeto entre elas

<ScalarInterpolator/> - idem com scalas.

<ColorInterpolator/> -idem com cores.

Page 40: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

SensoresSensoresTimeSensor – sensor de tempo.PlaneSensor – sensor para movimento em

um plano.KeySensor – sensor de entrada pelo

teclado por botão clicado.CylinderSensor – sensor para rotação em

um eixo.SphereSensor – sensor para rotação em

todos os sentidos.StringSensor – quando usado o enter do

teclado. TouchSensor – sensor de click na estrutura.ProximitySensor – sensor de proximidade.LoadSensor – sensor para carregar

estruturas pesadas (não será visto)

Page 41: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

SensoresSensores<TimeSensor/> = controla quando a

animação flui◦ cycleInterval, startTime, stopTime,

pauseTime, resumeTime (um valor), loop, enabled (booleano)

<ROUTE/> = Conecta a saída informação de um nó para passar um valor e estimular a entrada dessa informação para outro nó.

◦ fromNode, fromField, toNode, toField (nomes)

Page 42: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

SensoresSensores9 passos básicos para sensores:

•1° Escolha o nó a ser animado;

•2° Defina um nome para o nó de interesse;

•3° Certifique-se se o nó é input e determine seu ponto flutuante: SFFloat, SFVec3f, SFColor e etc;

•4° Determinar qual “Interpolator”: se você não estiver usando um nó sequencer ou Script, determine qual interpolador irá produzir a informação correta para uma mudança de valor(“value_changed”) de saida, por exemplo: PositionInterpolator produz SFVec3f “value_changed” events.

•5° Triggering sensor: se desejar adicione um sensor no inicio, para produzir SFTime ou SFBool “trigger” para começar a animação.

– Normalmente um evento triggering é um informação de saida para uma cascata de animação.

Page 43: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

SensoresSensores• 6° TimeSensor clock: adicione um sensor de tempo,

então ajuste seu campo “cycleInterval” de acordo com o intervalo de duração de seu animação.– Ajuste loop=‘false’ se a animação percorre até

um tempo pré estimado;– Loop=‘true’ se é repetitivo.

• 7°Connect Trigger: sensor “ROUTE” para o “TimeSensor” enviar uma ordem de iniciar a animação.

• 8° Connect clock: faça um “ROUTE” o “TimeSensor fraction_changed” para o interpolador(ou sequencia) “set_fraction” na ordem para seguir a animação de modo correto;

• 9° Connect animation output: “ROUTE” a interpolação, sequencia, ou Script no campo “value_changed” para o objetivo de interesse na ordem para se completar a animação.

Page 44: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

Mais ExemplosMais Exemplos

Page 45: Mini-Curso: X3D Básico Gustavo Francisco Frizzo Cleber Alexandre de Azevedo

ReferenciasReferenciashttp://x3dgraphics.com/

http://www.xj3d.org/

http://www.web3d.org/