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

本文介绍如何在Unity中导入STL格式模型,通过拆分成多个子网格解决导入慢和顶点过多的问题。文章详细展示了创建STL模型实例、读取顶点信息、创建GameObject以及压缩网格的代码实现。压缩网格可以显著减少顶点数量,提高性能,同时保存的Mesh文件可重复使用。
摘要由CSDN通过智能技术生成

接上篇Unity导入STL格式模型(一),分成多个子网格的方式解决了导入慢以及目标模型顶点过多的问题,优化之后,目前针对二进制STL文件有比较良好的解析能力。

662c2783343a0ca8cc3b22ea0d04275c.png

MeshCompression:是否使用压缩模式

Off为不使用,跳过压缩算法,导入模型的时间可以短到忽略不计。

On为使用,会为每个子网格单独压缩,也就是删掉所有他认为重复的顶点(位置相等他就认为重复)。

SingleTrianglesNumber:以此数量做为子网格的面数进行拆分,将模型分为多个子网格。

SaveMesh:是否保存模型的所有子网格至本地磁盘?在CreateInstance至Scene中之后。

核心代码如下:

///

/// 创建STL模型实例

///

private void CreateInstance()

if (_singleTrianglesNumber < 1000 || _singleTrianglesNumber > 20000)

Debug.LogError("Single Triangles Number: this value is unreasonable!");

return;

if (int.Parse(_trianglescount) > 200000)

Debug.LogError("Triangles Count: this value is too much!");

return;

string fullPath = Path.GetFullPath(AssetDatabase.GetAssetPath(target));

_total = int.Parse(_trianglescount);

_number = 0;

_binaryReader = new BinaryReader(File.Open(fullPath, FileMode.Open));

//抛弃前84个字节

_binaryReader.ReadBytes(84);

_vertices = new List();

_normals = new List();

_triangles = new List();

//读取顶点信息

Thread t = new Thread(ReadVertex);

t.Start

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值