unity 导入STL格式模型(STL 文本ASCII码格式文件)

using System.Collections;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using UnityEngine;public class ASCII : MonoBehaviour
{   private string _fileName = "";private string _trianglescount = "";private int _total;//三角形个数,_total*3即为三角形顶点个数private int _number;private BinaryReader _binaryReader;private List<Vector3> _vertices;private List<int> _triangles;/// <summary>/// 创建STL模型实例/// </summary>private void CreateInstance(){_vertices = new List<Vector3>();//存储三角形顶点坐标_triangles = new List<int>();//存储三角形索引int gameObjectCount = 60000;//代表一个物体中包含多少个点(Unity中单个Mesh顶点数量最多为65000个)string fullPath = "E:\\unity\\project\\test\\Assets\\STL\\tui.stl";StreamReader sr = new StreamReader(fullPath);String line;while ((line = sr.ReadLine()) != null){string str = line.ToString().TrimStart();if (str.Substring(0, 6) == "vertex"){string[] Vertex = new string[3] { "12", "12", "23" };string[] strs = str.Split(new Char[] { ' ' }, 4);str = str.Substring(strs[0].Length);str = str.TrimStart();strs = str.Split(new Char[] { ' ' }, 3);Vertex[0] = strs[0];//Console.WriteLine(Vertex[0]);str = str.Substring(strs[0].Length);str = str.TrimStart();strs = str.Split(new Char[] { ' ' }, 2);Vertex[1] = strs[0];str = str.Substring(strs[0].Length);str = str.TrimStart();strs = str.Split(new Char[] { ' ' }, 1);Vertex[2] = strs[0];Vector3 vec1 = new Vector3(Convert.ToSingle(Vertex[0]), Convert.ToSingle(Vertex[1]), Convert.ToSingle(Vertex[2]));_vertices.Add(vec1);}}//将索引写入列表中,值为0到每个物体中顶点个数减一for (int triNum = 0; triNum < _vertices.Count; triNum++){int gameObhectIndex = triNum / gameObjectCount;//标记着当前正在给第几个物体赋值_triangles.Add(triNum - gameObhectIndex * gameObjectCount);}for (int meshNumber = 0; meshNumber < _vertices.Count; meshNumber += gameObjectCount){//创建GameObjectGameObject tem = new GameObject(Path.GetFileNameWithoutExtension(fullPath));tem.name = meshNumber.ToString();MeshFilter mf = tem.AddComponent<MeshFilter>();MeshRenderer mr = tem.AddComponent<MeshRenderer>();Mesh m = new Mesh();mr.name = meshNumber.ToString();if ((_vertices.Count - meshNumber) >= gameObjectCount){m.vertices = _vertices.ToArray().Skip(meshNumber).Take(gameObjectCount).ToArray();m.triangles = _triangles.ToArray().Skip(meshNumber).Take(gameObjectCount).ToArray();}else{m.vertices = _vertices.ToArray().Skip(meshNumber).Take(_vertices.Count - meshNumber).ToArray();m.triangles = _triangles.ToArray().Skip(meshNumber).Take(_vertices.Count - meshNumber).ToArray();}m.RecalculateNormals();mf.mesh = m;mr.material = new Material(Shader.Find("Standard"));}}// Start is called before the first frame updatevoid Start(){CreateInstance();}// Update is called once per framevoid Update(){}
}

unity 导入STL格式模型(STL 文本ASCII码格式文件)相关推荐

  1. matlab数据转换为tecplot格式[ASCII码格式下的plt文件]

    matlab数据转换为tecplot格式[ASCII码格式下的plt文件] 1 tecplot能读取的的常见ASCII格式 1.1 文件格式与文件头 1.2 zone相关的格式 2 一维数据 3 二维 ...

  2. ASCII码格式转回汉字

    通常在properties文件中配置中文的属性时,需要将中文转换成ASCII码格式, 这种转换可以通过命令: native2ascii 1.txt 2.txt 来实现,1.txt中内容包含中文,转换后 ...

  3. Unity 导入人形骨骼模型及动画

    例:当导入名称为 Women 的模型,这一般分为两个部分: 包含有蒙皮网格(SkinnedMeshRenderer)和骨骼的 Women.fbx 主要导入设置: Rig -> Animation ...

  4. Unity导入STL格式模型(一)

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

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

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

  6. c语言 字符转换成ascii吗,C语言字符转换ASCII码

    //函 数 名:CharToHex() //功能描述:把ASCII字符转换为16进制 //函数说明: //调用函数: //全局变量: //输    入:ASCII字符 //返    回:16进制 / ...

  7. ASCII码和汉字码

    国家标准汉字字符集GB2312-80共收集了共7445个汉字和图形符号,其中汉字6763个,分为二级,一级汉字3755个,二级汉字3008个. 汉字图形符号根据其位置将其分为94个"区&qu ...

  8. Java黑皮书课后题第4章:*4.8(给出ASCII码对应的字符)编写程序,得到一个ASCII码的输入(0~27之间的一个整数),然后显示该字符

    *4.8(给出ASCII码对应的字符)编写程序,得到一个ASCII码的输入(0~27之间的一个整数),然后显示该字符 题目 题目概述 运行示例 引申 代码 题目 题目概述 *4.8(给出ASCII码对 ...

  9. c语言求字符ascii,C语言中ASCII码是什么意思? c语言怎么求字符的ascii码

    导航:网站首页 > C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 相关问题: 匿名网友: 是一个字符表,一个 ...

  10. Unity将内部模型转换成stl格式模型,用于3D打印机进行打印

    本章我们一起来看下怎样将unity中的fbx模型转成stl模型并且保存到本地. 原理:stl模型都是由三角面组成的,只要我们了解stl文件的格式,就能够轻松的将fbx模型转换成stl. 1.先获取到f ...

最新文章

  1. 软件调试学习笔记(六)—— 硬件断点
  2. OS / Linux / Ubuntu 创建应用的快捷方式
  3. Spark远程调试配置,在IDEA中的配置
  4. 学习 Linux_01: 引导程序
  5. vue的鼠标移入和移出
  6. Andorid之jni里面崩溃然后用errno分析结果解决问题
  7. linux netty udp服务端,Netty实现UDP服务端
  8. 图像傅里叶变换频谱分析
  9. m031开发 新唐_M031
  10. EXT学习经验分享:深刻理解EXT与服务器端的交互
  11. 0基础web开发 python_真零基础Python开发web
  12. Libusb简介及例子
  13. SQL 增删改查等操作
  14. stata 亚组分析_手把手教你用R的gemtc包对分类变量进行贝叶斯网状Meta分析
  15. 培训php暑期,西安软件php暑假培训
  16. 华为认证是什么?这个证值得考吗?网工深思……
  17. 常用文本编辑器(NotePad++,UtraEdit)
  18. 乌班图18下安装QQ
  19. mac pro M1(ARM)安装:python开发环境
  20. 工业机器人关节拆装流程_工业机器人关节空间的插值轨迹规划_凌家良

热门文章

  1. WPF实现选项卡效果(1)——使用AvalonDock
  2. OpenCV 学习笔记-day9 OpenCV自带颜色表操作(colormap(色度图)ColormapTypes 枚举数据类型与applyColorMap()伪彩色函数)
  3. 如何获得WPA握手包EWSA破解WPA密码教程[zz]
  4. 什么是拖库,撞库和洗库
  5. 易语言大漠多线程模板日志输出
  6. 利用eclipse自定义模板创建日志打印模板
  7. 2011年国内五款值得关注网店系统
  8. Macromedia Flash 8 Video Encoder安装
  9. 怎么把mpg转成mp4,mpg转mp4方法
  10. 令牌桶 java_服务限流(自定义注解令牌桶算法)