[Record] Draw a Cube with Unity3D via Creat an object,get Mesh,set Mesh and Render Mesh
2017-04-11 17:33
309 查看
Tools: Unity3D (5.5),VS2015, C#
Test environment: Hololens (UWP)
Some code come from WEB,Thanks for the beginner!
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.
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,1 4000 7, 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.
相关文章推荐
- An End-to-End Approach to Natural Language Object Retrieval via Context-Aware Deep Reinforcement Lea
- Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
- Xap packaging failed , Object reference not set to an instance of an object.
- This qt version uses an unsupported makefile generator object reference not set to an instance of an
- Object reference not set to an instance of an object.
- Object reference not set to an instance of an object.
- SQLServer2005打开表时出现“Object reference not set to an instance of an object. (SQLEditors)”错误的解决办法
- 20100507 学习记录: Server Error in '/' Application. Object reference not set to an instance of an object
- What is the relationship between the From, Contact, Via and Record-Route/Route headers?
- vs 新建项目 未将对象引用设置到实例(Object reference is not set to an object)
- java异常:Could not create and/or set value back on to object 总结
- NET:Error Creating Control -"Object Reference Not Set To An Instance Of Object"
- WebAdaptor Object reference not set to an instance of an object.
- Functional And Object Oriented Analysis And Design: An Integrated Methodology
- 微信小程序 setData accepts an Object rather than some undefined 解决办法
- vs数据库访问出现Object reference not set to an instance of an object. 错误解决办法
- Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Even
- Setting the Reply-To Header in an Email using CDONTS.NewMail Object and CDO Message
- 论文提要“Improving Object Detection with DCN via Bayesian Optimization and Structured Prediction”
- Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier解决办法