1 / 23

Rappresentare Oggetti in VRML

Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione 7 Dip. di Informatica e Telecomunicazioni Università di Trento. Rappresentare Oggetti in VRML. File VRML descrive un mondo Sistema di assi cartesiani X/Y/Z

tudor
Télécharger la présentation

Rappresentare Oggetti in VRML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fondamenti di Informaticaper IngegneriaProf. Ing. Fabio Massacci (A-L)Ing. Enrico Blanzieri (M-Z)Lezione 7Dip. di Informatica e Telecomunicazioni Università di Trento Fabio Massacci Programmazione ad Oggetti

  2. Rappresentare Oggetti in VRML • File VRML descrive un mondo • Sistema di assi cartesiani X/Y/Z • Tutti gli oggetti sono costruiti nel sistema di assi cartesiani • Default: oggetti centrati nell’origine • Oggetti nella stessa locazione si sovrappongono parzialmente Fabio Massacci Programmazione ad Oggetti

  3. Oggetti Geometrici - Trasformazioni • Rappres. base VRML • Tutti gli oggetti sono costruiti nel sistema di assi cartesiani • Default: oggetti centrati nell’origine, alto verso l’asse Y, asse X a destra, faccia verso l’asse Z (uscente dallo schermo) • Trasformazioni di Oggetti • Traslazioni in qualsiasi punto XYZ • Rotazioni contemporanee su tre assi • Scalature anche Anamorfiche (differenti proporzioni su differenti assi Fabio Massacci Programmazione ad Oggetti

  4. Trasformazioni di Coordinate • Nodo di tipo Trasform crea nuovo sistema di coordinate XYZ • Traslato • Ruotato • Scalato • rispetto al sistema di coord. originario • Oggetti nel sistema XYZ Trasformato • sono traslati, ruotati e scalati solidarmente al nuovo sistema • Intuizione • costruisco oggetti nell’origine, li rimpicciolisco od ingrandisco, poi li ruoto, e li sposto nel posto appropriato Fabio Massacci Programmazione ad Oggetti

  5. Trasformazioni di Coordinate (cont) • Sintassi VRMLper la Trasformazione Transform { translation . . . rotation . . . scale . . . children [ . . . ] } • translation, rotation, scale: ovvia operazione • children: tutti gli oggetti a cui applicare la trasformazione. • Qualche operazione può essere omessa Fabio Massacci Programmazione ad Oggetti

  6. Trasformazioni di Coordinate (cont) • Tra le children sono ammesse ricorsivamente altre trasform • La combinazione ricorsiva di due operazioni non è uguale alla esecuzione contemporanea Transform { translation . . . children [ Shape { . . . } Shape { . . . } Transform { . . . } ] } Fabio Massacci Programmazione ad Oggetti

  7. Trasformazioni - Traslazioni • Traslazioni lungo gli assi Transform { #lungo asse X Y Z translation 2.0 0.0 -1.5 children [ . . . ] } • Trasla tutti gli oggetti in children • verso destra lungo l’asse X di 2m • stessa altezza sull’asse Y • indietro di 1.5m lungo l’asse Z Fabio Massacci Programmazione ad Oggetti

  8. Trasformazioni - Traslazioni (codice) • Traslazioni lungo l’asse X di un cilindro Transform { translation 2.0 0.0 0.0 children [ Shape { geometry Cylinder { height 2.0 radius 1.0 } } ] } Fabio Massacci Programmazione ad Oggetti

  9. Trasformazioni - Traslazioni (cont) • Sistema di assi Iniziale • Assi traslati di 2.0 lungo asse X • Oggetto costruito su nuovi assi Fabio Massacci Programmazione ad Oggetti

  10. Trasformazioni - Rotazioni • Rotazioni intorno agli assi Transform { #lungo asse X Y Z Radianti translation 0.0 0.0 1.0 0.52 children [ . . . ] } • Ruota tutti gli oggetti in children • intorno all’asse Z di 0.52 radianti (30 gradi) • Angoli misurati in radianti • radians = degrees / 180.0 * 3.141 Fabio Massacci Programmazione ad Oggetti

  11. Trasformazioni - Rotazioni (cont) • Asse di rotazione definisce un polo intorno a cui ruotare gli oggetti • Analogo all’asse Nord/Sud della terra • Esempi di rotazione tipici di r radianti • asse X 1.0 0.0 0.0 r • asse Y 0.0 1.0 0.0 r • asse Z 0.0 0.0 1.0 r • Possibili ruotazioni miste (vari numeri non a 0) • Sconsigliata per novizi: gli essere umani hanno pessime intuizioni su cosa succede facendo ruotazioni contemporanee su assi diversi Fabio Massacci Programmazione ad Oggetti

  12. Trasformazioni - Rotazioni (codice) • Rotazioni intorno asse Z di un cilindro Transform { translation 0.0 0.0 1.0 0.52 children [ Shape { geometry Cylinder { height 2.0 radius 1.0 } } ] } Fabio Massacci Programmazione ad Oggetti

  13. Trasformazioni - Rotazioni (cont) • Sistema di assi Iniziale • Assi ruotati di 30g intorno a Z • Oggetto costruito su nuovi assi Fabio Massacci Programmazione ad Oggetti

  14. Trasformazioni - Rotazioni (cont) • Rot. positive in senso antiorario, counterclockwise • Regola della mano destra • aprire la mano • distendere il pollice e puntarlo nella direzione positiva dell’asse • curvare le dita intorno all’asse (come per stringerlo in mano) • la curvatura corrisponde ad una rotazione positiva Fabio Massacci Programmazione ad Oggetti

  15. Trasformazioni - Scalature • Scalature lungo agli assi Transform { #lungo asse X Y Z scale 1.0 0.5 2.0 children [ . . . ] } • Scala tutti gli oggetti in children • lascia inalterate le dimensioni lungo l’asse X • dimezza l’altezza (dim lungo l’asse Y) • raddoppia la profondità (dim lungo l’asse Z) • Scalatura Anamorfa (Isomorfa tutti num uguali) Fabio Massacci Programmazione ad Oggetti

  16. Trasformazioni - Scalature (codice) • Scalatura Isomorfa di 0.5m in ogni direzione Transform { scale 0.5 0.5 0.5 children [ Shape { geometry Cylinder { height 2.0 radius 1.0 } } ] } Fabio Massacci Programmazione ad Oggetti

  17. Trasformazioni - Scalature (cont) • Sistema di assi Iniziale • Assi scalati di metà (0.5) in ogni dimensione • Oggetto costruito su nuovi assi Fabio Massacci Programmazione ad Oggetti

  18. Trasformazioni - Operazioni Multiple • Scalatura, rotazione e traslazione di un sistema di coordinate Transform { translation 2.0 0.0 0.0 rotation 0.0 0.0 1.0 0.52 scale 0.5 0.5 0.5 children [ . . . ] } • I figli sono scalati, ruotati e poi traslati • L’ordine è fissato, indipendentemente dall’ordine con cui appaiono Fabio Massacci Programmazione ad Oggetti

  19. Trasformazioni - Multiple Operaz. (cont) • Sistema di assi Iniziale • Oggetto scalato della metà • ruotato di 30g • spostato di 2m lungo l’asse X Fabio Massacci Programmazione ad Oggetti

  20. Trasformazioni - Multiple (cont) • Attenzione combinazione di trasformazioni • aspetti subdoli: rotation+ traslation, scale+traslation • Scale+Traslation insieme Palazzo10mVerde {...} Transform { translation 20.0 0.0 0.0 scale 0.5 0.5 0.5 children [ Palazzo10mRosso {...} ] } • Risultato è un palazzo di 10m verde con affianco, a 20m di distanza un palazzo di 5m rosso Fabio Massacci Programmazione ad Oggetti

  21. Trasformazioni - Multiple (cont) Palazzo10mVerde {...} Transform { scale 0.5 0.5 0.5 children [ Transform { translation 20.0 0.0 0.0 children [ Palazzo10mRosso {...} ] } ] } • Risultato è un palazzo di 10m verde con affianco, a 10m di distanza (notare scalatura) un palazzo di 5m rosso Fabio Massacci Programmazione ad Oggetti

  22. Trasformazioni - Multiple (cont) • Traslazioni e rotazioni abbastanza imprevedibili • Facile: rotazione e poi traslazione Palazzo10mVerde {...} Transform { traslation 20.0 0.0 0.0 rotation 0.0 1.0 0.0 1.57 children [ Palazzo10mRosso {...} ] } • Risultato è un palazzo di 10m verde con affianco, a 20m di distanza un palazzo di 10m rosso ruotato di 90gradi su se stesso a destra Fabio Massacci Programmazione ad Oggetti

  23. Trasformazioni - Multiple (cont) Palazzo10mVerde {...} Transform { rotation 0.0 0.1 0.0 1.57 children [ Transform { translation 20.0 0.0 0.0 children [ Palazzo10mRosso {...} ] } ] } • Risultato è un palazzo di 10m verde con ... dove è finito il palazzo rosso? Fabio Massacci Programmazione ad Oggetti

More Related