WPF 3D

参考MSDN内容:http://msdn.microsoft.com/zh-cn/library/ms747437(v=vs.110).aspx

概述

WPF使用Viewport3D元素,将三维场景显示在二维的平面上。

三维坐标系

由于WPF 3D归根结底是要用Open GL一类的底层三维函数库(可能是Direct X)来实现,因此关于三维场景下的术语和概念都是互通的。

可以参考http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Chapter-1:-The-Graphics-Pipeline.html来了解一下Open GL的图形管线。

 

投影

通过指定一个Camera,可以规定如何将三维场景投影到二维平面上,有两种不同的Camera:

   1: OrthographicCamera //正投影
   2: PerspectiveCamera //透视投影

模型和网格基元

正如上面所说,WPF 3D的很多概念都与Open GL是一致的,比如下面所说的

   1: Normals
   2: TriangleIndices
   3: TextureCoordinates

   1: <GeometryModel3D>
   2:   <GeometryModel3D.Geometry>
   3:           <MeshGeometry3D 
   4:               Positions="-1 -1 0  1 -1 0  -1 1 0  1 1 0"
   5:               Normals="0 0 1  0 0 1  0 0 1  0 0 1"
   6:               TextureCoordinates="0 1  1 1  0 0  1 0   "
   7:               TriangleIndices="0 1 2  1 3 2" />
   8:       </GeometryModel3D.Geometry>
   9:       <GeometryModel3D.Material>
  10:           <DiffuseMaterial>
  11:               <DiffuseMaterial.Brush>
  12:                   <SolidColorBrush Color="Cyan" Opacity="0.3"/>
  13:               </DiffuseMaterial.Brush>
  14:           </DiffuseMaterial>
  15:       </GeometryModel3D.Material>
  16:   <!-- Translate the plane. -->
  17:       <GeometryModel3D.Transform>
  18:           <TranslateTransform3D
  19:             OffsetX="2" OffsetY="0" OffsetZ="-1"   >
  20:           </TranslateTransform3D>
  21:       </GeometryModel3D.Transform>
  22:   </GeometryModel3D>
posted @ 2013-11-13 14:15  Daniel King  阅读(482)  评论(0编辑  收藏  举报