Mega Code Archive

 
Categories / C# / WPF
 

Diffuse Material

<Window x:Class="WpfApplication1.Window1"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="" Height="300" Width="800" Loaded="Window1_Loaded">     <Window.Resources>         <MeshGeometry3D       x:Key="triangleMesh"       Positions="-1,-1,0 1,-1,-2 1,1,0"        TriangleIndices="0 1 2" />         <DiffuseMaterial x:Key="diffuseMaterial" Brush="Firebrick" />         <MaterialGroup x:Key="specularMaterial">             <StaticResource ResourceKey="diffuseMaterial" />             <SpecularMaterial          Brush="White"          SpecularPower="5" />         </MaterialGroup>         <MaterialGroup x:Key="emissiveMaterial">             <StaticResource ResourceKey="diffuseMaterial" />             <EmissiveMaterial Color="Yellow" />         </MaterialGroup>     </Window.Resources>     <Viewport3D x:Name="vp1">         <Viewport3D.Camera>            <PerspectiveCamera LookDirection="0,0,-1" Position="0,0,5" />         </Viewport3D.Camera>         <ModelVisual3D>             <ModelVisual3D.Content>                 <PointLight Position="0,-1,2" Color="White" />             </ModelVisual3D.Content>         </ModelVisual3D>     </Viewport3D> </Window> //File:Window.xaml.cs using System.Windows; using System.Windows.Controls; using System.Windows.Media.Media3D; namespace WpfApplication1 {     public partial class Window1 : Window     {         public Window1()         {             InitializeComponent();         }         private void Window1_Loaded(object sender, RoutedEventArgs e)         {             MeshGeometry3D triangleMesh= (MeshGeometry3D)TryFindResource("triangleMesh");             CreateTriangles(vp1, 4, triangleMesh,(Material)TryFindResource("diffuseMaterial"));         }         private void CreateTriangles(Viewport3D viewport3D,int triangleCount, MeshGeometry3D triangleMesh,Material material)         {              ModelVisual3D modelVisual3D = new ModelVisual3D();              GeometryModel3D geometryModel3D = new GeometryModel3D();              geometryModel3D.Geometry = triangleMesh;              geometryModel3D.Material = material;              modelVisual3D.Content = geometryModel3D;              RotateTransform3D rotateTransform= new RotateTransform3D();              rotateTransform.Rotation = new AxisAngleRotation3D(new Vector3D(0, 0, -1),90);              modelVisual3D.Transform = rotateTransform;              viewport3D.Children.Add(modelVisual3D);         }     } }