STL文件的读取显示

合集下载

10种仿真文件格式介绍 -回复

10种仿真文件格式介绍 -回复

10种仿真文件格式介绍-回复关于仿真文件格式的介绍仿真文件格式是用于存储和交换仿真数据的特定文件格式。

它们在许多领域的仿真和建模应用中具有重要作用,包括工程、科学、计算机图形学等。

本文将介绍10种常见的仿真文件格式,并逐步回答与其相关的问题。

1. STL(Standard Tessellation Language)格式:STL格式主要用于存储三维模型的表面几何信息。

它将模型分解为小的三角形面片,并存储每个面片的顶点坐标和法线方向。

常用于3D打印、计算机辅助设计等领域。

以下是一些关于STL格式的常见问题:- STL格式有哪些变体?STL格式主要包括ASCII和二进制两种变体。

ASCII格式以文本形式存储,可读性强,但文件体积较大;而二进制格式通过使用二进制编码来存储数据,文件体积较小,但不易直接阅读。

- 如何读取和写入STL文件?读取STL文件的方法是解析文件中的顶点坐标和法线信息,并创建相应的三角形表面。

写入STL文件的方法是将三角形表面的顶点坐标和法线信息写入文件。

2. STEP(Standard for the Exchange of Product model data)格式:STEP格式是一种规范化的3D模型数据交换格式,广泛应用于CAD/CAM 领域。

它以中性的方式存储了完整的产品模型信息,并支持多种几何和非几何数据类型。

以下是一些关于STEP格式的常见问题:- STEP文件包含哪些数据?STEP文件包含模型的几何信息、拓扑信息、材料属性、装配关系、注释等多种数据。

- 如何解释和使用STEP文件的数据?解释和使用STEP文件的数据通常需要使用专门的CAD或CAD/CAM软件。

这些软件可读取STEP文件,并将其转换成可编辑的几何和非几何数据。

3. VTK(Visualization Toolkit)格式:VTK格式是一种用于科学可视化和图像分析的文件格式。

它支持多种数据类型,包括网格数据、图像数据、分子数据等。

Magics RP 指南

Magics RP 指南

Magics RP 教程该教程介绍了一些Magics RP 的工具。

使用该教程将使用户更快的了解和使用本软件。

一、视图和测量visualization and measuring目测教程所使用的文件是在目录../Magics RP .../demo_files 下的文件“Good.stl”。

打开文件可以用快捷键‘Ctrl + L’或按按钮。

这时也可以到网上浏览,查找STL格式的文件。

图1-1一个文件可以有不同的显示方式(在View 工具栏里)。

图1-2试用这些模式。

用'F4'键或图标可以控制视角。

在零件上托动鼠标可以看到零件是如何旋转的。

当指针接近窗口中心时,指针将会变成四角箭头形状,指针的移动将转变为零件绕屏幕的轴转动。

当指针靠近窗口边界时,指针将变成圆弧箭头形状,零件就可以绕垂直于屏幕的轴转动。

用户同样可以按住鼠标右键来旋转零件。

要快速定位可以用默认的视图。

该图标可以在view 工具栏中的Rotate标签下找到。

本软件预设了七种默认视图:主视、后视、左视、右视、俯视、仰视和ISO视图。

这些视图可通过点击某一个箭头来切换(当指针移过箭头时箭头会高亮显示)。

当立方体的所有边界都高亮显示时就选中了ISO视图(在紫色区域内点击,或在边界上点击)。

使用图标,用户可以在窗口平面内托动零件移动(按住鼠标左键不放)。

该功能也可以通过以下方法实现:菜单Main Menu/View/Pan 或用快捷键'Alt + M'。

或同时按着鼠标右键+SHIFT。

可以用SECTIONS 指令来检查零件内部。

Sections 指令在view工具栏下的Sections标签内。

图1-3用户可以在垂直于X、Y和Z轴方向上取得截面。

用户可以隐藏前面部分并让零件挖空显示。

二、修改STL文件的“远程控制”Fixing STL Files "remote control"修改远程控制本教程主要介绍一些STL修改工具。

UG软件STL数据使用说明

UG软件STL数据使用说明

UG软件STL格式数据使用说明
五、面导角
选中
导角的 半径
UG软件STL格式数据使用说明
五、面导角
导角的效 果
UG软件STL格式数据使用说明
六、总结
STL面的意思:STL面的数据其实是由无数组三个点连成面的和集;也叫STL三角面。 STL面的优点:STL面的好处是数据量比海量的点云数据小,它多能反映的物体的 特征比点云要清晰并且渲染效果好,使用方便。 在UG里面使用点构造器里面的在面上的选项,可以使我们很方便的在STL数据上 取得我们要的数据;结合截面的功能可以很方便的在STL数据上做截面线;将截 面线重构成曲线以后通过拉伸,扫掠来得到曲面,最后加厚成。
三、通过所获得截面做线
选择插入菜单曲线下 样条曲线命令来做一 跟曲线
UG软件STL格式数据使用说明
三、通过过所获得截面做线
点击样条命令以后选择通过 点选项来做下一步操作
UG软件STL格式数据使用说明
三、通过所获得截面做线
接着选择点构造器命令
UG软件STL格式数据使用说明三、通过所获得截面做线
此选择项类似 于UGII的点构 造器
选中右边 的STL数据
选择三个点做一个 用于坎截面的平面
关联选项取消选择
UG软件STL格式数据使用说明
二、在STL三角面上做截线
对象选择过滤器, 也称点构造器
这个选项叫做在面 上,选中它就可以 在导入的STL数据上 取数据了
所砍截面的效果 选中在面上, 直接在STL数 据上点击获得 相应的位置。
UG软件STL格式数据使用说明
UG软件STL格式数据使用说明
四、通过线得到面
如图通过插 入菜单的扫 略沿引导线 扫略命令绘 制曲面

海量STL文件的快速读取与显示

海量STL文件的快速读取与显示

第25卷2006年第8期8月机械科学与技术MECHAN I CAL SC I E NCE AND TECHNOLOGY Vol .25August No .82006收稿日期:20050902基金项目:国家自然科学基金项目(50475041),霍英东教育基金高校青年教师基金项目(91053),教育部优秀青年教师教学科研奖励计划资助作者简介:卫 炜(1972-),男(汉),江苏,博士研究生E 2mail:mee wwei@nuaa .edu .cn卫 炜 文章编号:100328728(2006)0820935204海量ST L 文件的快速读取与显示卫 炜,周来水,张丽艳(南京航空航天大学C AD /CAM 工程研究中心,南京 210016)摘 要:ST L 文件作为一种通用的三维数据文件格式,广泛应用于快速成型及其他领域。

如何快速读取海量数据的ST L 文件并显示,是模型后续操作的一个首要环节。

本文针对海量数据的特点,采用内存映射手段、基于哈希表结构的冗余顶点删除和OpenG L 中显示列表技术等,对海量ST L 文件的快速读取和显示进行了研究,并和国外先进软件进行了比较,实验数据表明本文方法较Surfacer 软件和Rap idFor m 软件提高效率25%~40%左右。

关 键 词:ST L 文件;海量数据;图形显示中图分类号:TP391 文献标识码:ARap i d STL F ile L oad i n g and V isua li za ti onW eiW ei,Zhou Laishui,Zhang L iyan(CAD /CAM Research Center,Nanjing University of Aer onautics and A str onautics,Nanjing 210016)Abstract:A s a general three 2di m ensi onal data file f or mat,stereo lithographic (ST L )files have been widely used in rap id p r ot otyp ing syste m s and many other fields .How t o l oad and visualize ST L files rap id 2ly is key t o subsequent model mani pulati on .According t o the characteristics of massive data,me mory mapp ing and Hash table 2based method f or deleting redundancy vertex fast in ST L files and OpenG L dis 2p lay lists have been used t o accelerate the l oading and visualizati on .Experi m ent shows that the p r oposed method is 25%~40%more efficient than the commercial s oft w are packages Surfacer and Rap idFor m.Key words:ST L file;massive data;visualizati on ST L (stereo lithographic )文件格式由3D Syste m s 公司于1987年推出,采用三角形面片离散地近似表示三维模型,目前已成为快速原型技术领域最为常用的文件格式和事实上的接口标准,在逆向工程、有限元分析、医学成像系统、文物保护等方面有广泛的应用。

STL文件读取显示与操作

STL文件读取显示与操作

2 基 于 Op n e GL的 S L模 型 的读 取 与 T
显 示
21 . Op n e GL概述
gNo maBd n ,ln ) l r l (0n ,2 ;
gV r x dv 0v 1v 2 ; l et 3 (0 , ,0 ) e 0
gVetx d v 0v lv 2 ; l re 3 ( l , l ,1 ) gVetx d v 0v 1v 2 ; l re 3 (2 ,2 ,2 ) gEn 0; l d



_
Tr n lt X =d g m X + m Tr nsae ; a sae i . a ]t X
_ _
_
Tr nsae : di m Y + m a l t Y ; a lt Y g. Tr ns a e
_
n_ ' n ltZ:dg m_ l1 a sae r l. Z+m a s tZ; Trn l e a I v l ae n ai tO; d
】 }
< >定 向定 量旋 转 : 2
v i T ViweViw: ViwRo ae odCS L e r e : On e tt0 {
向量 { , , ) nn n 与三角形三个 顶点( ,) 。 xYZ 满足右手定
0 引 言
目 , 前 机器人施釉 已经在陶瓷领 域有所应用 , 然
而, 在施 釉 作 业 中 , 釉 机 器人 喷枪 运 动 轨 迹 的 生产 施

则: 即右 手 环握 三 角形 , 四指 指 向 三 角形 顶 点 的排 序 方向 , 则拇指 所 指方 向 即为 该三 角 形面 片的 法矢 量方 向 。 根 据 数 据 存 储 方 式 的 不 同 ,T S L文 件 可 分 为

opencascade中stlreader实现方法

opencascade中stlreader实现方法

我们需要了解什么是 OpenCASCADE 和 STLReader。

OpenCASCADE 是一个开源的三维几何建模内核,它提供了一组用于处理和呈现三维几何数据的工具和函数。

STLReader 是OpenCASCADE 中的一个模块,用于读取和解析 STL 文件,STL 文件是一种常见的三维模型文件格式,它由许多小的三角形面片组成,用于描述物体的几何形状。

接下来,我们将介绍如何在 OpenCASCADE 中使用 STLReader 模块来实现 STL 文件的读取和处理。

1. 引入头文件我们需要在我们的代码中引入 OpenCASCADE 中与 STLReader 相关的头文件。

这可以通过以下代码实现:```cpp#include <StlAPI_Reader.hxx>```2. 创建 STLReader 对象接下来,我们需要创建一个 STLReader 对象,这可以通过以下代码实现:```cppStlAPI_Reader reader;```3. 打开 STL 文件接下来,我们需要打开我们要处理的 STL 文件。

这可以通过以下代码实现:```cppreader.ReadFile("example.stl");```4. 获取三角形面片数据一旦我们成功地打开了 STL 文件,我们就可以使用 STLReader 对象来获取其中的三角形面片数据。

这可以通过以下代码实现:```cppTopoDS_Shape shape = reader.Shape();```5. 处理三角形面片数据我们可以对获取到的三角形面片数据进行进一步的处理,比如计算其表面积、体积,或者进行网格简化等操作。

我们可以看出,在 OpenCASCADE 中,使用 STLReader 模块来实现STL 文件的读取和处理非常简单。

通过一系列的操作,我们可以轻松地将一个 STL 文件中的几何信息导入到我们的程序中,并进行进一步的处理和分析。

读取STL文件模型

读取STL文件模型

读取STL⽂件模型STL是CAD软件中出来的⼀种3D模型⽂件格式,已经解释的很清楚了。

STL⽂件两种格式,ASCII STL和Binary STL。

ASCII STL,每⼀个facet由7⾏数据组成,outer loop后⾯三个顶点的顺序沿法线⽮量逆时针排序,格式如下:solid name // ⽂件名及⽂件路径facet normal ni nj nk // 三⾓形法向量的三个分量outer loopvertex v1x v1y v1z // 第⼀个顶点坐标vertex v2x v2y v2z // 第⼆个顶点坐标vertex v3x v3y v3z // 第三个顶点坐标endloopendfacet // 完成⼀个三⾓形的定义endsolid name // 整个⽂件结束Binary STL,起始有80个字节⽂件头⽤于存储⽂件名,紧接4个字节表⽰三⾓形数量,⽽每个三⾓⾯⽚占⽤固定的50个字节,3个4字节浮点数(法线⽮量),3个4字节浮点数(第⼀个顶点坐标),3个4字节浮点数(第⼆个顶点坐标),3个4字节浮点数(第三个顶点坐标),接着2个字节描述三⾓形基本属性,那么⼀个完整的⼆进制STL⽂件的字节⼤⼩就是三⾓形⾯数乘50再加上84字节,格式如下:UINT8[80] – Header // ⽂件头UINT32 – Number of triangles // 三⾓形数量foreach triangleREAL32[3] – Normal vector // 法线⽮量REAL32[3] – Vertex 1 // 第⼀个顶点坐标REAL32[3] – Vertex 2 // 第⼆个顶点坐标REAL32[3] – Vertex 3 // 第三个顶点坐标UINT16 – Attribute byte count // ⽂件属性end下⾯为代码,#include <fstream>#include <string>#include <vector>bool ReadSTLFile(const char *cfilename){if (cfilename == NULL)return false;std::ifstream in(cfilename, std::ifstream::in);if (!in)return false;std::string headStr;getline(in, headStr, '');in.close();if (headStr.empty())return false;if (headStr[0] == 's'){ReadASCII(cfilename);}else{ReadBinary(cfilename);}return true;}bool ReadASCII(const char *cfilename){std::vector<float> coorX;std::vector<float> coorY;std::vector<float> coorZ;int i = 0, j = 0, cnt = 0, pCnt = 4;char a[100];char str[100];double x = 0, y = 0, z = 0;std::ifstream in(cfilename, std::ifstream::in);if (!in)return false;do{i = 0;cnt = 0;in.getline(a, 100, '\n');while (a[i] != '\0'){if (!islower((int)a[i]) && !isupper((int)a[i]) && a[i] != '')break;cnt++;i++;}while (a[cnt] != '\0'){str[j] = a[cnt];cnt++;j++;}str[j] = '\0';j = 0;if (sscanf(str, "%lf%lf%lf", &x, &y, &z) == 3){coorX.push_back(x);coorY.push_back(y);coorZ.push_back(z);}pCnt++;} while (!in.eof());return true;}bool ReadBinary(const char *cfilename){std::vector<float> coorX;std::vector<float> coorY;std::vector<float> coorZ;char str[80];std::ifstream in(cfilename, std::ifstream::in | std::ifstream::binary); if (!in)return false;in.read(str, 80);//number of trianglesint triangles;in.read((char*)&triangles, sizeof(int));if (triangles == 0)return false;for (int i = 0; i < triangles; i++){float coorXYZ[12];in.read((char*)coorXYZ, 12 * sizeof(float));for (int j = 1; j < 4; j++){coorX.push_back(coorXYZ[j * 3]);coorY.push_back(coorXYZ[j * 3 + 1]);coorZ.push_back(coorXYZ[j * 3 + 2]);}in.read((char*)coorXYZ, 2);}in.close();return true;}ReadSTLFile。

3D打印机文件格式及其转换方法解析

3D打印机文件格式及其转换方法解析

3D打印机文件格式及其转换方法解析随着科技的不断发展,3D打印技术逐渐走进了人们的生活。

而要实现3D打印,首先需要将设计好的模型转化为打印机能够识别的文件格式。

本文将对一些常见的3D打印机文件格式及其转换方法进行解析,帮助读者更好地理解和应用3D打印技术。

一、STL文件格式STL(Standard Tessellation Language)是一种用于描述3D模型的文件格式。

它将模型分解为许多小的三角形面片,并记录下每个面片的顶点坐标信息。

STL文件格式简单易懂,适合用于3D打印,因此被广泛应用。

STL文件格式的转换方法主要有两种:导出和导入。

导出即将其他文件格式的模型转化为STL格式,而导入则是将STL格式的模型转化为其他文件格式。

1. 导出STL格式导出STL格式可以通过许多3D建模软件实现,如AutoCAD、SolidWorks等。

通常在软件中选择导出选项,并选择STL格式即可完成导出。

2. 导入STL格式导入STL格式同样可以通过各种3D建模软件实现。

在导入时,软件会将STL文件中的三角形面片重新组合成模型。

但需要注意的是,STL文件格式只记录了模型的外表面信息,而没有包含内部结构,因此在导入STL格式时可能会丢失一些细节。

二、OBJ文件格式OBJ(Wavefront OBJ)是一种广泛应用于3D建模和动画领域的文件格式。

与STL文件格式相比,OBJ文件格式更加复杂,可以保存更多的模型信息,如纹理、材质等。

OBJ文件格式的转换方法与STL文件格式类似,同样可以通过各种3D建模软件进行导入和导出。

在导入OBJ格式时,软件会将OBJ文件中的模型信息还原,包括顶点坐标、纹理坐标等。

三、AMF文件格式AMF(Additive Manufacturing File Format)是一种用于描述3D打印模型的文件格式。

与STL和OBJ文件格式相比,AMF文件格式更加灵活,可以保存更多的模型信息,如颜色、材料、纹理等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
通过前面对 STL 文件的结构分析可知,STL 文件由文件路径及文件名、三角 面片法向量、三角形面片的顶点、三角形顶点定义开始标识符(outer Ioop)及结 束标识符(endIoop)和三角形面片定义结束标识符(endfacet)等字符串信息构成。 在本文中只需要其中的三角形顶点信息,因此要对读入的字符串进行是否为三角 形顶点信息的判断,这里通过 Push Line(Verte×Array&vertices)函数来实现 判断。
读取STL文件时,只需要读取STL文件中表示向量和三角形顶点的相应数据, 不需要读文件中的其它信息。依次按逆时针方向读入各个三角形面片的3顶点坐 标值。由于三角面片外法矢量可以通过右手螺旋法则由3顶点坐标值计算出来, 因此可不对其进行存储,以节省存储空间。如果后续处理需用到法矢量, 可利用以下的外法矢量计算公式:
ifstream::in);//打开要读取的STL文件 Read Line(Jjne): Push Line(Vert jces): }
Read Line(string&line)函数不对Read(Vertex Array & vertices)函数中 读入的行字符串信息进行是否为三角形顶点字符串信息的判断,而只对读入的字 符串进行存储,并通过strtok(buff,Del)函数对读入的每行字符串信息进行分 隔,以区别读入的每个字符,为下一步对三角形顶点字符串信息的判断做准备。 部分实现程序如下: void Vertex Reader::Read Line(string&line) { 一一一 char★token = strtok(buff。Del);//分解字符串为一组标记串 while(token){ Tken.push..back(token); token=strtok(NULL。Del); }
end loop end facet
通过对STL两种文件格式的分析可知,二进制格式文件较小(通常是ASC¨码 格式的1/5),节省文件存储空间,而ASCII码格式的文件可读性更强,更容易进 行进一步的数据处理。
3 STL文件的读取与显示
本文以STL三维模型文件为数据源,根据对文件格式和内部数据结构的分析, 采用OpenGL作为三维图形接口,并以VC++6.O为开发平台。利用C++标准IO库的 if stream类型定义对象并绑定STL文件:再用标准库string类型中的getline逐 行读取绑定的STL文件:然后对读入的数据进行是否为顶点信息的判断,存储其 中的顶点数据。再应用OpenGL编程技术实现对STL三维模型文件的显示。
2Байду номын сангаас1 TL的二进制格式
二进制STL文件用固定的字节数来给出三角面片的几何信息。文件起始的80 个字节是文件头,用于存贮零件名;紧接着用4个字节的整数来描述模型的三角
面片个数,后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50 个字节,依次是3个4字节浮点数(角面片的法矢量)3个4字节浮点数(1个顶点的坐 标)3个4字节浮点数(2个顶点的坐标)3个4字节浮点数(3个顶点的坐标)个三角面 片的最后2个字节用来描述三角面片的属性信息。一个完整二进制STL文件的大小 为三角形面片数乘以50再加上84个字节,总共1 34个字节。
文中我们具体用函数 stricmp0 来判断读入信息是否为顶点;由于读入的顶 点信息为字符类型而在显示时要用到的是浮点类型的顶点信息,因此要通过函数 atof0 进行类型的转化。部分实现程序如下:
void Vertex Reader::Push Line(Vertex Array&
vertices) { if(stricrnp(Tken[0].C—str0,”vertex”)==O) {//判断读取的是否为顶点信息 double x=atof(Tken[1].c—strO);//把字符串转化成浮点数 double Y=atof(Tken[2].C—str0); double Z=atof(Tken[3].C—str0); vertices.push—back(Vertex(x, Y,z))://对点进行读入保存 } }
2.2 TL的ASCII文件格式
ASCII码格式的STL文件逐行给出三角面片的几何信息,每一行以1个或2个关 键字开头。在STL文件中的三角面片的信息单元facet是一个带矢量方向的三角面 片,STL三维模型就是由一系列这样的三角面片构成。整个STL文件的首行给出了 文件路径及文件名。在一个STL文件中,每一个facet由7行数据组成,facetnormal 是三角面片指向实体外部的法矢量坐标,outer loop说明随后的3行数据分别是 三角面片的3个顶点坐标,3顶点沿指向实体外部的法矢量方向逆时针排列。 ASCII格式的STL文件结构如下: solid filename stl //文件路径及文件名 facet normal X Y z//三角面片法向量的3个分量值 outer loop vertex X Y z //三角面片第一个顶点坐标 vertex X Y Z //三角面片第二个顶点坐标 vertex X Y Z //三角面片第三个顶点坐标 end loop end facet //完成一个三角面片定义 end solid filename stl//整个STL文件定义结束一个具体STL文件如下: solid C:\Temp\NOEL Parts\HMJ—PRT.STL created by Ctrl View V2.70 facet normal 0 1 0 outer loop vertex 67.4752 34.7981 31.693 vertex 68.4358 34.7981 30.3941 vertex 69.1 631 34.7981 28.951 6
投影方式。透视投影通过函数void gIuPerspectiVe(GIdouble fovy,Gldouble aspect,Gldouble zNear,Gldouble zFar)其中的参数分别表示垂直方向的视野 角度、高度到宽度的纵横比,以及近端和远端裁剪平面之间的距离。恰当的参数 设置可以得到更好的显示效果。
基于 VC++和 OpenGL 的 STL 文件读取 显示
基于 VC++和 OpenGL 的 STL 文件读取显示
摘要:STL是三维模型常用的文件格式。对STL文件进行读取和显示,是对模型
进行后续操作的前提。在对STL文件格式进行详细分析的基础上,以VC+-I-作为 开发平台;利用C++标准lO库的ifstream类型定义对象并绑定STL文件;再用标准 库string类型中的getline逐行读取绑定的STL文件;最后,应用OpenGL中绘制三 角面片编程技术实现对STL文件格式的直观显示。通过试验验证了读取和显示效 果。
关键词: STL 文件 ASCII 三维模型 三角面片 OpenGL
1 引言
STL(Stereo lithographic)文件格式是美国3DSYSTEMS公司提出的三维实体 造型系统的一个接口标准,其接口格式规范。目前已被工业界认为是快速成形 (rapid prototypi ng)领域的标准描述文件格式。在逆向工程、有限元分析、医 学成像系统、文物保护等方面有广泛的应用川。对STL文件的读取与显示是其应 用的基础与前提,本文对STL文件特点进行了详细的分析并在VC++平台上。利用 C++标准库中提供的文件流读取及字符操作等功能结合OpenGL中三角面片绘制的 编程技术实现了对STL文件的读取与显示。
—z=O) :×_(_×),y.(_y),z_(_z)//--坐标变量赋初值 {} private://定义顶点三坐标 double X_: double,y_: double z_: }:
3.2 定义读取功能
由前面的分析我们知道,STL文件以行为标准存储不同信息。根据文件格式 的该特点,本文首先应用C++标准IO库的ifstream类型定义对象绑定待读取的STL 文件:再采用逐行读取的方式用标准库string类型中的getline函数从ifstream 对象绑定的STL文件中读入数据。由于只需用到其中的顶点信息,因此,通过判 断字符Vertex,然后读取其后的数据即可。本文在类Vertex Reader中定义了读 取STL文件的相关操作函数,Vertex Reader类定义的部分代码如下: class Verte×Reader {
(1)
3.1 定义顶点。
STL三维模型文件由一系列的三角面片组成,每一个三角面片由三维空间中 对应的三个顶点组成。STL文件的读取与显示实质就是对STL文件中的顶点信息进 行读取并直观显示,因此,读取显示STL文件首先要解决的就是顶点的定义问题, 本文通过类Vertex定义三角面片顶点,Vertex类定义的部分代码如下: class Vertex { public: Verte×(double—x=0,double—y=O,double
3.3 STL文件的显示
在OpenGL函数库中,提供了直接渲染三角面片的方法glBegin(GLTRIANGLES) 和glEnd(),因而利用OpenGL来实现STL三维模型的真实感图形显示,更加具有优 势。部分实现程序如下: void CWelcomeView::myplane() {⋯ for(int i_0:i<vertices.size();bi+3) {glBegin(GLTRIANGLES);//绘制三角面片 glVerte×3f(Vertices[i].xo,vertices[i].Y0,vertices[i].Z()): gIVertex3f(Vertices[i+1].XO。vertices[i+1】.YO,vertices[i+1].Z0, ): g|Verte×3f(Vertices[i+2].X0。vertices[i+2].YO,vertices[i+2].Z() ): glEnd0; ) } 注意,在OpenGL中投影是进行模型显示的关键技术,主要有两种类型,一种是正 投影(orthograghic projection)另一种是透视投影(perspective projection)。 由于透视投影更符合人类视觉,使模型显示更具有真实感,因此本文采用了该种
相关文档
最新文档