Draw a 3D Model
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="Black" Title="" Height="300" Width="300" Loaded="Window1_Loaded"> <Window.Resources> <MeshGeometry3D x:Key="triangleMesh" Positions="-1,-1,0 1,-2,-1 1,1,0" TriangleIndices="0 1 2" /> </Window.Resources> <Viewport3D x:Name="vp"> <Viewport3D.Camera> <PerspectiveCamera LookDirection="0,0,-1" Position="0,0,5" /> </Viewport3D.Camera> <ModelVisual3D> <ModelVisual3D.Content> <PointLight Position="0,-1,1" Color="White" /> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D> </Window> //File:Window.xaml.cs using System.Windows; using System.Windows.Media; 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"); for (int i = 0; i < 4; i++) { ModelVisual3D modelVisual3D = new ModelVisual3D(); GeometryModel3D geometryModel3D = new GeometryModel3D(); geometryModel3D.Geometry = triangleMesh; geometryModel3D.Material = new DiffuseMaterial(Brushes.Firebrick); modelVisual3D.Content = geometryModel3D; RotateTransform3D rotateTransform = new RotateTransform3D(); rotateTransform.Rotation = new AxisAngleRotation3D(new Vector3D(0, 0, -1),i * 40); modelVisual3D.Transform = rotateTransform; vp.Children.Add(modelVisual3D); } } } }