Upload
internet
View
104
Download
1
Embed Size (px)
Citation preview
Mini-Curso: X3D BásicoMini-Curso: X3D Básico
Gustavo Francisco FrizzoCleber 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
SumárioSumárioAparênciaSite de ReferênciasLinhaFace VisãoOutros GruposInterpolaçãoSensoresJunção com Java
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
Site para ReferênciasSite para Referências http://www.web3d.org/x3d/content/
X3dTooltipsPortuguese.html
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
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'/>
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).
X3D – Cabeçalho BásicoX3D – Cabeçalho Básico
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.
Usando o X3D-Edit…Usando o X3D-Edit…
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
Primeiro ExemploPrimeiro Exemplo
X3D – Estruturas BásicasX3D – Estruturas Básicas
• <Sphere/><Sphere/>
• <Box/><Box/>
• <Cone/><Cone/>
• <Cylinder/><Cylinder/>
ExecícioExecícioCrie e visualize cada umas das
estruturas básicas apresentadas.
• <Sphere/><Sphere/>
• <Box/><Box/>
• <Cone/><Cone/>
• <Cylinder/><Cylinder/>
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)
ExercícioExercícioAltere o tamanho e a forma das
estruturas usando os comandos apreendidos.
X3D - TextosX3D - Textos
Cada conjunto de aspas é uma linha.
ExercíciosExercíciosCrie um “Olá Mundo” em X3D.
Crie dois objetos (ex.: um cone e um cubo) na mesma cena.
EixosEixos
X3D – TransformaçõesX3D – TransformaçõesTranslation
◦Translada o objeto de um ponto ao outro.
ExercícioExercício
Crie 5 objetos na mesma cena, fazendo com que eles não se interceptem.
X3D - TransformaçõesX3D - TransformaçõesRotação
◦Rotaciona o objeto em volta do eixo.
rotation = ‘x y z angulo’ angulo = 0~3.14.
ExercícioExercícioUtilize a rotação para alterar a
posição dos objetos.
X3D - TransformaçõesX3D - TransformaçõesScale
◦Aumenta ou diminui a escala de um objeto, multiplicando os lados (x, y, z) por um valor definido.
ExercícioExercícioAltere o tamanho dos seus
objetos utilizando a escala.
X3D - TransformaçõesX3D - TransformaçõesUtilizando todas juntas.
ExercíciosExercíciosCrie um palhaço utilizando os
objetos e as transformações.
Crie uma cadeira.
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
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.
X3D - AparênciaX3D - AparênciaTextura
ExemploExemplo
ExercícioExercício
Crie 5 objetos com cores diferentes.
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.
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>
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>
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'/>
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.
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.
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)
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)
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.
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.
Mais ExemplosMais Exemplos
ReferenciasReferenciashttp://x3dgraphics.com/
http://www.xj3d.org/
http://www.web3d.org/