<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="300" Loaded="Window1_Loaded">
<Window.Resources>
<MeshGeometry3D x:Key="triangleMesh" Positions="-1,-1,0 1,-1,-2 1,1,0" TriangleIndices="0 1 2" />
</Window.Resources>
<UniformGrid>
<Viewport3D x:Name="vp1">
<Viewport3D.Camera>
<PerspectiveCamera LookDirection="0,0,-1" Position="0,0,5" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<SpotLight
Range="10"
Direction="0,0,-1"
OuterConeAngle="25"
InnerConeAngle="20"
Position="0,0,9"
LinearAttenuation="0.1"
Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</UniformGrid>
</Window>
//File:Window.xaml.cs
using System.Windows;
using System.Windows.Controls;
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");
CreateTriangles(vp1, 4, triangleMesh);
}
private void CreateTriangles(Viewport3D viewport3D,int triangleCount, MeshGeometry3D triangleMesh)
{
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), 20);
modelVisual3D.Transform = rotateTransform;
viewport3D.Children.Add(modelVisual3D);
}
}
}