massimiliano piscozzi – [email protected] sistemi multimediali

22
Massimiliano Piscozzi [email protected] Sistemi multimediali

Upload: bettina-montanari

Post on 02-May-2015

250 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Massimiliano Piscozzi – [email protected]

Sistemi multimediali

Page 2: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Links utili

• Web 3D Consortium– Specifiche ed esempi: www.web3d.org

• Viewers e plugin– Windows

• Octagon Free Player: www.octaga.com• BS Contact VRML 6.1: www.bitmanagement.de• OpenWorlds: www.openworlds.com• Flux v.1.1.: www.mediamachines.com

– Linux• FreeWrl: freewrl.sourceforge.net

Octagon Free player e Bs Contact VRML 6.1 consigliati

Page 3: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Riassunto lezione precedente

X3D/VRML files, streams

XML

Scene graph

Node A

Node B

Node C

Node D

Node E Node F

Node G

Page 4: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Struttura del corso

Introduzione a X3D

Architettura interna di X3D

Presentazione degli oggetti principali che compongono una scena X3D e corrispondente codifica in XML

Creazione al computer di scene X3D

Utilizzo del software X3D-Edit

Page 5: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Componenti, profili

Componente• Insieme di oggetti X3D e servizi che forniscono delle

funzionalità fra loro collegate– Ex: Rendering component, Sound component, Scripting component

• Specifica uno o più livelli qualità dei servizi

Profilo• Insieme di funzionalità e requisiti che devono essere

supportati affinché un’implementazione sia conforme a tale profilo– Ex: Core profile, Interactive profile, Full profile

• Definito come un insieme di componenti e di corrispondenti livelli

Page 6: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Profili

Full

BaseVRML97

Interactive

Extensible

Interchange

Script, PROTO

NURBS

Text Extrusion

Key Sensor

Switch Sensor

Spot light

Page 7: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Struttura astratta di X3D

• Header (dipendente dalla codifica utilizzata):– Identificazione dello standard supportato (“X3D”)– Identificazione del sistema di codifica dei caratteri (“UTF-8”)

• Dichiarazione del profilo

• Dichiarazione dei componenti aggiuntivi (opzionale)

• Dichiarazione dei metadata (opzionale)– Non modificano lo scene graph– Specificano informazioni aggiuntive

• Lista di dichiarazioni per la creazione e l’organizzazione dei nodi nello scene graph

Page 8: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Esempio di file X3D-XML

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE X3D PUBLIC

"http://www.web3d.org/x3d/content/x3d-3.0.dtd">

<X3D profile="Full">

<head>

<meta name="filename" content="SimpleTest.x3d"/>

<meta name="description" content="semplice esempio"/>

<meta name="created" content="25 aprile 2004"/>

</head>

<Scene>

<Transform>

<Shape>

<Cylinder/>

<Appearance>

<Material diffuseColor="1.0 0.4 0.0"/> </Appearance>

</Shape>

</Transform>

</Scene>

</X3D>

Dichiarazione XML, codifica caratteri

File DTD necessario per la codifica XML

Profilo

Metadata

Tag <Scene> che racchiude tutte le dichiarazioni necessarie a creare oggetti nello scene graph

Page 9: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

XML

• Linguaggio di marcatura (mark-up language) aperto e basato su testo (XML: eXtensible Markup Language)

• Fornisce informazioni di tipo strutturale e semantico relative ai dati veri e propri <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE Rubrica SYSTEM "C:/rubrica.dtd">

<Rubrica>

<Persona>

<Nome> Marco </Nome>

<Telefono> 339-1111111 </Telefono>

<Email> [email protected] </Email>

</Persona>

<Persona>

<Nome> Chiara </Nome>

<Telefono> 339-2222222 </Telefono>

<Email/>

</Persona>

</Rubrica>

• E’ un metalinguaggio che permette di creare dei linguaggi di markup personalizzati

• DTD: insieme di regole che stabiliscono rigorosamente la struttura di un tipo di documento

Page 10: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

XML: tipi di documento

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE X3D PUBLIC

"http://www.web3d.org/x3d/content/x3d-3.0.dtd">

<X3D profile="Full">

<head>

<meta name="filename" content="SimpleTest.x3d"/>

<meta name="description" content="Simple X3D example"/>

<meta name="created" content="25 aprile 2004"/>

</head>

<Scene>

<Transform>

<Shape>

<Cylinder/>

<Appearance>

<Material diffuseColor="1.0 0.4 0.0"/> </Appearance>

</Shape>

</Transform>

</Scene>

</X3D>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE Rubrica SYSTEM "C:/rubrica.dtd">

<Rubrica>

<Persona>

<Nome> Marco </Nome>

<Telefono> 339-1111111 </Telefono>

<Email> [email protected] </Email>

</Persona>

<Persona>

<Nome> Chiara </Nome>

<Telefono> 339-2222222 </Telefono>

<Email/>

</Persona>

</Rubrica>

Page 11: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

XML: sintassi (1)

• Tutti i tag devono essere racchiusi in un tag radice• Tutti i tag devono chiudersi

– Tag di apertura e chiusura: <tag>...</tag>– Tag vuoto: <tag/>

• I tag sono case sensitive– <myTag> e <MYTAG> non sono equivalenti

• I valori degli attributi devono essere racchiusi da virgolette– <myTag height=“5” description=“BlaBlaBla”>

• I tag devono essere corretamente innestati fra loro– Corretto: <firstTag><secondTag>...</secondTag></firstTag>– Non corretto: <firstTag><secondTag>...</firstTag></secondTag>

Page 12: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

XML: sintassi (2)

• Caratteri speciali– & &amp;– < &lt;– > &rt;– ‘ &apos;– “ &quot;

• Commenti compresi fra i tag <!-- e -->– <!-- Questo è un commento -->

• CDATA compresi fra i tag <![CDATA[ e ]]>– <![CDATA[

Testo non analizzato dal parser “XML”

]]>

Page 13: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodi principali

• Transform: crea un sistema di coordinate locale per operare delle trasformazioni geometriche

• Shape: crea una forma composta da un oggetto geometrico e da un aspetto

• Cylinder: una delle varie primitive geometriche

• Material: definizione delle proprietà della superficie

<Transform>

<Shape>

<Cylinder/>

<Appearance>

<Material diffuseColor="1.0 0.4 0.0"/>

</Appearance>

</Shape>

</Transform>

Page 14: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodo Transform (1)

• Definisce un sistema di coordinate locale per i nodi contenuti in children

• Effettua una trasformazione geometrica data da:– Un ridimensionamento (anche non-uniforme) rispetto ad un punto

arbitrario– Una rotazione rispetto ad un asse e ad un punto arbitrari– Una traslazione

Transform : X3DGroupingNode {

MFNode [in,out] children [] [X3DChildNode]

MFNode [in] addChildren [X3DChildNode]

MFNode [in] removeChildren [X3DChildNode]

SFVec3f [in,out] center 0 0 0

SFVec3f [in,out] translation 0 0 0

SFRotation [in,out] rotation 0 0 1 0

SFVec3f [in,out] scale 1 1 1

SFRotation [in,out] scaleOrientation 0 0 1 0

...

}

Transformchildren

addChildren

removeChildren

center

rotation

translation

scale

scaleOrientation

· · ·

Page 15: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodo Transform (2)

<Transform

DEF = “”

USE = “”

center = “0 0 0”

translation = “0 0 0”

rotation = “0 0 1 0”

scale = “1 1 1”

scaleOrientation = “0 0 1 0”

...

>– Nodi discendenti da

X3DChildNode (campo children)

</Transform>

Transform : X3DGroupingNode {

MFNode [in,out] children [] [X3DChildNode]

MFNode [in] addChildren [X3DChildNode]

MFNode [in] removeChildren [X3DChildNode]

SFVec3f [in,out] center 0 0 0

SFVec3f [in,out] translation 0 0 0

SFRotation [in,out] rotation 0 0 1 0

SFVec3f [in,out] scale 1 1 1

SFRotation [in,out] scaleOrientation 0 0 1 0

...

}

Regole generali:• I campi di tipo SFNode o MFNode sono compresi tra il tag di

apertura e quello di chiusura• Tutti gli altri campi sono definiti come attributi del tag• Gli attributi DEF e USE permettono di attribuire un nome al nodo e

di instanziarlo successivamente

Page 16: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Esempio

<Transform translation=“-2 0 0”>

<Transform DEF=“Cilindro Ruotato”

rotation=“0 0 1 0.78”>

<Shape>

<Cylinder/>

<Appearance>

<Material diffuseColor=“1.0 0.4 0.0”/>

</Appearance>

</Shape>

</Transform>

</Transform>

<Transform translation=“2 0 0”>

<Transform USE=“Cilindro Ruotato”/>

</Transform>

Cilindro

Ruotato

Cilindro

Ruotato

Page 17: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodo Shape

Shape : X3DShapeNode {

SFNode [in,out] geometry NULL [X3DGeometryNode]

SFNode [in,out] appearance NULL [X3DAppearanceNode]

...

}

Shapegeometry

appearance

· · ·

<Shape

DEF = “”

USE = “”

...

>– Un nodo discendente da

X3DGeometryNode (campo geometry)– Un nodo discendente da

X3DAppearanceNode (campo appearance)

</Shape>

Page 18: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodo Appearance

Appearance : X3DAppearanceNode{

SFNode [in,out] material NULL [X3DMaterialNode]

SFNode [in,out] texture NULL [X3DTextureNode]

SFNode [in,out] textureTransform 0 0 1 0 [X3DTextureTransformNode]

...

}

Appearancematerial

texture

textureTransform

· · ·

<Appearance

DEF = “”

USE = “”

...

>– Un nodo discendente da

X3DMaterialNode (campo material)– Un nodo discendente da

X3DTextureNode (campo texture)– Un nodo discendente da

X3DTextureTransformNode (campo textureTransform)

</Appearance>

Page 19: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodo Material (1)

Material : X3DMaterialNode{

SFFloat [in,out] ambientIntensity 0.2

SFColor [in,out] diffuseColor 0.8 0.8 0.8

SFColor [in,out] emissiveColor 0 0 0

SFFloat [in,out] shininess 0.2

SFColor [in,out] specularColor 0 0 0

SFFloat [in,out] transparency 0

...

}

<Material

DEF = “”

USE = “”

ambientIntensity = “0.2”

diffuseColor = “0.8 0.8 0.8”

emissiveColor = “0 0 0”

shininess = “0.2”

specularColor = “0 0 0”

transparency = “0”

...

>

</Material>

MaterialambientIntensity

diffuseColor

emissiveColor

shininess

specularColor

transparency

· · ·

Page 20: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Nodo Material (2)

diffuseColorRiflette la luce in base all’angolo tra la

superficie e la sorgente luminosa

specularColorRiflette la luce in base

all’angolo tra la sorgente

luminosa e la direzione

di osservazione

shininessAmpiezza del riflesso

emissiveColor Colore della luce

emessa dall’oggetto stesso

ambientIntensity Fattore moltiplicativo del colore

speculare (dipende dal numero di luci, non dalla loro posizione)

Page 21: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Primitive geometriche (1)

• Semplici forme geometriche derivate dal nodo X3DGeometryNode e utilizzabili nel nodo Shape:

Box : X3DGeometryNode{

SFVec3f [] size 2 2 2

SFBool [] solid TRUE

...

}

Cone : X3DGeometryNode{

SFFloat [] bottomRadius 1

SFFloat [] height 2

SFBool [] bottom TRUE

SFBool [] side TRUE

SFBool [] solid TRUE

...

}

Page 22: Massimiliano Piscozzi – macx.p@tiscali.it Sistemi multimediali

Primitive geometriche (2)

• Tutti i nodi discendenti da X3DGeometryNode hanno un campo solid (SFBool)

• I campi sono tutti di tipo InitializeOnly

Cylinder : X3DGeometryNode{

SFFloat [] height 2

SFFloat [] radius 1

SFBool [] bottom TRUE

SFBool [] top TRUE

SFBool [] side TRUE

SFBool [] solid TRUE

...

}

Sphere : X3DGeometryNode{

SFFloat [] radius 1

SFBool [] solid TRUE

...

}