unity 导入STL格式模型(STL 文本ASCII码格式文件)
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码格式文件)相关推荐
- matlab数据转换为tecplot格式[ASCII码格式下的plt文件]
matlab数据转换为tecplot格式[ASCII码格式下的plt文件] 1 tecplot能读取的的常见ASCII格式 1.1 文件格式与文件头 1.2 zone相关的格式 2 一维数据 3 二维 ...
- ASCII码格式转回汉字
通常在properties文件中配置中文的属性时,需要将中文转换成ASCII码格式, 这种转换可以通过命令: native2ascii 1.txt 2.txt 来实现,1.txt中内容包含中文,转换后 ...
- Unity 导入人形骨骼模型及动画
例:当导入名称为 Women 的模型,这一般分为两个部分: 包含有蒙皮网格(SkinnedMeshRenderer)和骨骼的 Women.fbx 主要导入设置: Rig -> Animation ...
- Unity导入STL格式模型(一)
STL文件是一种非常简单且实用的三角形网格文件,他只按照三角面片的方式存储了所有的面信息及法矢量,不包含纹理以及其他任何媒体信息,主要存储格式分为:ASCII码格式.二进制格式. 这种文件格式在工业上 ...
- stl文件unity_Unity导入STL格式模型(一)
STL文件是一种非常简单且实用的三角形网格文件,他只按照三角面片的方式存储了所有的面信息及法矢量,不包含纹理以及其他任何媒体信息,主要存储格式分为:ASCII码格式.二进制格式. 这种文件格式在工业上 ...
- c语言 字符转换成ascii吗,C语言字符转换ASCII码
//函 数 名:CharToHex() //功能描述:把ASCII字符转换为16进制 //函数说明: //调用函数: //全局变量: //输 入:ASCII字符 //返 回:16进制 / ...
- ASCII码和汉字码
国家标准汉字字符集GB2312-80共收集了共7445个汉字和图形符号,其中汉字6763个,分为二级,一级汉字3755个,二级汉字3008个. 汉字图形符号根据其位置将其分为94个"区&qu ...
- Java黑皮书课后题第4章:*4.8(给出ASCII码对应的字符)编写程序,得到一个ASCII码的输入(0~27之间的一个整数),然后显示该字符
*4.8(给出ASCII码对应的字符)编写程序,得到一个ASCII码的输入(0~27之间的一个整数),然后显示该字符 题目 题目概述 运行示例 引申 代码 题目 题目概述 *4.8(给出ASCII码对 ...
- c语言求字符ascii,C语言中ASCII码是什么意思? c语言怎么求字符的ascii码
导航:网站首页 > C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 C语言中ASCII码是什么意思? c语言怎么求字符的ascii码 相关问题: 匿名网友: 是一个字符表,一个 ...
- Unity将内部模型转换成stl格式模型,用于3D打印机进行打印
本章我们一起来看下怎样将unity中的fbx模型转成stl模型并且保存到本地. 原理:stl模型都是由三角面组成的,只要我们了解stl文件的格式,就能够轻松的将fbx模型转换成stl. 1.先获取到f ...
最新文章
- 软件调试学习笔记(六)—— 硬件断点
- OS / Linux / Ubuntu 创建应用的快捷方式
- Spark远程调试配置,在IDEA中的配置
- 学习 Linux_01: 引导程序
- vue的鼠标移入和移出
- Andorid之jni里面崩溃然后用errno分析结果解决问题
- linux netty udp服务端,Netty实现UDP服务端
- 图像傅里叶变换频谱分析
- m031开发 新唐_M031
- EXT学习经验分享:深刻理解EXT与服务器端的交互
- 0基础web开发 python_真零基础Python开发web
- Libusb简介及例子
- SQL 增删改查等操作
- stata 亚组分析_手把手教你用R的gemtc包对分类变量进行贝叶斯网状Meta分析
- 培训php暑期,西安软件php暑假培训
- 华为认证是什么?这个证值得考吗?网工深思……
- 常用文本编辑器(NotePad++,UtraEdit)
- 乌班图18下安装QQ
- mac pro M1(ARM)安装:python开发环境
- 工业机器人关节拆装流程_工业机器人关节空间的插值轨迹规划_凌家良
热门文章
- WPF实现选项卡效果(1)——使用AvalonDock
- OpenCV 学习笔记-day9 OpenCV自带颜色表操作(colormap(色度图)ColormapTypes 枚举数据类型与applyColorMap()伪彩色函数)
- 如何获得WPA握手包EWSA破解WPA密码教程[zz]
- 什么是拖库,撞库和洗库
- 易语言大漠多线程模板日志输出
- 利用eclipse自定义模板创建日志打印模板
- 2011年国内五款值得关注网店系统
- Macromedia Flash 8 Video Encoder安装
- 怎么把mpg转成mp4,mpg转mp4方法
- 令牌桶 java_服务限流(自定义注解令牌桶算法)