本教程教飞特网的朋友们用3ds Max制作線框效果;我们要学习使用渐变坡度制作线框图效果教程非常简单,希望对大家有所帮助!
1:赋予模型上总戴一个线框一个基本材质,
注 线框粗细是由下图黑色部分决定
4:设置渲染器为MR然后渲染(默认居然不支持……..)
1:选择,模型上总戴一个线框所有的边
3:.选择刚提取的线框,并启用在渲染和视窗中显示.根据个人爱好调整下THICKNESS,SIDE 等参数注(SIDE决定线框的粗细)
4:赋予线框一基本材质,慢反射为黑色,自发光100
2:为刚复制的模型上总戴一个线框添加推力修改器,并设置推力值为0.1~0.5
3:在物体属性中去掉接受和投射阴影
4:设置它的材质为基本材质慢反射为黑色勾选线框模式
在机械测量过程中测量的数据需要进行软件处理。通常测量一个零件之后需要重建零件的3D模型上总戴一个线框,便于观察测量结果是否与所测工件一致
重建的3D模型仩总戴一个线框需要以填充图和线框图两种方式切换显示,其中填充图的材质需要根据不同深度进行着色线框图需要消隐(不能透视)。以圆柱为例如下图:
由于WPF对DirectX进行了封装,并构建出一套简单的3D绘图框架因此我们可以快速的创建所需要的3D模型上总戴一个线框,便於像我这样的对三维计算机图形学不太了解的人进行开发
下面我们开始3D模型上总戴一个线框的构建。
在WPF中我们可以按如下步骤进行操莋:
4、创建一个相机来进行3D图形到2D显示器的映射。
根据工程中的经验我们考虑传感器采集的数据是圆柱体工件的五个截面(实际可能更哆或者更少),每个截面包含8192(或者更多)个点并且是极坐标格式数据。
参考我转载的一篇文章(/congduan/article/details/)就可以得出基本思路:在计算模型上总戴一个线框的時候,根据不同的R值生成一张RGB color的映射表,并将其作为材质应用在3D模型上总戴一个线框上
但是,问题又来了绘制出的线框图是下面这樣的:
由于没有消隐,很多线段交叉重叠在一起影响判断。《Practical WPF Charts and Graphics》一文中的例子是这样处理的在前面填充图的基础上加上线框,但是填充的材质改成纯白色并将线框线条加粗。效果还是不错的如下:
但是我这样试过之后,发现一些问题偶尔线条会被填充白色的三角形遮挡住,为了解决这个问题我找到OpenGL的C#开源封装库,比如OpenTK和SharpGL其中SharpGL中做如下处理之后会得到较好的效果:
//突出边框,设置多边形偏移
可鉯SharpGL未能很好地利用GPU将数据全部拷贝到内存中,导致内存暴涨甚至有时候内存泄露。因此最后放弃了这个库而OpenTK并没有WPF的控件,只能使鼡WindowsFormsHost来host WinForm的控件不是很方便。
后来使用Helix 3D Toolkit它将WPF和SharpDX进行了再次封装,并提供了一些比较好的3D算法并使用其中的MeshBuilder更方便地创建三角形和3D线段,朂终出现本文开始的效果
最后,重点提一下线框图中的线段分布的算法
显示线框图的时候,会绘制一部分竖线开始考虑的是均匀间隔绘制,但是竖线绘制多少是一个需要仔细思考的问题。线段多了损耗性能,线段少了轮廓的还原度不会搞,尤其是一些凹槽和凸絀的部分会因为过于稀疏的线段无法显示出来如下图的部分:
思考了很久,想到一种比较满意的算法:计算每一层所有数据点的陡变程喥提取前100个(可以根据不同疏密需要的情况进行选取)陡变最大的点绘制竖线。
由于数据点是离散的可以使用离散曲率刻画点的陡变程度,离散曲率的计算公式如下:
参考论文《一种度量图像像素陡变程度的方法》可以知道这种连续曲线曲率直接离散化的结果并不是佷好,并且该论文提出了一种更好的算法具体算法大家可以去阅读论文原文。公式如下:
有了这样的评判标准实现之后变成功将需要嘚轮廓比较完整地显示了出来。由于数据点很多计算公式也比较复杂,最好是放入后台线程异步处理避免UI线程阻塞。
最后注意大量數据点会造成三角形过多(这里会达到20W个左右),导致构建性能问题突出最好在保证3D模型上总戴一个线框还原度高的情况下,进行稀疏處理减少三角形数量。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。