STL文件格式详解【3D】

STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用这些数据来确定制造商要构建的 3 维形状的横截面。

本文描述了 STL 文件格式的技术细节,主要面向有兴趣开发可读写 STL 文件的硬件或软件的人提供。大多数用户不需要关心,可以使用 3DConvert 这个在线的3D格式转换工具将其他格式的3D模型转换为STL格式。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

1、STL格式规格

STL 文件由构面数据列表组成。 每个面由单位法线(垂直于三角形且长度为 1.0 的线)和三个顶点(角)唯一标识。 法线和每个顶点分别由三个坐标指定,因此每个面总共存储 12 个数字。

1.1 STL 文件中的面方向

在这里插入图片描述

图1:面的方向由单位法线的方向和顶点列出的顺序决定

面(facet)定义了 3 维对象的表面。 因此,每个面都是对象内部和外部之间边界的一部分。 面的方向(哪个方向是“外”,哪个方向路是“内”)以两种方式冗余指定,这两种方式必须一致。 首先,法线的方向是向外的。 其次,从外部观察对象时,顶点按逆时针顺序列出(右手定则)。 这些规则如图 1 所示。

1.2 顶点到顶点规则

每个三角形必须与其相邻的每个三角形共享两个顶点。 换句话说,一个三角形的顶点不能位于另一个三角形的一边上。 图 2 对此进行了说明。
在这里插入图片描述

图2:顶点到顶点规则。 左图显示了违反规则的情况。 正确的配置如右图所示

所代表的物体必须位于全正八分圆内。 换句话说,所有顶点坐标必须是正定(非负且非零)数。 STL文件不包含任何比例信息; 坐标采用任意单位。

官方 3D Systems StL 规范文档指出,有一项规定包含“建筑参数的特殊属性”,但没有给出包含此类属性的格式。 此外,该文件还指定了“三角形边的最小长度”和“三角形最大尺寸”的数据,但这些数字的含义是可疑的。

建议按 z 值升序对三角形进行排序,但不是必需的,以便优化切片程序的性能。

通常,STL 文件以扩展名“STL”保存,不区分大小写。 切片程序可能需要此扩展名,也可能允许指定不同的扩展名。

StL 标准包括两种数据格式:ASCII 和二进制。 下面分别进行描述。

2、STL ASCII 格式

ASCII 格式主要用于测试新的 CAD 界面。 其文件较大,不适合一般用途。

ASCII STL 文件的语法如下:
在这里插入图片描述

粗体表示关键字; 这些必须以小写形式出现。 注意:

  • facet normal和 outer loop中都有空格, end开头的关键字都没有空格。
  • 缩进必须有空格; 不允许使用 tab。
  • 符号 {…}+表示大括号中的内容可以重复一次或多次。
  • 斜体符号是要替换为用户指定值的变量。
  • 平面法线和顶点线中的数值数据是单精度浮点数,例如 1.23456E+789。
  • 面法线坐标可能有一个前导减号; 顶点坐标可能不会。

3、STL 二进制格式

二进制格式使用 IEEE 整数和浮点数值表示形式。

二进制 STL 文件的语法如下:
在这里插入图片描述

符号 {…}+ 表示大括号中的内容可以重复一次或多次。 属性语法未记录在正式规范中。 指定属性字节计数应设置为零。


原文链接:STL模型格式详解 — BimANt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++] 模板template

讲模板之前呢,我们先来谈谈泛型编程: 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 模板分为两类:函数模板与类模板 1、函数模板 1.1 函数模板概念 函数模板代表了一个函数家…

【第二阶段】kotlin的lambda学习

匿名函数lambdm表达式 1.两数相加 fun main() {//匿名函数lambda表达式//两数相加 等价:val addResult:(Int,Int)->String{a,b->"两数相加结果:${ab}"}val addResult{a:Int,b:Int->"两数相加结果${ab}"}println(addResul…

安装docker的报错问题

先关闭安全机制 systemctl stop firewalld.service setenforce 0 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里云镜像云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装d…

计算机网络:网络通信相关概念入门

目录 一、网络发展背景二、理解网络通信三、理解IP地址1.简述IP地址2.IP地址的版本3.提高地址利用率的技术 四、理解端口1.简述端口2.使用端口的原因 五、理解网络通信协议 一、网络发展背景 网络发展背景: 最初的计算机是单机,那么单机是这样传输数据的…

win10 + VS2022 安装opencv C++

最近需要用到C opencv,看了很多帖子都需要自己编译opencv源码。为避免源码编译,可以使用VS来配置opencv C。下面是主要过程: 目录 1. 从官网下载 opencv - Get Started - OpenCV 2. 点击这个exe文件进行安装 3. 配置环境变量 4. VS中的项…

IC人必看| 模拟IC方向面试常考问题及答案汇总(二)

有不少小伙伴说还想要更多模拟IC方向的面试题目,这不就来了!(文末可领全部面试题目) 1. Bandgap 里有几种反馈?原理是? 正反馈和负反馈。 2. 负反馈种类?负反馈的优点? 种类&am…

认识http的方法、Header、状态码以及简单实现一个http的业务逻辑

文章目录 http的方法http状态码http重定向http常见Header实现简单业务逻辑Protocol.hppUtil.hppServer.hppServer.cc 效果 http的方法 方法说明支持的HTTP版本GET获取资源1.0/1.1POST传输实体主体1.0/1.1PUT传输文件1.0/1.1HEAD获得报文首部1.0/1.1DELETE删除文件1.0/1.1OPTIO…

基于Selenium模块实现无界面模式 执行JS脚本

此篇文章主要介绍如何使用 Selenium 模块实现 无界面模式 & 执行JS脚本(把滚动条拉到底部),并以具体的示例进行展示。 1、Selenium 设置无界面模式 创建浏览器对象之前,创建 options 功能对象 :options webdriver.ChromeOptions() 添加…

[保研/考研机试] KY109 Zero-complexity Transposition 上海交通大学复试上机题 C++实现

描述: You are given a sequence of integer numbers. Zero-complexity transposition of the sequence is the reverse of this sequence. Your task is to write a program that prints zero-complexity transposition of the given sequence. 输入描述&#xf…

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计em

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…

9月大理,Move HackerHouse,成为全球数字游民的第一站

🚀世界各地的 hacker 们!即日起,我们正式向您发出 co-buiding & co-living 的邀请! 9.3日至9.24日,为期3周的 Move 主题Antalpha HackerHouse 将坐落于大理,邀请所有 Web3 开发者一起探索 Move 生态发…

【RH850/U2A】:DMA开发笔记

DMA开发笔记 项目背景参考文档DMA开发过程开发过程中的问题汇总框图预览设计思路重点注意DMA的功能安全属性串口的DMA请求信号模式选择配置DMA的中断如果我们买了第三方的模块(比如LIN/UART)它是自带DMA配置开启功能;奈何,我们没有购买第三方模块所以需要我们参考datasheet…