AVALON materiali

di Marco Leoncini, in WPF,

oggi è uno dei pochi finesettimana che passo lontano dalla mia ragazza, che strano effetto...ho colto l'occasione per continuare a studiare le caratteristiche 3D di Avalon
nel precedente post abbiamo definito una semplice geometria, più precisamente un piano formato da 4 vertici, li abbiamo uniti e impostato le normali, apro una breve parentesi sulle normali, in genere una geometria a due tipi di normali, quelle dei vertici e quelle della facce, il primo tipo viene utilizzato dal renderizzatore per determinare l'illuminazione, in particolar modo come la luce si "comporta" sui bordi della geometria ovvero se il passaggio da un bordo all'altro è graduale o no.
le normali di faccia (normalemente sono perpendicolare alla faccia stessa) determinano quale lato della geometria è visibile all'osservatore, se la normale "punta" verso la telecamera la faccia sarà visibile, altrimenti no, in Avalon da quello che ho capito (la documentazione non è ancora completa trattandosi di una beta) dovrebbere essere normali dei vertici, ma ho dei dubbi che per adesso non riesco a fugare.

ritornando alla geometria

<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D
TriangleIndices="0 1 2 0 2 3"
Positions="5,0,-5 5,0,5 -5,0,5 -5,0,-5"
Normals="0,1,0 0,1,0 0,1,0 0,1,0">
</MeshGeometry3D>
</GeometryModel3D.Geometry>
<GeometryModel3D>

in queste poche righe abbiamo creato un piano, non è un gran che ma è un inizio, per continuare occorre associare alla geometria un materiale, ovvero va "dipinta altrimenti impostare luci e telecamere ci servirà a poco :) per farlo useremo GeometryModel3D.Material (C#). la proprietà Material accetta oggetti derivati dalla classe base astratta Material, attualmente la guida parla di tre classi concrete derivate, BrushMaterial, VisualMaterial, e AdvancedMaterial, la mia ignoranza mi ha portato a trovarne solo 2 BrushMaterial, AdvancedMaterial,

partiamo da BrushMaterial,(namespaces System.Windows.Media.Media3D), è una classe molto semplice che incapsuala un tipo Brush (namespaces System.Windows.Media).
che fa da classe base un un bel numero di pennelli, come LinearGradientBrush ,RadialGradientBrush , SolidColorBrush ImageBrush e altri ancora.

<BrushMaterial>
<BrushMaterial.Brush>
<SolidColorBrush Color="Red" />
</BrushMaterial.Brush>
</BrushMaterial>

mettiamo tutto insieme per tingere di un bel rosso il nostro piano

<GeometryModel3D>

 <GeometryModel3D.Material>
<BrushMaterial>
<BrushMaterial.Brush>
<SolidColorBrush Color="Red"/>
</BrushMaterial.Brush>
</BrushMaterial>
<GeometryModel3D.Material>

 <GeometryModel3D.Geometry>
<MeshGeometry3D
TriangleIndices="0 1 2 0 2 3"
Positions="5,0,-5 5,0,5 -5,0,5 -5,0,-5"
Normals="0,1,0 0,1,0 0,1,0 0,1,0">
</MeshGeometry3D>
</GeometryModel3D.Geometry>

<GeometryModel3D>

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese