コード例 #1
0
ファイル: GCodeHandler.cs プロジェクト: Grosskopf/GCodeToMesh
    internal void CreateMesh(string meshname, Vector3d[] newVertices, Vector3[] newNormals, Vector2[] newUV, int[] newTriangles /*, Transform objectParent*/)
    {
        Mesh   mesh           = new Mesh(newVertices, newTriangles);
        string meshparentname = meshname.Split(' ')[0];

        mesh.Vertices = newVertices;
        mesh.Normals  = newNormals;
        MeshSimplifierstruct msc = new MeshSimplifierstruct();

        msc.ToSimplify = mesh;
        msc.name       = meshname;
        loader.meshSimplifierQueue.Add(msc);
        //}

        loader.simplifypossible = true;
    }
コード例 #2
0
    internal void createmesh(string meshname, Vector3[] newVertices, Vector3[] newNormals, Vector2[] newUV, int[] newTriangles, Transform objectParent)
    {
        Mesh       mesh = new Mesh();
        GameObject part = new GameObject(meshname);

        part.AddComponent(typeof(MeshFilter));
        part.AddComponent(typeof(MeshRenderer));
        var renderer = part.GetComponent <MeshRenderer>();

        renderer.material          = materialDictionary[0].mat;
        renderer.enabled           = false;
        renderer.receiveShadows    = false;
        renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
        foreach (MaterialPreference mp in materialDictionary)
        {
            if (mp.name == meshname.Split(' ')[0])
            {
                part.GetComponent <MeshRenderer>().material = mp.mat;
            }
        }
        //part.GetComponent<MeshRenderer>().material = GetComponent<MeshRenderer>().material;

        part.name = meshname;
        part.GetComponent <MeshFilter>().mesh = mesh;
        string meshparentname = meshname.Split(' ')[0];

        if (parentObjects.ContainsKey(meshparentname))
        {
            part.transform.SetParent(parentObjects[meshparentname].transform);
            allLayerObjects[meshparentname].Add(int.Parse(meshname.Split(' ')[1]), part);
        }
        else
        {
            GameObject parentobj = new GameObject(meshparentname);
            parentObjects.Add(meshparentname, parentobj);
            parentvisible.Add(meshparentname, true);
            part.transform.SetParent(parentObjects[meshparentname].transform);
            allLayerObjects.Add(meshparentname, new Dictionary <int, GameObject>());
            allLayerObjects[meshparentname].Add(int.Parse(meshname.Split(' ')[1]), part);
            parentobj.transform.SetParent(RootForObject.transform);
            parentobj.transform.localPosition = Vector3.zero;
            parentobj.transform.localScale    = Vector3.one;
            parentobj.transform.localRotation = Quaternion.identity;
        }
        part.transform.localPosition = Vector3.zero;
        part.transform.localScale    = Vector3.one;
        part.transform.localRotation = Quaternion.identity;
        mesh.vertices  = newVertices;
        mesh.normals   = newNormals;
        mesh.uv        = newUV;
        mesh.triangles = newTriangles;
        MeshSimplifier meshSimplifier = new MeshSimplifier();

        meshSimplifier.Initialize(mesh);
        MeshSimplifierstruct msc = new MeshSimplifierstruct();

        msc.MeshSimplifier = meshSimplifier;
        msc.MeshFilter     = part.GetComponent <MeshFilter>();
        //lock (meshSimplifierQueueLock)
        {
            loader.meshSimplifierQueue.Enqueue(msc);
        }

        loader.simplifypossible = true;
    }