How to draw a 3D Model in WPF

In this article i will show you how to create a 3D Model in WPF Application.
  • 4085

In the world of 3D graphics, all objects are described by a set of triangle. The basic thinking behind creating a 3D graphics is to have a three dimensional model of an object.

A surface of a 3D object is called a mesh which is defined by a number of 3D points. These points are called vertices. The vertices are joined together by a winding pattern to define the triangles. Every triangle has a front and a back side. Only the front side is rendered. Now the following example shows how to create a  3D Model in WPF Application.

<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>
      <Viewport3D x:Name="vp">
        <Viewport3D.Camera>
          <PerspectiveCamera LookDirection="0,0,-1" Position="0,0,5" />
        </Viewport3D.Camera>
        <ModelVisual3D>
       <PointLight Position="0,-1,1" Color="white" />
      </ModelVisual3D.Content>
    </ModelVisual3D>
  </Viewport3D>
</Window>

Imports System.Windows
Imports System.Windows.Media
Imports System.Windows.Media.Media3D
Namespace WpfApplication1
    Partial Public Class Window1
        Inherits Window
        Public Sub New()
            InitializeComponent()
        End Sub
        Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim triangleMesh As MeshGeometry3D = DirectCast(TryFindResource("triangleMesh"), MeshGeometry3D)
            For i As Integer = 0 To 3
                Dim modelVisual3D As New ModelVisual3D()
                Dim geometryModel3D As New GeometryModel3D()
                geometryModel3D.Geometry = triangleMesh
                geometryModel3D.Material = New DiffuseMaterial(Brushes.Firebrick)
                modelVisual3D.Content = geometryModel3D
                Dim rotateTransform As New RotateTransform3D()
                rotateTransform.Rotation = New AxisAngleRotation3D(New Vector3D(0, 0, -1), i * 40)
                 modelVisual3D.Transform = rotateTransform
               vp.Children.Add(modelVisual3D)
            Next
        End Sub
    End Class
End Namespace

A Sample 3D Model

3d.gif

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.