前言:
本人在这方面也是了解皮毛,因此里面一些内容可能存在错误;
自己的代码风格不佳,效率不好,如有看不下去的还请见谅。
0.他山之石
学习过程中借鉴下载了很多资源先公布一些(附下载地址):
三维相关一章
http://pan.baidu.com/share/link?shareid=233384&uk=3859191502
共享的所有资源文件夹
(里面有很多电子书籍,说实在的算是盗版,作为IT民工本人盗版狂人版权意识太差,不做推荐,看不下去的请提示我删除,谢谢,对原作者们说声sorry)
(为什么有这么两个链接呢,因为算是初次在这里使用共享,因此将文件上传到了百度yun,一开始也只想到了一个个文件的共享后来发觉可以共享文件夹,然后!没得说啊)
(里面有一个“WPF 3D实例安装程序”强烈推荐安装,安装后里面有许多WPF3D实例可以学习参考,很实用效果可以安装后用浏览器打开!)
http://pan.baidu.com/share/link?shareid=233388&uk=3859191502
1.天地之初
由于程序中需要用到针对序列图像轮廓点进行三维重建,因此学习了一些三维开发的基本概念。
在说了解的图像开发库中,Direct3D、OpenGL是比较成熟、功能强大的,不过相对来说其也拥有一定开发复杂度,
鉴于实验室师兄有用WPF进行过一个三维展示的实验,而本人当时感觉自己说需要的三维功能也是很基础的三维显示功能,
同时WPF三维制作具有这一能力,是基于D3D的封装(D3D本就是微软技术),在此基础上进行了一些简化,因此相对来说
学习、使用的速度较快,于是选择了WPF(当然后来改用VTK,此乃后话)。
WPF中3D绘图可以使用XAML也可以在CS页面中定义或者使用混合设置的方法。
对于XAML方法,网上的例子大多是这种模式,也就是单一的一个xaml页面生成了说要显示的模型、动画等。但这需要事先就把所有该设置的值都求取出来。
如果用CS方式就跟定义变量一样,先定义个变量,再用算法生成值再赋值给她之类。
WPF3D基本要素有(其他三维开发库要素应该也是一致的):
Geometry-Geometry定义了在屏幕中所要显示的物体及其位置。
Camera-就跟人类视野一样,camera决定了你观察物体的位置以及角度。
Lighting-关上灯神马都一样,光明的影响不用多解释。但Light的类型、位置、颜色等在不同的场景下会有迥异的效果。
Materials-物体外观通常由灯光以及物体本身材质Materials说决定,比如说物体本身是白色的,用红色光照射or物体本身是红色的,用白色光照射之类。