根据Mesh生成Cage的心路历程(4)
2010-01-29 13:54
183 查看
下面开始描述我是怎么样去实现方法五的。
根据我目前掌握的知识,和实验室已知的编程条件,方法五我需要以下三个过程:
(1) 在CGAL框架下生成GPU的绘制数据。
对原Mesh的每个面生成局部坐标系;
由局部坐标系形成面的OBB包围盒Shell;
Shell划分为5个Tetrahedron;
根据离散化规格沿Z轴产生等距的Slice,每个Slice与Tetrahedron产生的交点即为GPU的输入顶点数据流。
Cylinder内部看
(2) GPU绘制
根据得到的顶点数据流,以及距离计算函数对每个切片数据进行绘制。绘制的过程其实一直都是有问题的,个中的原因我也说不清楚,只是知道结果是不正确的。
直到这个图才有了点成功的迹象~
对深度计算方法进行调整好以后才出现了自己想要的结果。以下是三个连续的切片。从整体上来看数据还是好的,但是最遗憾的就是中间的黑色部分出现了间断。
由于vtk处理的数据是8或24位的,而D3D的函数默认生成bmp图是32位的。这里幸亏张大帮忙,并提醒我用opencv来解决。Opencv不错,用起来挺方便的,建议数字图像处理的人用。
生成的64x64的8位灰度图如下:
(3) VTK根据切片数据,由2D的bmp图片生成3D网格模型
上图为GPU的绘制结果,通过vtk(Visualization Toolkit)绘制的结果。
vtkBMPReader *reader = vtkBMPReader::New(); reader->SetFilePrefix("D://cylinder/");
reader->SetFilePattern("%s%d.bmp");
reader->SetDataByteOrderToLittleEndian();
reader->SetDataSpacing(1, 1, 3);
reader->SetFileNameSliceSpacing(1);
reader->SetDataExtent(0, 63, 0, 63, 1, 50);
reader->Allow8BitBMPOn();
reader->Update();
生成了STL文件格式,然后再使用3ds Max进行obj文件格式转换。
比较郁闷的是网格模型竟然是双层的,不知道是什么原因啊?还好我的Deformation框架可以把文件读进来啊。
到现在,我的工作也可以说是到了一个段落了。接下来怎么改?迷茫~~
根据我目前掌握的知识,和实验室已知的编程条件,方法五我需要以下三个过程:
(1) 在CGAL框架下生成GPU的绘制数据。
对原Mesh的每个面生成局部坐标系;
由局部坐标系形成面的OBB包围盒Shell;
Shell划分为5个Tetrahedron;
根据离散化规格沿Z轴产生等距的Slice,每个Slice与Tetrahedron产生的交点即为GPU的输入顶点数据流。
Cylinder内部看
(2) GPU绘制
根据得到的顶点数据流,以及距离计算函数对每个切片数据进行绘制。绘制的过程其实一直都是有问题的,个中的原因我也说不清楚,只是知道结果是不正确的。
直到这个图才有了点成功的迹象~
对深度计算方法进行调整好以后才出现了自己想要的结果。以下是三个连续的切片。从整体上来看数据还是好的,但是最遗憾的就是中间的黑色部分出现了间断。
由于vtk处理的数据是8或24位的,而D3D的函数默认生成bmp图是32位的。这里幸亏张大帮忙,并提醒我用opencv来解决。Opencv不错,用起来挺方便的,建议数字图像处理的人用。
生成的64x64的8位灰度图如下:
(3) VTK根据切片数据,由2D的bmp图片生成3D网格模型
上图为GPU的绘制结果,通过vtk(Visualization Toolkit)绘制的结果。
vtkBMPReader *reader = vtkBMPReader::New(); reader->SetFilePrefix("D://cylinder/");
reader->SetFilePattern("%s%d.bmp");
reader->SetDataByteOrderToLittleEndian();
reader->SetDataSpacing(1, 1, 3);
reader->SetFileNameSliceSpacing(1);
reader->SetDataExtent(0, 63, 0, 63, 1, 50);
reader->Allow8BitBMPOn();
reader->Update();
生成了STL文件格式,然后再使用3ds Max进行obj文件格式转换。
比较郁闷的是网格模型竟然是双层的,不知道是什么原因啊?还好我的Deformation框架可以把文件读进来啊。
到现在,我的工作也可以说是到了一个段落了。接下来怎么改?迷茫~~
相关文章推荐
- 根据Mesh生成Cage的心路历程(3)
- 根据Mesh生成Cage的心历路程(2)
- 根据Mesh生成Cage的心历路程(1)
- 【C++心路历程28】 奇葩次小生成树
- 一篇关于了解generatorConfig自动生成model,dao包的心路历程
- 根据SQL语句生成文本文件
- Interpreter 根据定义的一组合成规则,可以利用解释器模式生成可执行对象
- ASP.NET根据URL动态生成静态页面
- [jQuery插件开发][dynamicTable2.0]根据JSON数据自动生成HTML Table
- 递归函数应用:根据树结点id,结点内容,父结点id,生成XML格式字符串
- 根据C#类的注释,生成API文档
- birt中根据两个表的差别生成一个饼图
- PowerDesigner反向工程,根据数据库结构生成ER图(Oracle)
- 根据avc log自动生成selinux策略
- 根据Url地址生成静态页C#--生成静态首页
- 如何在页面中根据输入的内容自动生成二维码
- gooogleman的心路历程 (转自gooogleman)
- 根据xsl模板及xml数据文件生成pdf(文字内容复制不乱码)
- T4系列文章之四:根据SqlServer生成实体类
- Java反射机制根据实体生成SQL