nel precedente post eravamo rimasti al sistema di coordinate, è il momento di aprire la finestra sulla terza dimensione, e la chiave per farlo (oggi sono particolarmente poetico) è la classe Viewport3D (namespaces System.Windows.Controls).
senza analizzire nel dettaglio proprietà e metodi andiamo al sodo, e nel nostro file XAML, aggiungiamo:
<Viewport3D> ... </Viewport3D>
Viewort3D è un controllo al pari (si fa per dire) di una DropDownList, e senza elementi al suo interno serve a ben poco :)
andiamo a vedere in dettaglio alcune proproetà del controllo in particolare Viewport3D.Camera e Viewport3D.Models, come lascia intuire il nome, Camera imposta la telecamera con la quale la nostra scena verrà ripresa, le proprietà della telecamera al pari di qualsiasi altro oggetto in Avalon può essere animata (lo vedremo più avanti, molto più avanti :)), attualmente sono disponibili PerspectiveCamera, MatrixCamera e ProjectionCamera ma queste di quì alla versione finale potrebbero cambiare (se non ricordo male una di queste telecamete ha già di fatto cambiato nome :)).
Viewport3D.Models è il contenitore per gli oggetti, siano questi piani, cubi o geometrie più complesse , dentro la collezione Models trovano posto anche le luci, decisione che trovo discutibile, ma questo forse a causa del mio passato da grafico, vedevo meglio le luci come una collezione esposta tramite una proprietà di Viewport3D al pari di Models, qualcosa come Viewport3D.Light, ma per adesso le nostre luci si trovano nella proprietà Models.
<Viewport3D> <Viewport3d.Camera> ... </Viewport3D.Camera> <Viewport3d.Models> ... </Viewport3D.Models> </Viewport3D>
Vediamo per prima la collezione Models, e come sono definite le Geometry3D , le proprietà cardine sono 3, Positions, che indiaca la posizione dei vertici, TriangleIndices per specificare come collegare i vertici e formare cosi una faccia, e Normals , le normali meritano un discorso particolare, ma per ora basti sapere che vengono utilizzate dal motore di rendering di Avalon (che si basa sulle Directx) per illuminare correttamente un oggetto, prendiamo per esempio la geometria di un semplice piano (un rettangolo ma 3D :))
<GeometryModel3D> <GeometryModel3D.Geometry> <MeshGeometry3D TriangleIndices="0 1 2 0 2 3" Positions="5,0,-5 5,0,5 -5,0,5 -5,0,-5" > </MeshGeometry3D> </GeometryModel3D.Geometry> <GeometryModel3D>
i punti grossi neri sono i Point3D che abbiamo inserito, i numeri accanto rappresentano gli indici, in pratica specificando 0 1 2 coleghiamo i primi 3 vertici specificati in Positions (5,0,-5 5,0,5 -5,0,5) per formare così una faccia (in rosso) continuiamo con 0 2 3 e colleghiamo (5,0,-5 -5,0,5 -5,0,-5 ) in grassetto il vertice numero 3.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Nella stessa categoria
- .NET Framework 4.0 beta 1: WPF 4.0, il 18 maggio 2009 alle 15:40
- CTP che va SDk che trovi, il 20 luglio 2006 alle 12:15
- bye bye ScreenSpaceLines3D, il 23 giugno 2006 alle 15:04
- WinFX cambiamenti natalizzi, il 21 dicembre 2005 alle 10:56
- Avalon tutto scorre , l'8 novembre 2005 alle 15:24
- Windows Presentation Foundation, il 26 settembre 2005 alle 15:03
I più letti del mese