[Record] Draw a Cube with Unity3D via Creat an object,get Mesh,set Mesh and Render Mesh

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.

内容概要:本文档详细介绍了一个利用Matlab实现Transformer-Adaboost结合的时间序列预测项目实例。项目涵盖Transformer架构的时间序列特征提取与建模,Adaboost集成方法用于增强预测性能,以及详细的模型设计思路、训练、评估过程和最终的GUI可视化。整个项目强调数据预处理、窗口化操作、模型训练及其优化(包括正则化、早停等手段)、模型融合策略和技术部署,如GPU加速等,并展示了通过多个评估指标衡量预测效果。此外,还提出了未来的改进建议和发展方向,涵盖了多层次集成学习、智能决策支持、自动化超参数调整等多个方面。最后部分阐述了在金融预测、销售数据预测等领域中的广泛应用可能性。 适合人群:具有一定编程经验的研发人员,尤其对时间序列预测感兴趣的研究者和技术从业者。 使用场景及目标:该项目适用于需要进行高质量时间序列预测的企业或机构,比如金融机构、能源供应商和服务商、电子商务公司。目标包括但不限于金融市场的波动性预测、电力负荷预估和库存管理。该系统可以部署到各类平台,如Linux服务器集群或云计算环境,为用户提供实时准确的预测服务,并支持扩展以满足更高频率的数据吞吐量需求。 其他说明:此文档不仅包含了丰富的理论分析,还有大量实用的操作指南,从项目构思到具体的代码片段都有详细记录,使用户能够轻松复制并改进这一时间序列预测方案。文中提供的完整代码和详细的注释有助于加速学习进程,并激发更多创新想法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值