stl文件unity_Unity导入STL格式模型(一)

本文介绍了如何在Unity中处理STL文件,由于Unity不直接支持STL格式,作者通过重写DefaultAsset的OnInspectorGUI并在子线程中读取和优化顶点信息,实现了STL模型的导入。在处理过程中,通过比较和筛选去除重复顶点,减少了模型的顶点数量,以适应Unity的网格顶点限制。虽然多线程能加速读取,但无法解决大量计算的问题。文章结论是STL模型在Unity中主要用于展示效果。
摘要由CSDN通过智能技术生成

STL文件是一种非常简单且实用的三角形网格文件,他只按照三角面片的方式存储了所有的面信息及法矢量,不包含纹理以及其他任何媒体信息,主要存储格式分为:ASCII码格式、二进制格式。

这种文件格式在工业上以及3D打印行业应用非常广泛,但是Unity并不支持这种格式的模型,原因可能是因为STL模型的顶点普遍量级过大,随随便便一个模型都有可能越过了Unity单个网格顶点数不能超过65000的上限,以及他自身在未经过3DMax或maya等的二次加工前提下并不能表现出良好的渲染效果的原因。

综上所述,貌似几乎不会有哪个吃撑了的会想直接将STL模型拿到Unity中开发,毕竟那样的计算量级确实过于庞大了。目前的效果,导入一个4M的STL模型就花了将近5分钟!对了,到这里我不得不吐槽Unity的某些机制了,我可以理解为Unity将编辑器主线程的资源分配做了极大限制,在不开其他线程的情况下,主线程导入一个4M的STL模型需要约20几分钟,开一个线程来单独处理的话,只需要5分钟左右,但再开10个线程或者100个线程的话(不存在同步锁),处理时间几乎也是5分钟左右,当然100个线程电脑几乎死机,我查了一下这应该是由于进行的是内存计算的原因,多线程并不能优化本地内存计算的效率,不过在子线程中处理运算与在Unity主线程中处理却是有着本质区别的。

首先,在网上随便下了一个STL模型,因为一直没找到ASCII码格式的,所以暂时只处理二进制格式的文件。

模型原图:

6b01daebe575a69f5ca939f4fab49ff2.png

8c443745e9ac960db635f8a1bf90bcc1.png

将它拖到工程中,先重写DefaultAsset的OnInspectorGUI,使他看起来像一个我们已知的文件,DefaultAsset代表的是Unity缺省资源,不可识别的资源,我们在OnInspectorGUI中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值