[Record] Draw a Cube with Unity3D via Creat an object,get Mesh,set Mesh and Render Mesh
来源:互联网 发布:秋水南风 捏脸数据成男 编辑:程序博客网 时间:2024/06/17 14:54
Tools: Unity3D (5.5),VS2015, C#
Test environment: Hololens (UWP)
Some code come from WEB,Thanks for the beginner!
//code in Draw,script for camera:using UnityEngine;using System.Collections;[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]public class Test3D : MonoBehaviour{ public GameObject mMesh; // Use this for initialization void Start() { RenderMesh(); } public void RenderMesh() { /*Gameobject->Mesh->Material->Texture->Render->rotate*/ GameObject m_mesh = new GameObject(); m_mesh.name = "createMesh_TEST"; Mesh me = m_mesh.AddComponent<MeshFilter>().mesh; Material material = new Material(Shader.Find("Diffuse")); material.color = Color.gray ; m_mesh.AddComponent<MeshRenderer>().material = material; m_mesh.GetComponent<MeshRenderer>().material.mainTexture = (Texture)Resources.Load("background"); me.Clear(); me.vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 0, 1), new Vector3(1, 0, 1), new Vector3(1, 0, 0), //top new Vector3(0, 0, 1), new Vector3(0, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 0, 1), //back new Vector3(0, 1, 1), new Vector3(0, 1, 0), new Vector3(1, 1, 0), new Vector3(1, 1, 1), //bottom new Vector3(0, 1, 0), new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(1, 1, 0), //left new Vector3(0, 1, 0), new Vector3(0, 1, 1), new Vector3(0, 0, 1), new Vector3(0, 0, 0), //right new Vector3(1, 0, 0), new Vector3(1, 0, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 0), }; Vector3[] normals = new Vector3[me.vertices.Length]; for (int i = 0; i < normals.Length; i++) { if (i < 4) normals[i] = Vector3.forward; if (i >= 4 && i < 8) normals[i] = Vector3.up; if (i >= 8 && i < 12) normals[i] = Vector3.back; if (i >= 12 && i < 16) normals[i] = Vector3.down; if (i >= 16 && i < 20) normals[i] = Vector3.left; if (i >= 20 && i < 24) normals[i] = Vector3.right; } me.normals = normals; //triangles is important me.triangles = new int[] { 0,2,1, 0,3,2, 4,6,5, 4,7,6, 8,10,9, 8,11,10, 12,14,13, 12,15,14, 16,18,17, 16,19,18, 20,22,21, 20,23,22 }; Vector2[] uvs = new Vector2[me.vertices.Length]; for (int i = 0; i < uvs.Length; i += 4) { uvs[i] = new Vector2(0, 0); uvs[i + 1] = new Vector2(0, 1); uvs[i + 2] = new Vector2(1, 1); uvs[i + 3] = new Vector2(1, 0); } me.uv = uvs; me.RecalculateBounds(); me.RecalculateNormals(); m_mesh.AddComponent<rotate >(); GameObject.Find("createMesh_JQM").SendMessage("scale"); } void Update() { GameObject.Find("createMesh_TEST").SendMessage("rotater"); }}//Code in rotate ,for nothing using System.Collections;using System.Collections.Generic;using UnityEngine;public class rotate : MonoBehaviour { // Use this for initialization void Start () { GetComponent<Rigidbody>(); } // Update is called once per frame void Update () { } public void rotater() { transform.Rotate(Vector3.right * Time.deltaTime*10f); } public void scale() { transform.localScale = new Vector3(0.5f,0.5f,0.5f); }}
Tips:
1.Creat an object,get mesh,set mesh,render mesh and move it!
That is a very important path for custom model which beyond .OBJ,.FBX,.Unity ,ect;
and there is also a shortcut for the path Drawmesh:Graphics(for Unity Pro only).
2.Draw a triangle in unclockwise! Otherwise you will see through into the cube; and get wrong texture fixed.
3.Use Asset.Resources.Load(“”) to get your picture which used for texture and convert to class Texture like :
(Texture)Resources.Load(“background”);
4.If you have a model,you would get the Vertexs,triangels,normals,UV,UV2,and textures; first two are important!
5.I think I can give every gameobject I draw a script to control it,like this:
m_mesh.AddComponent< rotate >();
GameObject.Find(“createMesh_JQM”).SendMessage(“scale”);
That`s all.
- [Record] Draw a Cube with Unity3D via Creat an object,get Mesh,set Mesh and Render Mesh
- Mesh
- mesh
- Unity3d mesh Filter和mesh Render双生双克
- 【Unity3D】Mesh
- unity3d 更换装备mesh
- 【边玩边学Unity3d】Mesh属性
- 【边玩边学Unity3d】Mesh属性
- Unity3D-Mesh创建
- 【边玩边学Unity3d】Mesh属性
- Unity3D Mesh.bindposes
- Unity3D中的Mesh
- UNITY3D 自定义Mesh
- Unity3D 动态创建Mesh
- unity3d Mesh合并
- Unity3d生成Mesh
- Unity3d修炼之路:用Mesh绘制一个Cube
- Review:how to draw a mesh in xna
- JQuery load()方法
- iOS中 最新微信支付/最全的微信支付教程详解
- Qt5.7.1 树莓派3B+ 2016-09-23-raspbian-jessie.img 交叉编译 ubuntu16.04
- locate命令
- MacOS with Docker for Mac[使用oc cluster up 安装openshift origin]
- [Record] Draw a Cube with Unity3D via Creat an object,get Mesh,set Mesh and Render Mesh
- Linux安装mysql.tomcat.jdk
- 面向对象的特征
- 森林的双亲孩子表示法的设计与实现
- java回调机制经典例子
- 爬虫天坑系列-百度指数爬虫
- 第一次用MyEclipse写servlet遇到的问题和解决
- 如何让html页面中所有连接打开新页面
- 漫谈DQN之Q-Learning