C#代码创建3D模型
Demo 1:创建三角形
示例代码
构建一个只包含单个三角形及纹理坐标的网格
using UnityEngine;
using System.Collections; public class MeshTest : MonoBehaviour
{
void Start()
{
MeshFilter mf = GetComponent<MeshFilter>();
Mesh mesh = new Mesh();
mf.mesh = mesh; mesh.vertices = new Vector3[] { new Vector3(, , ), new Vector3(, , ), new Vector3(, , ) };
mesh.uv = new Vector2[] { new Vector2(, ), new Vector2(, ), new Vector2(, ) };
mesh.triangles = new int[] { , , };
}
}
创建出三角形
可以看到只有单个三角形

顶点信息
从下图可以看出,共有1个三角形,3个顶点

Demo2:二个三角形
示例代码
构建两个三角形及纹理坐标的网格
using UnityEngine;
using System.Collections; public class MyMesh : MonoBehaviour
{
void Start()
{
MeshFilter mf = GetComponent<MeshFilter>();
Mesh mesh = new Mesh();
mf.mesh = mesh;
//顶点[决定绘制出来图片的scale]
mesh.vertices = new Vector3[] { new Vector3(, , ), new Vector3(, , ), new Vector3(, , ), new Vector3(, , ) };
//三角形顶点索引的顺序[3的倍数]
mesh.triangles = new int[] { , , , , , };
//法线
mesh.normals = new Vector3[] { new Vector3(, , -), new Vector3(, , -), new Vector3(, , -), new Vector3(, , -), };
//uv纹理坐标
mesh.uv = new Vector2[] { new Vector2(, ), new Vector2(, ), new Vector2(, ), new Vector2(, ) };
}
}
三角形+三角形 = 四边形

顶点信息
从下图可以看出,共有2个三角形,4个顶点

改变顶点信息
设置的三角形顶点顺序不同,绘制出来的效果也不相同 (mesh.triangles = new int[6] { 0, 2, 1, 0, 3, 1 };)

顶点 纹理 图解

实现步骤
1、创建一个空的GameObject,绑定Mesh Filter及Mesh Renderer组件

2、创建一个Material,拖一张图片进去,修改Shader为透明Shader

3、把2创建的Material赋给1创建的GameObject的Mesh Renderer的Materiials

4、这个时候默认在场景中是看不到这个GameObject渲染的

5、创建脚本MeshTest.cs 代码如Demo1,绑定在GameObject上,运行查看效果
6、创建脚本MyMesh.cs 代码如Demo2,绑定在GameObject上,运行查看效果
其它方法
创建一个Quad,不需要运行在Scene场景就可以看到


文献资料
其它方法的资料
Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)http://www.xuanyusong.com/archives/780
<Unity3D>Unity3D中MeshRenderer的使用 http://blog.csdn.net/zuoyamin/article/details/9287507
[Unity3D学习]Mesh创建三角形、长方形 http://blog.gamerisker.com/archives/494.html
三角网格(Triangle Mesh) http://lib.yoekey.com/?p=120
【Unity C#编程】制作星星(一)http://unity3d.9tech.cn/news/2014/0324/40085.html
C#代码创建3D模型的更多相关文章
- DNA分子结构3D模型
生物信息资源更新越来越快,使用可视化的方法来分析DNA序列已成为生物信息学的一个研究热点,用图形表示DNA序列的方法也越来越成熟.2011年,著名杂志<Science>发表一篇引起轰动的文 ...
- 3d模型一般怎么导入到到Threejs中使用
这是我之前做的一个demo,导入的3d模型文件是obj格式的,需要使用OBJLoader和MTLLoader, mtl文件用于描述多边形可视面貌的材质如果你可以导出obj.mtl文件的话,那么就可以使 ...
- 使用three.js创建3D机房模型-分享一
序:前段时间公司一次研讨会上,一市场部同事展现了同行业其他公司的3D机房,我司领导觉得这个可以研究研究,为了节约成本,我们在网上大量检索,最后找到一位前辈的博文[TWaver的技术博客],在那篇博文的 ...
- 【Unity】3.0 第3章 创建和导入3D模型
分类:Unity.C#.VS2015 创建日期:2016-04-02 一.简介 利用Unity内置的基本模型和工具,不需要借助任何其他的三维建模软件,就可以直接创建出各种3D模型,这是这一章我们首先学 ...
- Chem 3D中怎么创建立体模型
ChemDraw作为一款很受大家欢迎的化学绘图软件,其在绘制平面化学方面的功能已经非常的强大了,其实它也可以绘制3D图形.Chem 3D就是绘制3D图形的重要组件.而且为了满足不同的用户绘图的需求,可 ...
- 工控图表控件ProEssentials创建3D柱状图示例代码
使用ProEssentials可以创建3D柱状图,柱状图的形式包括线框.实体和阴影. 类似于Graph control,3D柱状图只需要YData. Subsets定义沿z轴有多少行,Points定义 ...
- ANDROID嵌入式应用Unity3D视图(画廊3D模型)
转载请注明来自大型玉米的博客文章(http://blog.csdn.net/a396901990),谢谢支持! 效果展示: watermark/2/text/aHR0cDovL2Jsb2cuY3N ...
- 利用Flare3D和Stage3D创建3D
Flare3D 是一款功能强大的引擎,它使得 Flash 中的 3D 内容管理变得更为简便. 它的设计宗旨是提供一个完美的开发工作流程,以便你能够获得事半功倍的效果. 本教程侧重讨论在 Flash 中 ...
- three.js实现3D模型展示
由于项目需要展示3d模型,所以对three做了点研究,分享出来 希望能帮到大家 先看看效果: three.js整体来说 不是很难 只要你静下心来研究研究 很快就会上手的 首先我们在页面上需要创建一个能 ...
随机推荐
- VM虚拟机忘记密码
关掉虚拟机. VM->Settings,选中Hard Disk,在右边出现了Utilities的一个下拉栏,OK,点击它选择Map,这时弹出一个"Map Virtual Disk&qu ...
- Hexo建博小结
本来只写在自己的github pages中的,想一想万一有人看呢,虽然同类的文章有不少了,但有些新坑他们没填啊,姑且放出来啦... 拥有自己的博客是一个很酷的事情,但自己建站总是太麻烦了,步骤繁多,管 ...
- Mssql链接mysql数据库
最近在做mysql数据库实时同步到mssql数据库的方案,花了一周时间,测试通过了,在实际机器上测试出现了若干问题.第一个问题就是在mssql上链接mysql的问题. 第一步,安装 Mysql ODB ...
- C语言接口与实现实例
一个模块有两部分组成:接口和实现.接口指明模块要做什么,它声明了使用该模块的代码可用的标识符.类型和例程,实现指明模块是如何完成其接口声明的目标的,一个给定的模块通常只有一个接口,但是可能会有许多种实 ...
- 高级iOS面试题
非标准答案 2 1: 类方法是可以直接通过类名直接调用,无需进行实例化对象.类方法是以+开头2. 实例方法,需要显示实例化对象,为对象分配堆栈空间,并通过对象实例调用实例方法3. RUNTIME 是在 ...
- ListView嵌套出现的问题
项目中一个列表子项中也需要用到列表,这就不由得使我想到ListView的嵌套,其实这个东西想想也只是复杂了一点,并没有什么难的地方,可是却依然在这里狠狠滴栽个跟头.问题出在子列表动态展开的操作上.可能 ...
- C语言-06-复杂数据类型
一.数组 1> 数组的定义和初始化 定义 ① 数组定义了同种类型数据的集合 ② 定义数组时,数组必须有固定的长度 初始化 ① 如果在定义数组时,初始化数组,数组元素的个数必须是常量 ② 如果不在 ...
- JavaScript Patterns 4.2 Callback Pattern
function writeCode(callback) { // do something... callback(); // ... } function introduceBugs() { // ...
- ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
当你碰到ORA-12520错误时,如下所示: 英文:ORA-12520: TNS:listener could not find available handler for requested typ ...
- HTTPS(SSL/TLS) 原理之深入浅出
注:本文参考自网络上的多篇HTTPS相关文章,本人根据自己的理解,进行一些修改,综合. 1. 必要的加密解密基础知识 1)对称加密算法:就是加密和解密使用同一个密钥的加密算法.因为加密方和解密方使用的 ...