Ingegnerizzare il vostro business per massimizzarne il valore: 
realizziamo con voi e per voi soluzioni innovative per 
ottimizzare il vostro lavoro. 
sistemi informativi adatti alle esigenze del cliente, per ottimizzare e massimizzare il 
lavoro. Soluzioni attente alle ultime innovazioni tecnologiche e alla user experience 
dell’utente finale. 
siti dinamici ed applicativi web per il professionista, le aziende e la pubblica 
amministrazione, implementati con tecnologia JoshuaCMS© per una maggiore 
flessibilità e fruibilità della gestione dei contenuti del sito 
formazione e framework per aziende e professionisti che vogliono approfondire le 
proprie conoscenze e innovare i propri prodotti con le ultime realtà tecnologiche del 
mondo .Net
GRAFICA 3D 
Daniele Balbini 
Senior Developer of TeamDev 
website: http://www.teamdev.it 
e-mail: d.balbini@teamdev.it
3D in WPF – Le novità (1) 
WPF opera con primitive grafiche e 
non con i singoli pixel 
Le librerie 3D sono consistenti con il 
2D: 
Stessi oggetti di riempimento (brush) 
Strumenti di trasformazione simili 
(rotazione, movimento, …)
3D in WPF – Le novità (2) 
La grafica vettoriale permette di 
scalare le interfacce in modo uniforme 
E’ differente creare oggetti 3D dal 
creare oggetti 2D con “effetto 3D”: 
Si possono calcolare effetti sull’oggetto 
(es: riflessi di luce) 
Possiamo interagire con gli oggetti 
(es.: rotazione)
3D in WPF – Accelerazione Hw 
l’antialiasing degli oggetti è 
applicato solo su Vista 
WPF classifica le capacità grafiche del 
sistema in 3 livelli detti Rendering 
Tiers 
In base alle capacità di rendering è 
possibile personalizzare la 
visualizzazione 3D
3D in WPF – Elementi base 
Gli elementi alla base della grafica 
3D di WPF sono: 
Viewport3D 
Camere 
Luci 
3D objects
3D in WPF – Viewport3D 
Viewport3D è il Container per gli 
oggetti 3D, ha due proprietà 
fondamentali: 
Camera (definisce la vista sulla 
scena) 
Children (gli oggetti 3D)
3D in WPF – 3D Object 
Non esiste una libreria di forme-base 
in WPF (cubi, sfere, cilindri,…) in rete 
eistono molti modelli già pronti. 
Un oggetto 3D, GeometryModel3D 
è composto da: 
Geometry 
Materials
3D in WPF – 3D Object 
Geometry [MeshGeometry3D] : 
combinazione più o meno 
complessa di triangoli che 
definiscono la forma dell’oggetto 
Materials : definiscono come la 
luce interagisce con il nostro 
oggetto
3D in WPF – Sorgenti luminose 
Modello semplificato della 
luce reale (per motivi di 
performance) 
Diverse fonti di luce 
(Directional, Ambient, Point, 
Spot)
3D in WPF – Camera 
Punto d’osservazione della scena 
3D 
Diversi tipi di camera: 
Perspective, Orthographic, Matrix 
Quando colloco una camera ne 
devo impostare la Posizione e la 
Direzione
3D in WPF – Trasformazioni 
Le traformazioni base sono: 
Spostamento 
(TranslateTransform3D) 
Dimensione (ScaleTransform3D) 
Rotazione (RotateTransform3D) 
Posso unire più trasformazioni 
con Transform3DGroup

WPF 4 fun

  • 2.
    Ingegnerizzare il vostrobusiness per massimizzarne il valore: realizziamo con voi e per voi soluzioni innovative per ottimizzare il vostro lavoro. sistemi informativi adatti alle esigenze del cliente, per ottimizzare e massimizzare il lavoro. Soluzioni attente alle ultime innovazioni tecnologiche e alla user experience dell’utente finale. siti dinamici ed applicativi web per il professionista, le aziende e la pubblica amministrazione, implementati con tecnologia JoshuaCMS© per una maggiore flessibilità e fruibilità della gestione dei contenuti del sito formazione e framework per aziende e professionisti che vogliono approfondire le proprie conoscenze e innovare i propri prodotti con le ultime realtà tecnologiche del mondo .Net
  • 3.
    GRAFICA 3D DanieleBalbini Senior Developer of TeamDev website: http://www.teamdev.it e-mail: d.balbini@teamdev.it
  • 4.
    3D in WPF– Le novità (1) WPF opera con primitive grafiche e non con i singoli pixel Le librerie 3D sono consistenti con il 2D: Stessi oggetti di riempimento (brush) Strumenti di trasformazione simili (rotazione, movimento, …)
  • 5.
    3D in WPF– Le novità (2) La grafica vettoriale permette di scalare le interfacce in modo uniforme E’ differente creare oggetti 3D dal creare oggetti 2D con “effetto 3D”: Si possono calcolare effetti sull’oggetto (es: riflessi di luce) Possiamo interagire con gli oggetti (es.: rotazione)
  • 6.
    3D in WPF– Accelerazione Hw l’antialiasing degli oggetti è applicato solo su Vista WPF classifica le capacità grafiche del sistema in 3 livelli detti Rendering Tiers In base alle capacità di rendering è possibile personalizzare la visualizzazione 3D
  • 7.
    3D in WPF– Elementi base Gli elementi alla base della grafica 3D di WPF sono: Viewport3D Camere Luci 3D objects
  • 8.
    3D in WPF– Viewport3D Viewport3D è il Container per gli oggetti 3D, ha due proprietà fondamentali: Camera (definisce la vista sulla scena) Children (gli oggetti 3D)
  • 9.
    3D in WPF– 3D Object Non esiste una libreria di forme-base in WPF (cubi, sfere, cilindri,…) in rete eistono molti modelli già pronti. Un oggetto 3D, GeometryModel3D è composto da: Geometry Materials
  • 10.
    3D in WPF– 3D Object Geometry [MeshGeometry3D] : combinazione più o meno complessa di triangoli che definiscono la forma dell’oggetto Materials : definiscono come la luce interagisce con il nostro oggetto
  • 11.
    3D in WPF– Sorgenti luminose Modello semplificato della luce reale (per motivi di performance) Diverse fonti di luce (Directional, Ambient, Point, Spot)
  • 12.
    3D in WPF– Camera Punto d’osservazione della scena 3D Diversi tipi di camera: Perspective, Orthographic, Matrix Quando colloco una camera ne devo impostare la Posizione e la Direzione
  • 13.
    3D in WPF– Trasformazioni Le traformazioni base sono: Spostamento (TranslateTransform3D) Dimensione (ScaleTransform3D) Rotazione (RotateTransform3D) Posso unire più trasformazioni con Transform3DGroup

Editor's Notes

  • #5 Primitive grafiche  (maggiore velocità ed efficacia) Brush  SolidColorBrush LinearGradientBrush RadialGradientBrush
  • #7 Antialiasing  per le schede grafiche che hanno drivers sel sistema operativo Rendering Tier : Rendering Tier 0: nessuna accelerazione grafica hw, DirectX < 7 Rendering Tier 1: accelerazione grafica hw parziale, DirectX 7-9 Rendering Tier 2: piena accelerazione grafica hw, DirectX > 9
  • #9 NOTA: per ottimizzare le performance in scenari 3D complessi soggetti a frequenti refresh è preferibile settare il campo ClipToBounds a false (non effettua lo stretch dell’oggetto al refresh del parent)
  • #10 GeometryModel3D  rappresenta l’oggetto 3D nella sua interezza
  • #11 Geometry NOTA: a seconda di come vengono dichiarate le sequenze dei vertici viene modificato l’orientamento della superficie (front o back) Materials 1. DiffuseMaterial (materiale piano 2. SpecularMaterial (effetto metallico o di un vetro, riflette come uno specchio) 3. EmissiveMaterial (emette una luce propri ma non riflette altri oggetti nella scena) MaterialGroup (permette di combinare più combinazioni dei 3 materiali precedenti)
  • #12 Modello semplificato della luce: La luce viene calcolata solo per i vertici dei triangoli e interpolata sul resto della superficie- Viene calcolata in modo indipendente per ogni oggetto  non vengono considerate le ombre Diversi tipi di luce DirectionalLight (direzionale, raggi paralleli provenienti dalla direzione indicata) AmbientLight (diffusa) Point Light (irradia in tutte le direzioni cominciando da un punto) SpotLight (irradia da un punto seguendo un cono)
  • #13  Tipi di telecamere: Perspective: effetto 3D classico Orthographic: preserva la scala degli oggetti a discapito della prospettiva Matrix: la renderizzazione 2D viene realizzata attraverso una matrice custom Posizionamento camera Posizione dell’osservatore Direzione dello sguardo [LookDirection], rappresentata vettore 3D
  • #14 TranslateTransform3D: definisco un vettore di spostamento (offset) Dimensione: definisco un vettore di scaling Rotazione: definisco un vettore indicante l’asse di rotazione e un valore per l’angolo di rotazione