unity 脚本创建 MESH(网格)
来源:互联网 发布:手机淘宝兼职青青岛 编辑:程序博客网 时间:2024/04/29 09:33
Unity 脚本创建 Mesh
网格由点面 , 组成 , 每个面是三个顶点构成
代码如下:
using UnityEngine;using System.Collections;public class mesh01 : MonoBehaviour { // Use this for initialization void Start () { CreatePlane (); } // Update is called once per frame void Update () { } void CreatePlane(){ GameObject plane = new GameObject (); plane.name = "plane"; // 添加组件 MeshFilter mfilter =plane.AddComponent<MeshFilter> (); MeshRenderer render = plane.AddComponent<MeshRenderer> (); // 添加默认的材质 render.material=new Material(Shader.Find("Diffuse")); //mfilter.mesh = new Mesh (); Mesh mesh = mfilter.mesh; // 设置三个顶点 mesh .vertices = new Vector3[] { new Vector3 (0, 0, 0), new Vector3 (0, 1, 0), new Vector3 (1, 1, 0) }; // 设置三角形 (面) 这里 三个点的顺序 应该有(顺时针法则) mesh.triangles = new int[]{ 0,1,2 }; // 重新计算法线 mesh.RecalculateNormals (); }}
运行结果
三角形面的顺时针法则 (这个法则是我个人的叫法 不知相关是否有特定的名称。)
我们修改一下代码 在每一个顶点上添加一个物体以作说明
void CreatePlane(){ GameObject plane = new GameObject (); plane.name = "plane"; // 添加组件 MeshFilter mfilter =plane.AddComponent<MeshFilter> (); MeshRenderer render = plane.AddComponent<MeshRenderer> (); // 添加默认的材质 render.material=new Material(Shader.Find("Diffuse")); //mfilter.mesh = new Mesh (); Mesh mesh = mfilter.mesh; // 设置三个顶点 mesh .vertices = new Vector3[] { new Vector3 (0, 0, 0), new Vector3 (0, 1, 0), new Vector3 (1, 1, 0) }; GameObject a0 = GameObject.CreatePrimitive (PrimitiveType.Cube); a0.transform.position = mesh .vertices [0]; Vector3 miniScale = new Vector3 (0.1f, 0.1f, 0.1f); a0.transform.localScale = miniScale; a0.GetComponent<MeshRenderer> ().material.color = Color.red; GameObject a1 = GameObject.CreatePrimitive (PrimitiveType.Sphere); a1.transform.position = mesh .vertices [1]; a1.transform.localScale = miniScale; a1.GetComponent<MeshRenderer> ().material.color = Color.green; GameObject a2 = GameObject.CreatePrimitive (PrimitiveType.Cylinder); a2.transform.position = mesh .vertices [2]; a2.transform.localScale = miniScale; a2.GetComponent<MeshRenderer> ().material.color = Color.blue; // 设置三角形 (面) mesh.triangles = new int[]{ 0,1,2 }; // 重新计算法线 mesh.RecalculateNormals (); }
结果
0,1,2 顶点 分别是红方块 , 绿球 , 蓝圆柱
在这个角度 (主摄相机 是默认位置方向 位置(0,1,-10) 方向(0,0,0) )。就是在 Z 为-10 的位置看原点 (严格来说应该是看向 0,1,0 位置) 方向 是正Z 轴方向。 我们可以看到 0,1,2 顺序 的三角而 这时 是顺时针 下 —-> 上——> 右上 , 这时可以看到面
然后 我们 再设置一下主摄相机 的位置 和方向 位置 (0,1 ,10) 旋转(0,180,0)
结果
在这个结果 是摄相机 从Z =10 的位置看 原点, 方向为负Z轴, 0,1,2 的三角面 是逆时针
下 ——》上 ——》 上右 这时看不到三角面(因为三角面的背面是不渲染的)
阅读全文
0 0
- unity 脚本创建 MESH(网格)
- 【Unity】Unity Mesh 网格合并
- unity代码创建mesh
- 【Unity】Mesh网格编程(二)流体
- unity 网格Mesh占用内存公式
- unity之mesh renderer网格渲染器
- 【Unity】Mesh网格编程(三)万能网格几何形体
- unity mesh的自定义创建
- Unity 创建一个扇形Mesh
- Unity 动态创建mesh API
- 【Unity】Mesh网格编程(一)正二十面体
- 【Unity】Mesh网格编程(四)麦比乌斯环
- Unity 通过Mesh网格渲染绘制图形与字体
- 【Unity】Mesh网格编程(一)正二十面体
- Unity中创建自己的mesh以及动态修改mesh
- Unity中创建自己的mesh以及动态修改mesh
- Unity 3D 创建Mesh(一)
- Unity 3D 创建Mesh(二)
- angular实现商品查询验证等功能
- 期中考试
- 购物车车 主类
- java序列化原理及算法
- BitmapFactory.decodeResource为null的处理方法之一
- unity 脚本创建 MESH(网格)
- Git学习(二)+初试github
- unity内存优化心得-模型自动导入的Standard优化
- caffe入门学习(0):概述
- car 简单应用
- Python语言编程基础--Hello World程序、赋值语句、变量名
- React-Native native-echarts Android端打release版问题
- PopupWindow简单使用
- admob 广告代码参考 iOS banner广告