Пример #1
0
    public void Build(Material defaultMaterial)
    {
        //Clear our large arrays
        if (mtlLines != null)
        {
            Array.Clear(mtlLines, 0, mtlLines.Length);
        }

        Array.Clear(objLines, 0, objLines.Length);

        var materialLibrary = new Dictionary <string, Material>();

        if (!string.IsNullOrEmpty(mtllib) && materialDataSlots != null)
        {
            foreach (MaterialData md in materialDataSlots)
            {
                if (materialLibrary.ContainsKey(md.Name))
                {
                    Debug.LogWarning("Duplicate material found: " + md.Name + ". ignored repeated occurences");
                    continue;
                }
                materialLibrary.Add(md.Name, GetMaterial(md, defaultMaterial));
            }
        }

        var gameObjects = new GameObject[buffer.NumberOfObjects];

        if (buffer.NumberOfObjects == 1)
        {
            //Single gameobject, single mesh
            gameObject.AddComponent(typeof(MeshFilter));
            gameObject.AddComponent(typeof(MeshRenderer));
            gameObjects[0] = gameObject;
        }
        else if (buffer.NumberOfObjects > 1)
        {
            for (int i = 0; i < buffer.NumberOfObjects; i++)
            {
                //Multi object with nested children
                var go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                gameObjects[i] = go;
            }
        }

        buffer.Trace();

        buffer.PopulateMeshes(gameObjects, materialLibrary, defaultMaterial);
    }
Пример #2
0
    private void Build()
    {
        Dictionary <string, Material> materials = new Dictionary <string, Material>();
        Material m;

        if (hasMaterials && mtl_reader != null)
        {
            Debug.Log("Obj import :: MATERIAL read");
            foreach (MaterialData md in materialData)
            {
                materials.Add(md.name, GetMaterial(md));
            }
        }
        else
        {
            Debug.Log("Obj import :: NO MATERIAL read");
            m = new Material(Shader.Find("Mat Cap Cut"));
            materials.Add("default", m);
            m.SetTexture("_MatCap", (Texture)Resources.Load("lit_spheres/divers/daphz1"));
        }

        GameObject[] ms = new GameObject[buffer.numObjects];

        if (buffer.numObjects == 1)
        {
            ms[0]      = new GameObject("SurfaceOBJ");
            ms[0].name = "SurfaceOBJ";
            ms[0].tag  = "SurfaceManager";
            Debug.Log("New OBJ surface generated");
            ms[0].transform.parent = GameObject.Find("SurfaceManager").transform;
            ms[0].AddComponent(typeof(MeshFilter));
            ms[0].AddComponent(typeof(MeshRenderer));
//			ms[0] = gameObject;
        }
        else if (buffer.numObjects > 1)
        {
            for (int i = 0; i < buffer.numObjects; i++)
            {
                GameObject go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                ms[i] = go;
            }
        }
        Debug.Log("nb vertice :" + compteurvertice);
        buffer.PopulateMeshes(ms, materials);
    }
Пример #3
0
    private void Build()
    {
        Dictionary <string, Material> materials = new Dictionary <string, Material>();

        if (hasMaterials)
        {
            foreach (MaterialData md in materialData)
            {
                if (materials.ContainsKey(md.name))
                {
                    Debug.LogWarning("duplicate material found: " + md.name + ". ignored repeated occurences");
                    continue;
                }
                materials.Add(md.name, GetMaterial(md));
            }
        }
        else
        {
            materials.Add("default", new Material(Shader.Find("VertexLit")));
        }

        GameObject[] ms = new GameObject[buffer.numObjects];

        if (buffer.numObjects == 1)
        {
            gameObject.AddComponent(typeof(MeshFilter));
            gameObject.AddComponent(typeof(MeshRenderer));
            ms[0] = gameObject;
        }
        else if (buffer.numObjects > 1)
        {
            for (int i = 0; i < buffer.numObjects; i++)
            {
                GameObject go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                ms[i] = go;
            }
        }

        buffer.PopulateMeshes(ms, materials);
        if (null != callback)
        {
            loadresult = "Import Succeed";
            callback(loadresult);
        }
    }
Пример #4
0
    private void Build()
    {
        Dictionary <string, Material> materials = new Dictionary <string, Material>();

        if (hasMaterials)
        {
            foreach (MaterialData md in materialData)
            {
                if (materials.ContainsKey(md.name))
                {
                    //Debug.LogWarning("duplicate material found: "+ md.name+ ". ignored repeated occurences");
                    continue;
                }
                materials.Add(md.name, GetMaterial(md));
            }
        }
        else
        {
            Material m = new Material(Shader.Find("Standard"));
            SetupMaterialWithBlendMode(m, BlendMode.Fade);
            materials.Add("default", m);
        }

        GameObject[] ms = new GameObject[buffer.numObjects];

        if (buffer.numObjects == 1)
        {
            gameObject.AddComponent(typeof(MeshFilter));
            gameObject.AddComponent(typeof(MeshRenderer));
            ms[0] = gameObject;
            gameObject.transform.localPosition = new Vector3(0, 0, 0);
        }
        else if (buffer.numObjects > 1)
        {
            for (int i = 0; i < buffer.numObjects; i++)
            {
                GameObject go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                ms[i] = go;
            }
        }

        buffer.PopulateMeshes(ms, materials);
        //OpacityZero();
        flag++;
    }
Пример #5
0
    void Build()
    {
//		TODO: Materials
//		if(!string.IsNullOrEmpty (mtllib)) {
//			foreach(MaterialData md in materialData) {
//				if (materials.ContainsKey(md.Name)) {
//					Debug.LogWarning("Duplicate material found: " + md.Name + ". ignored repeated occurences");
//					continue;
//				}
//				materials.Add(md.Name, GetMaterial(md));
//			}
//		} else {
//			materials.Add("default", new Material(Shader.Find("VertexLit")));
//		}

        var materials = new Dictionary <string, Material>();

        materials.Add("default", new Material(Shader));

        var ms = new GameObject[buffer.NumberOfObjects];

        if (buffer.NumberOfObjects == 1)
        {
            gameObject.AddComponent(typeof(MeshFilter));
            gameObject.AddComponent(typeof(MeshRenderer));
            ms[0] = gameObject;
        }
        else if (buffer.NumberOfObjects > 1)
        {
            for (int i = 0; i < buffer.NumberOfObjects; i++)
            {
                var go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                ms[i] = go;
            }
        }
        buffer.PopulateMeshes(ms, materials);
    }
Пример #6
0
    private void Build()
    {
        Dictionary <string, Material> materials = new Dictionary <string, Material> ();

        if (hasMaterials)
        {
            foreach (MaterialData md in materialData)
            {
                materials.Add(md.name, GetMaterial(md));
            }
        }
        else
        {
            materials.Add("default", new Material(Shader.Find("VertexLit")));
        }

        GameObject[] ms = new GameObject[buffer.numObjects];

        if (buffer.numObjects == 1)
        {
            gameObject.AddComponent(typeof(MeshFilter));
            gameObject.AddComponent(typeof(MeshRenderer));
            ms [0] = gameObject;
        }
        else if (buffer.numObjects > 1)
        {
            for (int i = 0; i < buffer.numObjects; i++)
            {
                GameObject go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                ms [i] = go;
            }
        }

        buffer.PopulateMeshes(ms, materials);
    }
Пример #7
0
        private void Build(GeometryBuffer buffer, List<MaterialData> materialData, int x, int y, int z, int lod,
            Action<GameObject[]> registerCreatedObjects)
        {
            var materials = new Dictionary<string, Material[]>();

            foreach (var md in materialData)
            {
                if (!_materialCache.ContainsKey(md.Name))
                {
                    _materialCache[md.Name] = CubeBuilderHelpers.GetMaterial(UseUnlitShader, md);
                }
                materials.Add(md.Name, _materialCache[md.Name]);
            }

            var ms = new GameObject[buffer.NumObjects];

            for (var i = 0; i < buffer.NumObjects; i++)
            {
                var go = new GameObject();
                go.name = String.Format("cube_L{4}:{0}_{1}_{2}.{3}", x, y, z, i, lod);
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof (MeshFilter));
                go.AddComponent(typeof (MeshRenderer));
                ms[i] = go;
            }

            if (registerCreatedObjects != null)
            {
                registerCreatedObjects(ms);
            }

            buffer.PopulateMeshes(ms, materials);
        }
Пример #8
0
    ///Assemble
    private void Build()
    {
        Dictionary <string, Material> materials = new Dictionary <string, Material>();

        if (hasMaterials)
        {
            Material m = new Material(Shader.Find("Diffuse"));
            m.SetColor("_Color", new Color(0.5f, 0.5f, 0.5f, 1.0f));
            materials.Add("_spc_default", m);
            foreach (MaterialData md in materialData)
            {
                if (!materials.ContainsKey(md.name))
                {
                    materials.Add(md.name, GetMaterial(md));
                }
            }
        }
        else
        {
            Material m = new Material(Shader.Find("Diffuse"));
            m.SetColor("_Color", new Color(0.5f, 0.5f, 0.5f, 1.0f));
            materials.Add("_spc_default", m);
        }

        GameObject[] ms = new GameObject[buffer.numObjects];
        if (buffer.numObjects == 1)
        {
            if (!treatasoneobject)               //incase of one geometry but instantiated
            {
                GameObject go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                go.name = "_spc_rename_";
                ms[0]   = go;
            }
            else
            {
                gameObject.AddComponent(typeof(MeshFilter));
                gameObject.AddComponent(typeof(MeshRenderer));
                ms[0] = gameObject;
            }
        }
        else if (buffer.numObjects > 1)
        {
            for (int i = 0; i < buffer.numObjects; i++)
            {
                GameObject go = new GameObject();
                go.transform.parent = gameObject.transform;
                go.AddComponent(typeof(MeshFilter));
                go.AddComponent(typeof(MeshRenderer));
                ms[i] = go;
            }
        }
        buffer.PopulateMeshes(ms, materials);
        if (!treatasoneobject)
        {
            foreach (GameObject go in ms)
            {
                scaleoffset so = objso.Find(delegate(scaleoffset item) { return(item.name == go.name); });
                if (so != null)
                {
                    go.transform.localPosition = ((Vector3.zero - so.MainOffset) * mainso.MasterScale) - ((Vector3.zero - mainso.MainOffset) * mainso.MasterScale);
                }
            }
        }
    }