峰顶飞龙 发表于 2013-1-3 15:38:15

wpf之3d基础

<div id="cnblogs_post_body">    关于3D方面的东西,本人只是浅尝辄止,从未曾在项目中使用过,相信有不少人也是基于一份兴趣去学习。这里将展示几个基本的WPF 3D编程,希望对初学者有一定帮助。
    为帮助理解,这里全部使用C#代码构造,而不是写在XAML中,有兴趣的可以在这里下载源代码。下面来先看下几个效果图。   
http://pic002.cnblogs.com/images/2012/274719/2012112915533851.jpg         http://pic002.cnblogs.com/images/2012/274719/2012112915540251.jpg

http://pic002.cnblogs.com/images/2012/274719/2012112915550148.jpg      http://pic002.cnblogs.com/images/2012/274719/2012112915552464.jpg      http://pic002.cnblogs.com/images/2012/274719/2012112915554748.jpg

      下面就第一幅效果图做个基本的讲解。
      3D有三个重要元素,模型、灯光、视野。那我们现实来对比,我们要看到一个物体,首先这个物体要存在(即要构造一个模型),其次需要有灯光照在这个物体上(即要构造一个灯光,还要将灯光照在这个模型上,不然就看不见模型),然后我们要有视野,要用眼睛去看(就是说我们还要构造一个视野,而且模型要在这个视野中才能看的到)。
      而模型则有两部分组成,网格和纹理(附在材质上)。网格即为骨架,纹理为皮肤,二者缺一不可。网格由许许多多的三角形构成,下面的代码向你展示如何构造一个WPF 3D模型。
      由12个三角形构成一个立方体网格。
<div class="cnblogs_code">MeshGeometry3D meshg = new MeshGeometry3D();Point3DCollection pc = new Point3DCollection();pc.Add(new Point3D(-10,10,0));pc.Add(new Point3D(10,10,0));pc.Add(new Point3D(10,-10,0));pc.Add(new Point3D(-10,-10,0));pc.Add(new Point3D(-10,10,-10));pc.Add(new Point3D(10,10,-10));pc.Add(new Point3D(10,-10,-10));pc.Add(new Point3D(-10,-10,-10));meshg.Positions = pc;Int32Collection ic = new Int32Collection();ic.Add(0);ic.Add(2);ic.Add(1);ic.Add(0);ic.Add(3);ic.Add(2);ic.Add(4);ic.Add(6);ic.Add(5);ic.Add(4);ic.Add(7);ic.Add(6);ic.Add(4);ic.Add(3);ic.Add(0);ic.Add(4);ic.Add(7);ic.Add(3);ic.Add(5);ic.Add(2);ic.Add(1);ic.Add(5);ic.Add(6);ic.Add(2);ic.Add(4);ic.Add(1);ic.Add(5);ic.Add(4);ic.Add(0);ic.Add(1);ic.Add(7);ic.Add(2);ic.Add(6);ic.Add(7);ic.Add(3);ic.Add(2);meshg.TriangleIndices = ic;
页: [1]
查看完整版本: wpf之3d基础