Points, Lines, Polygons

Σχετικά έγγραφα
User Interactivity Nodes

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία

Event Utilities & Scripting

Γραφικά με Υπολογιστές. Κίνηση - Αλληλεπίδραση

Recommended Resources

Γραφικά με Υπολογιστές. Εισαγωγή στη VRML

ΜΟΝΤΕΛΟ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΓΛΩΣΣΑ ΠΕΡΙΓΡΑΦΗΣ ΕΦΑΡΜΟΓΩΝ ΕΙΚΟΝΙΚΗΣ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑΣ

ΙΑ ΡΑΣΤΙΚΟΤΗΤΑ Σε ΤΡΙΣ ΙΑΣΤΑΤΟΥΣ ΕΙΚΟΝΙΚΟΥΣ ΚΟΣΜΟΥΣ ΕΠΕΚΤΑΣΕΙΣ ΓΛΩΣΣΑΣ STEDEL

ΠΕΡΙΕΧΟΜΕΝΑ ΕΝΟΤΗΤΑ 1 Η : ΕΙΣΑΓΩΓΗ ΣΤΗ VRML...6 ΕΝΟΤΗΤΑ 2 Η : ΑΠΛΗ ΓΕΩΜΕΤΡΙΑ Εγχειρίδιο της VRML

Βελτιστοποίηση ΕΠ µέσω των Cortona Tools

ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ

ηµιουργία µετάδοση και ανακατασκευή τρισδιάστατων γραφικών στο διαδίκτυο µε χρήση JAVA και

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης. Τμήμα Μηχανολογίας ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής»

Σύνθεση Εκφράσεων Προσώπου µε Χρήση Τρισδιάστατων Γραφικών

Μαυραντζάς Νικόλαος Εκπαιδευτικός ΠΕ19, MSc

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ 3D ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΔΡΑΣΗΣ ΚΑΙ ΣΥΝΕΡΓΑΣΙΑΣ ΑΠΟΜΑΚΡΥΣΜΕΝΩΝ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Σχήµα 4.1: Εισαγωγή βρόγχου while-loop.

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Contents. 1 Introduction. 2 Shape of the Earth. 3 NAD 27 vs NAD 83

Computing. Νοέμβριος Έκδοση 1.0

Δημιουργώντας σχεδιοκίνηση στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΚΕΦΑΛΑΙΟ Web Services

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Answers - Worksheet A ALGEBRA PMT. 1 a = 7 b = 11 c = 1 3. e = 0.1 f = 0.3 g = 2 h = 10 i = 3 j = d = k = 3 1. = 1 or 0.5 l =

3D Δυναμικό Puzzle Σε X3D-Xj3D

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Διδάσκων: Παναγιώτης Ανδρέου

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

Αποτελέσματα προόδου

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

bits and bytes q Ο υπολογιστής χρησιμοποιεί τη κύρια μνήμη για αποθήκευση δεδομένων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

5-1. Industrial Vision. Machine Vision Systems : Image Acquisition Image processing Analysis/Exploitation

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

7. Επαναλήψεις (Loops) Προγραμματισμός EV3 Ακαδημία Ρομποτικής 58

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

6. ΕΠΙΣΚΟΠΗΣΗ ΤΟΥ ΧΑΡΤΗ

ΤΗΛΕΠΙΣΚΟΠΗΣΗ (E6205) Βασιλάκης Εµµανουήλ Επίκ. Καθηγητής

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

8 ο Εργαστήριο Ευθυγράμμιση σε πλέγμα

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

ΔΙΑΚΡΙΤΟΣ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ FOURIER - Discrete Fourier Transform - DFT -

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Κατανεμημένα Συστήματα. Javascript LCR example

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1 ΑΠΕΙΚΟΝΙΣΤΙΚΗ ΜΙΚΡΟΣΚΟΠΙΑ

Το κύκλωμα σε breadboard

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Εισαγωγή στο EV3 Μέρος 2

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυναμική δημιουργία και ενσωμάτωση εικονικών χώρων σε τεχνολογία X3D

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Artiste Picasso 9.1. Total Lumen Output: lm. Peak: cd 6862 K CRI: Lumen/Watt. Date: 4/27/2018

Τεχνολογία Πολυμέσων. Ενότητα 9: Behaviors. Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

Δημιουργώντας 3D μοντέλα μετασχηματίζοντας κορυφές, ακμές και επιφάνειες

Στοιχειώδης προγραμματισμός σε C++

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

ΗΥ-150. Προγραμματισμός

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

Δημιουργώντας 3D μοντέλα από ακμές

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO

PHP 2. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή

Εισαγωγικό Φροντιστήριο

Μοντελοποίηση Επιπέδου Πύλης. (Peter Ashenden, The Students Guide to VHDL)

Paybybank RESTful API GUIDE

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Κλάσεις στην Python. Δημιουργία κλάσεων

Εισαγωγή στον Προγραμματισμό

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Spherical Coordinates

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. «ΜΕΛΕΤΗ ΚΑΙ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΜΕΤΡΗΣΕΙΣ BER ΓΙΑ ΣΗΜΑΤΑ QPSK, π/8 PSK, 16QAM, 64- QAM ΜΕ ΧΡΗΣΗ ΓΕΝΝΗΤΡΙΑΣ ΣΗΜΑΤΟΣ ΚΑΙ ΑΝΑΛΥΤΗ ΣΗΜΑΤΟΣ»

DOM. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Ει αγωγή η Fortran.

Transcript:

Points, Lines, Polygons Color and ColorRGBA nodes Coordinate and CoordinateDouble nodes PointSet node IndexedLineSet node LineSet node IndexedFaceSet ElevationGrid Extrusion

Common Fields for Geometry Nodes SFBool initializeonly ccw true Interchange SFBool initializeonly colorpervertex true Interchange SFBool initializeonly convex true Interchange SFFloat initializeonly creaseangle 0 [0, ) Interchange SFBool initializeonly normalpervertex true Interchange SFBool initializeonly solid true Interchange MFInt32 initializeonly colorindex [ ] [0, ) or -1 Interchange MFInt32 initializeonly coordindex [ ] [0, ) or -1 Interchange MFInt32 initializeonly normalindex [ ] [0, ) or -1 Interchange

Color and ColorRGBA Nodes MFColor/ MFColorRGBA inputoutput color [ ] [0, 1] Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <Color DEF= MyColorNode color= 0 0 0, 1 1 1, 1 0 0, 0 1 0, 0 0 1 /> <ColorRGBA DEF= MyRGBAColorNode color= 0 0 0 0.5, 1 1 1 0.5, 1 0 0 0.5, 0 1 0 0.5, 0 0 1 0.5 />

Coordinate & CoordinateDouble Nodes MFVec3f/ MFVec3d inputoutput point [ ] (-, ) Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <Coordinate DEF= MyCoordinateNode point= 0 0 0, 1 1 1 />

PointSet Node SFNode inputoutput color NULL [X3dColorNode] Interchange SFNode inputoutput coord <PointSet DEF= MyPointNode <Color color= 1 0 0, 0 1 0, 0 0 1, 0.8 0.8 0.8 /> <Coordinate point= -2 0 0, 0 0 0, 0 0 2, 0 0 4 /> </PointSet> NULL [X3DCoordinateNode] Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core

LineSet Node MFInt32 initializeonly vertexcount [ ] [0, ) or -1 SFNode inputoutput color NULL [X3dColorNode] Interchange SFNode inputoutput coord NULL [X3DCoordinateNode] Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <LineSet DEF= MyLineSet containerfield= geometry vertexcount= 2 2 > <Coordinate point = -2 0 0, 0 0 0, 0 0 2, 0 0 4 /> <Color color = 1 0 0, 0 1 0, 0 0 1, 0.8 0.8 0.8 /> </IndexedLineSet>

IndexedLineSet Node MFInt32 initializeonly colorindex [ ] [0, ) or -1 Interchange SFBool initializeonly colorpervertex true Interchange SFBool initializeonly coordindex [ ] [0, ) or -1 Interchange SFNode inputoutput color NULL [X3DColorNode] Interchange SFNode inputoutput coord NULL [X3DCoordinateNode] Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <IndexedLineSet DEF= DefaultIndexedLineSet coordindex= 0 1 2 3-1 colorindex= 0 1 2 3-1 colorpervertex= true containerfield= geometry > <Coordinate point = -2 0 0, 0 0 0, 0 0 2, 0 0 4 /> <Color color = 1 0 0, 0 1 0, 0 0 1, 0.8 0.8 0.8 /> </IndexedLineSet>

IndexedLineSet Node <Shape> <IndexedLineSet DEF='DefaultIndexedLineSet' coordindex='0 1 2 3 0-1 1 3-1' colorindex='0 1 2 3 0-1 1 3-1' colorpervertex='true' containerfield="geometry"> <Coordinate point = "-2 0 0, 0 0 0, 0 0 2, 0-4 4" /> <Color color = "1 0 0, 0 1 0, 0 0 1, 0.8 0.8 0.8"/> </IndexedLineSet> </Shape>

IndexedFaceSet Node SFBool initializeonly ccw true Interchange SFBool initializeonly convex true Interchange SFBool initializeonly solid true Interchange SFFloat initializeonly creaseangle 0 [0, ) Interchange SFBool initializeonly colorpervertex true Interchange SFBool initializeonly normalpervertex true Interchange MFInt32 initializeonly colorindex [ ] [0, ) or -1 Interchange MFInt32 initializeonly coordindex [ ] [0, ) or -1 Interchange MFInt32 initializeonly normalindex [ ] [0, ) or -1 Interchange MFInt32 initializeonly texcoordindex [ ] SFNode inputoutput color NULL SFNode inputoutput coord NULL SFNode inputoutput normal NULL SFNode inputoutput texcoord NULL SFNode inputoutput metadata NULL [X3DMetadataObject] Core

IndexedFaceSet Node <IndexedFaceSet DEF= MyIndexedFaceSet containerfield= geometry ccw= true colorpervertex= true convex= true creaseangle= 0 normalpervertex= true solid= true > <Coordinate DEF= DefaultCoordinate containerfield= coord /> <Color DEF= DefaultColor containerfield= color /> </IndexedFaceSet>

IndexedFaceSet Node <Shape> <Appearance DEF='PumpHouseAppearance'> <Material diffusecolor='0.82 0.78 0.74'/> </Appearance> <IndexedFaceSet DEF='IFS' coordindex='0 1 5 4-1 5 1 2 6-1 6 2 3 7-1 3 0 4 7-1 1 12 13 2-1 2 13 14-1 12 15 16 13-1 15 0 3 16-1 16 3 17-1 9 5 6 10-1 8 9 10 11-1 4 8 11 7-1 4 5 9 8-1 11 10 6 7-1 3 2 14 17-1 13 16 17 14-1'> <Coordinate point='0.0 0.0 0.0 2.0 0.0 0.0 2.0 1.75 0.0 0.0 1.75 0.0 0.625 0.75 0.0 1.0 0.75 0.0 1.0 1.6 0.0 0.625 1.6 0.0 0.625 0.75-0.65 1.0 0.75-0.65 1.0 1.6-0.65 0.625 1.6-0.65 2.0 0.0-2.7 2.0 1.75-2.7 2.0 2.5-1.0 0.0 0.0-2.7 0.0 1.75-2.7 0.0 2.5-1.0'/> </IndexedFaceSet> </Shape>

IndexedFaceSet Node

ElevationGrid Node SFBool initializeonly ccw true Interchange SFBool initializeonly colorpervertex true Interchange SFBool initializeonly normalpervertex true Interchange SFBool initializeonly solid true Interchange MFFloat initializeonly height [ ] (-, ) Interchange MFFloat inputonly set_height [ ] (-, ) Interchange SFFloat initializeonly creaseangle 0 [0, ) Interchange MFInt32 initializeonly xdimension 0 [0, ) Interchange MFInt32 initializeonly xspacing 1.0 (0, ) Interchange MFInt32 initializeonly zdimension 0 [0, ) Interchange MFInt32 initializeonly zspacing 1.0 (0, ) Interchange SFNode inputoutput color NULL [X3DColorNode] Interchange SFNode inputoutput normal NULL [X3DNormalNode] Interchange SFNode inputoutput texcoord NULL [X3DTextureCoordinateNode] Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core

<ElevationGrid DEF= MyElevationGridNode ccw= true colorpervertex= true containerfield= geometry creaseangle= 0 normalpervertex= true solid= true xdimension= 0 xspacing= 1.0 zdimension= 0 zspacing= 1.0 /> ElevationGrid Node

ElevationGrid Node

ElevationGrid Node <Shape DEF='ExampleElevationGridShape'> <ElevationGrid height='0 0 0 0 0 0 0 1 1 1 1 0 0 1 2 2 1 0 0 1 2 2 1 0 0 1 1 1 1 0 0 0 0 0 0 0' solid='false' xdimension='6' zdimension='6'/> <Appearance DEF='DiffuseRedAppearance'> <Material diffusecolor='0.9 0.1 0.1'/> </Appearance> </Shape>

ElevationGrid Node

TextureCoordinate Node MFVec2f inputoutput point [ ] (-, ) Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <TextureCoordinate DEF=MyTextureCoordinate point= 0 0, 0 1, 1 1, 1 0 containerfield= texcoord />

TextureCoordinateGenerator SFString inputoutput mode SPHERE Immersive MFFloat inputoutput Parameter [ ] Immersive SFNode inputoutput metadata NULL [X3DMetadataObject] Core <TextureCoordinateGenerator DEF=MyTextureCoordinateGenerator mode= SPHERE point= 0 0, 0 1, 1 1, 1 0 containerfield= texcoord />

TextureCoordinateGenerator modes SPHERE CAMERASPACENORMAL CAMERASPACE POSITION CAMERASPACE REFLECTIONVECTOR SPHERE-LOCAL COORD COORD-EYE NOISE NOISE-EYE SPHERE-REFLECT SPHERE-REFLECT-LOCAL

Extrusion Node SFBool initializeonly ccw true Interchange SFBool initializeonly convex true Interchange SFBool initializeonly begincap true Interchange SFBool initializeonly endcap true Interchange SFBool initializeonly solid true Interchange SFFloat initializeonly creaseangle 0 [0, ) Interchange MFVec2f [1 1, 1-1, initializeonly crosssection -1-1, -1 1, (-, ) 1 1] Interchange MFVec3f initializeonly spine [0 0 0, 0 1 0] (-, ) Interchange SFVec2f initializeonly scale [1 1] (0, ) MFRotation initializeonly orientation [0 0 1 0] [-1, 1] (-, ) SFNode inputoutput metadata NULL [X3DMetadataObje ct] Core

Extrusion Node <Extrusion DEF= MyExtrusionNode containerfield= geometry begincap= true ccw= true convex= true creaseangle= 0.0 crosssection= 1 1, 1-1, -1-1, -1 1, 1 1 endcap= true orientation= 0 0 1 0 scale= 1 1 solid= true spine= 0 0 0, 0 1 0 />

Extrusion Node <X3D > <Scene> <Background skycolor="1 1 1"/> <Transform translation='-4 0 0'> <Shape> <Extrusion crosssection='-3.5-1 -2.1 2.9 2.2 2.9 3.6-1 0-3.5-3.5-1' scale='1 1 1 1 0.2 0.2' solid='true' spine='0 0 0 0 1 0 0 1.6 0'/> <Appearance> <Material diffusecolor='0.2 0.6 0.5'/> </Appearance> </Shape> </Transform> </Scene> </X3D>

Event Animation and Interpolation TimeSensor Node ColorInterpolator Node PositionInterpolator OrientationInterpolator NormalInterpolator CoordinateInterpolator PositionInterpolator2D CoordinateInterpolator2D

X3D Animation 3 ή 4 βήματα, με την παρεμβολή συνδέσεων ROUTE Touch Sensor Time Sensor Interpolator Target Node ROUTE Connections Μια ROUTE τοποθετεί το περιεχόμενο ενός πεδίου ενός κόμβου σε ένα πεδίο ενός άλλου κόμβου, κάθε φορά που το πρώτο αλλάζει Τα δυο πεδία οφείλουν να είναι ίδιου τύπου Το πρώτο οφείλει να επιτρέπει Output, και το δεύτερο Input

X3D Animation Ένας TimeSensor παράγει τιμές χρόνου. Στο πεδίο [0, 1], που εκφράζει το ποσοστό του κύκλου του που έχει διανυθεί. Σε κάθε χρονική στιγμή, πριν τη φωτοαπόδοση (rendering) ενός καρέ, ο χρόνος του TimeSensor περνάει (μέσω μιας ROUTE) σε έναν Interpolator Ο Interpolator υπολογίζει (βάσει των τιμών των πεδίων του) την τιμή που αντιστοιχεί στη συγκεκριμένη χρονική στιγμή Η τιμή αυτή περνάει στο επιθυμητό πεδίο του κόμβουστόχου μέσω μιας ROUTE Το νέο καρέ σχεδιάζεται βάσει της τροποποιημένης τιμής του πεδίου του κόμβου-στόχου

X3D Animation Το X3D επιβάλλει strict typing: σε κάθε πεδίο μπορεί να αντιστοιχείται μόνο πεδίο ίδιου τύπου Επιτρέπεται να μεταβάλλουμε τις τιμές των πεδίων με accesstype InputOnly και InputOutput. Τα OutputOnly μπορούν μόνο να επιστρέφουν τιμές, ενώ τα InitializeOnly παίρνουν τιμή μόνο κατά τη φόρτωση της σκηνής Ανάλογα με τον τύπο πεδίου που θέλουμε να μεταβάλλουμε, υπάρχουν αντίστοιχοι κόμβοι Interpolator που παράγουν τον τύπο πεδίου αυτόν Καλό είναι να αποφεύγουμε να συνδέουμε πολλούς διαφορετικούς Interpolators με το ίδιο πεδίο ενός κόμβου (multiple fan-in), καθώς είναι δύσκολο να τους συντονίσουμε

ROUTE Connections <ROUTE fromnode= SourceNodeName fromfield= sourcefieldname tonode= TargetNodeName tofield= targetfieldname /> Προσοχή: ο ορισμός της ROUTE πρέπει να γίνεται αφού οριστούν και ονομαστούν (μέσω DEF) οι κόμβοι που αυτή συνδέει Μια ROUTE δεν είναι κόμβος X3D, αν και συντάσσεται ως στοιχείο XML

Interpolation Γραμμική παρεμβολή, ώστε σε κάθε χρονική στιγμή [0,1] να μπορεί να αντιστοιχηθεί μια τιμή <ScalarInterpolator key=''0 0.2 0.4 0.6 0.8 1'' keyvalue=''0 5 8 9 4 0''/> <ScalarInterpolator key=''0 0.25, 0.25 0.5, 0.5 1'' keyvalue=''1 1, 2 2, 3 4''/>

X3D Animation 1. Επιλογή κόμβου-στόχου και πεδίου-στόχου (δηλ. την παράμετρο που θέλουμε να μεταβάλλεται) 2. Ονομασία του κόμβου στόχου, με το πεδίο DEF. 3. Έλεγχος του τύπου δεδομένων του πεδίου στόχου: SFFloat, SFVec3f, MFVec3f, SFColor κλπ. 4. Έλεγχος μήπως απαιτείται, αντί για Interpolator, Sequencer (σε περίπτωση που το πεδίο-στόχος είναι Boolean ή Integer), ή Script αν το πεδίο-στόχος είναι Node. 5. Αν απαιτείται Interpolator, ακολουθεί η επιλογή του κατάλληλου Interpolator, ο οποίος παράγει το σωστό τύπο δεδομένων, πχ. Ο ScalarInterpolator παράγει SFFloat ενώ ο CoordinateInterpolator παράγει MFVec3f 6. Αν το επιθυμούμε, τοποθετούμε έναν αισθητήρα ο οποίος θα αναλάβει να ενεργοποιήσει τον TimeSensor μέσω ενός πεδίου SFTime ή SFBool. Ο αισθητήρας αυτός θα μπορούσε να ενεργοποιηθεί και από ένα άλλο animation. 7. Προσθέτουμε τον TimeSensor, και θέτουμε το πεδίο cycleinterval στο χρόνο που επιθυμούμε να διαρκεί το animation. Με loop= false το animation συμβαίνει μια φορά όποτε εκκινείται, ενώ με true συμβαίνει επαναλαμβανόμενα 8. Συνδέουμε τον αισθητήρα, αν υπάρχει, με το κατάλληλο πεδίο του TimeSensor, μέσω ενός ROUTE 9. Συνδέουμε το πεδίο του TimeSensor με όνομα fraction_changed με το πεδίο set_fraction του Interpolator (ή Sequencer), μέσω ενός ROUTE 10. Συνδέουμε το value_changed του Interpolator, Sequencer ή Script, με το πεδίο που μας ενδιαφέρει του κόμβου-στόχου.

X3DSensorNode Type SFBool inputoutput enabled true Interactive SFBool inputoutput isactive True Interactive SFNode inputoutput metadata NULL [X3DMetadata Object] Core

X3DInterpolatorNode Type MFFloat inputoutput key [ ] (-, ) Interchange MF<type> inputoutput keyvalue [ ] (type dependent) Interchange SFFloat inputonly set_fraction Interchange [SF;MF] <type> outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core

X3D Animation Nodes Ανάλογα με τον τύπο δεδομένων που χρειαζόμαστε, υπάρχουν και τα αντίστοιχα Animation Nodes Type Description Interpolator/Sequencer animation nodes SFBool Single-field boolean value BooleanSequencer SFColor Single-field color value, R G B ColorInterpolator SFInt32 Single-field 32-bit integer value IntegerSequencer SFFloat Single-field single-precision floating-point ScalarInterpolator value SFRotation Single-field Rotation value using 3-tuple axis, radian angle form OrientationInterpolator (Error in book) SFTime Single-field Time value TimeSensor SFVec2f Single-field 2-float vector value PositionInterpolator2D MFVec2f Multiple-field 2-float vector array CoordinateInterpolator2D SFVec3f Single-field vector value of 3-float values PositionInterpolator MFVec3f Multiple-field vector array of 3-float values CoordinateInterpolator

TimeSensor Node SFTime inputoutput cycleinterval 1 (0, ) Interchange SFTime inputoutput starttime 0 (-, ) Interchange SFTime inputoutput stoptime 0 (-, ) Interchange SFTime inputoutput pausetime 0 (-, ) Full SFTime inputoutput resumetime 0 (-, ) Full SFBool inputoutput enabled true Interchange SFBool inputoutput loop false Interchange SFFloat (Error outputonly fraction_changed in book) Interchange SFTime outputonly time Interchange SFTime outputonly cycletime Interchange SFTime outputonly elapsedtime Interchange SFBool outputonly isactive Interchange SFBool outputonly ispaused Full SFNode inputoutput metadata NULL [X3DMetadataObject] Core

TimeSensor Node TimeSensor example node syntax: <TimeSensor DEF= MyTimeSensorNode cycleinterval= 1 starttime= 0 stoptime= 0 enabled= true loop= false pausetime= 0 resumetime= 0 /> TimeSensor fraction_changed output algorithm (pseudocode): time=now; // output field value numberofloops=(now-starttime)/cycleinterval; // floating-point calculation F=fractionalPart (numberofloops); If (now==starttime) fraction_changed=0.0; // output field value else if ((loop== false ) && (now == (starttime + cycleinterval))) fraction_changed=1.0; //output field value else fraction_changed = f; //output field value

ScalarInterpolator Node MFFloat inputoutput key [ ] (-, ) Interchange MFFloat inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interactive SFFloat outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <ScalarInterpolator key= 0 0.5 1 keyvalue= 2 4 8 />

ColorInterpolator Node MFFloat inputoutput key [ ] (-, ) Interchange MFVec3f inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interchange SFColor outputonly value_changed (Error in book) Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <ColorInterpolator key= 0 0.5 1 keyvalue= 0 0 0 0.2 0.2 0.5 0.4 0.4 1 />

PositionInterpolator Node MFFloat inputoutput key [ ] (-, ) Interchange MFVec3f inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interchange SFVec3f outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <PositionInterpolator key= 0 0.5 1 keyvalue= -3 0 2, 0 0 2, 3 0 2 />

OrientationInterpolator Node MFFloat inputoutput key [ ] (-, ) Interchange MFRotation inputoutput keyvalue [ ] [-1,1] (-, ) Interchange SFFloat inputonly set_fraction Interchange SFRoation outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <OrientationInterpolator key= 0 0.25 0.5 0.75 1 keyvalue= 0 1 0 0, 0 1 0 0.78, 0 1 0 1.57, 0 1 0 2.35, 0 1 0 3.14159 />

NormalInterpolator Node MFFloat inputoutput key [ ] (-, ) Interchange MFVec3f inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interchange SFVec3f outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <NormalInterpolator key= 0 0.5 1 keyvalue= 0 0 0, 0 1 0, 0 0 0 />

CoordinateInterpolator Node MFFloat inputoutput key [ ] (-, ) Interchange MFVec3f inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interchange MFVec3f outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <CoordinateInterpolator key= 0 0.5 1 keyvalue= 0 0 0, 1 0 0, 0 1 0, 0 0 0, 0.5 0 0, 0 0.5 0, 0 0 0, 1 0 0, 0 1 0 />

PositionInterpolator2D Node MFFloat inputoutput key [ ] (-, ) Interchange MFVec2f inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interchange SFVec2f outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <PositionInterpolator2D key= 0 0.5 1 keyvalue= 1 1, 2 2, 3 3 />

CoordinateInterpolator2D Node MFFloat inputoutput key [ ] (-, ) Interchange MFVec3f inputoutput keyvalue [ ] (-, ) Interchange SFFloat inputonly set_fraction (-, ) Interchange MFVec3f outputonly value_changed Interchange SFNode inputoutput metadata NULL [X3DMetadataObject] Core <CoordinateInterpolator2D key= 0 0.5 1 keyvalue= 1 1, 1 1, 2 2, 2 2, 3 3, 3 3 />