Mesh学习笔记3-创建一个box
2015-03-20 17:29
375 查看
using UnityEngine; using System.Collections; //与面类似,只不过法线不是顶点了 public class MeshBox : MonoBehaviour { private float m_Length = 1f; private float m_Width = 1f; // Use this for initialization void Start () { Test (); } public void Test() { MeshBuilder meshBuilder = new MeshBuilder(); Vector3 upDir = Vector3.up * m_Length; Vector3 rightDir = Vector3.right * m_Width; Vector3 forwardDir = Vector3.forward * m_Length; Vector3 nearCorner = Vector3.zero; Vector3 farCorner = upDir + rightDir + forwardDir; BuildQuad(meshBuilder, nearCorner, forwardDir, rightDir); BuildQuad(meshBuilder, nearCorner, rightDir, upDir); BuildQuad(meshBuilder, nearCorner, upDir, forwardDir); BuildQuad(meshBuilder, farCorner, -rightDir, -forwardDir); BuildQuad(meshBuilder, farCorner, -upDir, -rightDir); BuildQuad(meshBuilder, farCorner, -forwardDir, -upDir); //Mesh mesh = meshBuilder.CreateMesh(); MeshFilter filter = this.gameObject.AddComponent<MeshFilter> (); if (filter != null) { filter.sharedMesh = meshBuilder.CreateMesh(); } MeshRenderer meshRender = this.gameObject.AddComponent<MeshRenderer> (); Shader shader = Shader.Find ("Diffuse"); meshRender.sharedMaterial = new Material (shader); } void BuildQuad(MeshBuilder meshBuilder, Vector3 offset, Vector3 widthDir, Vector3 lengthDir) { Vector3 normal = Vector3.Cross(lengthDir, widthDir).normalized; meshBuilder.Vertices.Add(offset); meshBuilder.UVs.Add(new Vector2(0.0f, 0.0f)); meshBuilder.Normals.Add(normal); meshBuilder.Vertices.Add(offset + lengthDir); meshBuilder.UVs.Add(new Vector2(0.0f, 1.0f)); meshBuilder.Normals.Add(normal); meshBuilder.Vertices.Add(offset + lengthDir + widthDir); meshBuilder.UVs.Add(new Vector2(1.0f, 1.0f)); meshBuilder.Normals.Add(normal); meshBuilder.Vertices.Add(offset + widthDir); meshBuilder.UVs.Add(new Vector2(1.0f, 0.0f)); meshBuilder.Normals.Add(normal); int baseIndex = meshBuilder.Vertices.Count - 4; meshBuilder.AddTriangle(baseIndex, baseIndex + 1, baseIndex + 2); meshBuilder.AddTriangle(baseIndex, baseIndex + 2, baseIndex + 3); } }
相关文章推荐
- Unity3D Mesh学习笔记1-创建一个最简单的四边形
- Jsp&Servelet 学习笔记-对一个Servlet创建多个Mapping
- Ext学习笔记一(使用Ext.Panel创建一个登录面板)
- sandy引擎学习笔记: 创建一个立方体
- SharePoint【学习笔记】-- 【Upgrading&Version版本升级】:Content Type Feature(一.创建和部署一个基本的Content Type Feature)
- Sharepoint学习笔记---SPList--创建一个带有Lookup字段的List
- 创建一个windows窗体--学习笔记一
- maven 学习笔记(二)创建一个简单的 eclipse+android+maven 工程
- maven 学习笔记(二)创建一个简单的 eclipse+android+maven 工程
- Sharepoint学习笔记---Upgrading&Version版本升级:Content Type Feature(一.创建和部署一个基本的Content Type Feature)
- node.js 学习笔记一:创建一个服务器
- sandy引擎学习笔记: 创建一个立方体
- MCSE 2003学习笔记 十二 创建一个HTTPS网站
- maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
- Jsp&Servelet 学习笔记-对一个Servlet创建多个Mapping
- Web Service学习笔记:创建一个示例和WebMethod特性解析
- SilverLight学习笔记--实际应用(一)(6):手把手建立一个Silverlight应用程序之创建数据校验类3
- CAD二次开发学习笔记二(创建一个对话框)
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- Extjs学习笔记2 -创建一个GridPanel