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整体来说 不是很难 只要你静下心来研究研究 很快就会上手的 首先我们在页面上需要创建一个能 ...
随机推荐
- iOS 七牛云上传并获取图片----【客户端】
最近做了七牛云存储的有关内容,涉及到与后台交互获取验证的token,无奈,后台自命清高,不与理会,没办法呀,于是自己搞呗.首先呢在在七牛上注册一个账号,然后呢添加一个存储空间这时候空间名 ...
- 【GOF23设计模式】策略模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_策略模式.CRM中报价策略.GUI编程中布局管理器底层架构 package com.test.strategy; /** ...
- JS中标准对象
JS中标准对象1:不要使用new Number().new Boolean().new String()创建包装对象:2:用parseInt()或parseFloat()来转换任意类型到number: ...
- VS2015发布Webservice
第一步:开启IIs:在控制面板程序——>程序功能——>打开或关闭windows功能,把“Internet信息服务”下面的“FTP服务器”.“Web管理工具”.“万维网服务”全部勾上,然后点 ...
- Jeff Somers's N Queens Solutions 最快的n皇后算法
/* Jeff Somers * * Copyright (c) 2002 * * jsomers@alumni.williams.edu * or * allagash98@yahoo.com * ...
- Android 之 Intent(意图)
Intent是 Android中重要的桥梁之一,它分为显式意图和隐式意图.接下来分别针对这两种意图进行讲解. 显式意图:通过指定一组数据或动作,激活应用内部的 activity:(相比隐式意图,此做法 ...
- JSONKit解析json数据
先将第三方文件拖进工程 JSONKit.h和JSONKit.m 然后设置在ARC工程中添加MRC文件,如下图所示 #import "ViewController.h" #impor ...
- SVN Can't open file 'xxx':Premission denied
换了一台电脑,重新搭建本地svn服务器的时候,服务器搭起来了,但是用Cornerstone往服务器上传工程的时候报错 报错有以上两种,都是因为文件权限的限制 解决方法 第一种报错 1.在Finder里 ...
- android 定制自己的日志工具
最理想的情况是能够控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线之后就把日志屏蔽掉. 例如打印一行WARN级别的日志就可以写成这样: LogUtil.w("TAG" ...
- su su -
http://www.ha97.com/4001.html su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell:而后者连用户和Shell环 ...