python 读取stl文件_读取STL模型 并用opengl显示

本文介绍如何使用Python读取ASCII格式的STL文件,并通过OpenGL进行三维显示。解析过程涉及按行读取文件,计算三角面片数量,然后使用OpenGL接口将顶点和法向量信息转换为绘制所需的格式。
摘要由CSDN通过智能技术生成

说起STL模型,相信使用过CAD三维软件的人都不陌生,

STL = STL文件,一种3D模型文件格式STL(STereo Lithography的缩写)

STL文件格式是由3D SYSTEMS 公司于1988 年制定的一个接口协议,是一种为快速原型制造技术服务的三维图形文件格式。STL 文件由多个三角形面片的定义组成,每个三角形面片的定义包括三角形各个定点的三维坐标及三角形面片的法矢量。三角形顶点的排列顺序遵循右手法则。 STL 文件有2 种类型:文本文件(ASCII格式)和二进制文件(BINARY)。

在此文中我们对ASCII格式的STL文件进行解析,并且用opengl对其进行显示。

STL的ASCII格式如下:

solid filenamestl //文件路径及文件名

facet normal x y z // 三角面片法向量的3个分量值

outer loop

vertex x y z ∥三角面片第一个顶点的坐标

vertex x y z // 三角面片第二个顶点的坐标

vertex x y z ∥三角面片第三个顶点的坐标

endloop

endfacet // 第一个三角面片定义完毕

……

……

endsolid filenamestl ∥整个文件结束

下面来说说处理这个解析的思路,首先我们可以按行一行行读来下,去掉第一行开始一直往下读,每读一行都检查是不是到了最后一行,但是这样显然效率不高,不如我们一开始把三角面片个个数求出来,循环中对每个三角面片进行解析,可以观察出每个三角面片所占的ASCII文件的行数为7行,那么把行数读出来除以七所得的商就是三角面片的个数,那么我们再一一对每个三角面片进行解析,实际上这个工作并不是很难,关键是要知道STL的格式与OPENGLBATCH的接口,OPENGL的接口实际上是一串float的数组,这里面保存了verts即顶点坐标信息,以及norms即法向量信息,那么刚好和我们的stl文件相一致。

以下是我们的核心代码;

#include "windows.h"#include //OpenGL toolkit

#include #include#include#include#include#ifdef __APPLE__

#include

#else

#define FREEGLUT_STATIC#include

#endifGLFrame viewFrame;

GLFrustum viewFrustum;

GLB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值