Example #1
0
        public void BakeTextureFromModel()
        {
            if (string.IsNullOrEmpty(paletteModel))
            {
                Debug.Log("[GameResources] BakeTextureFromModel: paletteModel is not defined");
                return;
            }

            // Load qbt file
            string  qbtPath = GameConfig.Instance.GetModelsPath() + "/" + paletteModel + ".qbt";
            QBTFile qbtFile = new QBTFile(qbtPath);

            // Create texture
            colorTexture.Init();
            colorTexture.AddColors(qbtFile.Colors.ToArray());

            // Save texture
            string texturePath = Application.dataPath + "/Core/VoxelModels/Textures/Voxel.png";

            File.WriteAllBytes(texturePath, colorTexture.Texture.EncodeToPNG());
            AssetDatabase.Refresh();

            Material material = (Material)(AssetDatabase.LoadAssetAtPath("Assets/Core/VoxelModels/Materials/Voxel.mat", typeof(Material)));

            if (material == null)
            {
                throw new UnityException("Null material");
            }

            material.mainTexture = (Texture2D)(AssetDatabase.LoadAssetAtPath("Assets/Core/VoxelModels/Textures/Voxel.png", typeof(Texture2D)));

            AssetDatabase.SaveAssets();

            Debug.Log(material.name);
        }
Example #2
0
        void Start()
        {
            meshFilter   = GetComponent <MeshFilter>();
            meshCollider = GetComponent <MeshCollider>();
            meshRenderer = GetComponent <MeshRenderer>();
            colorTexture = GameManager.Instance.GetColorTexture();
//			voxelMeshBuilder = GameManager.Instance.GetVoxelMeshBuilder();
            chunkSimplifier = GameObject.Find("/Managers/ChunkSimplifier").GetComponent <ChunkSimplifier>();

            QBTFile qbtFile = LoadQubicleFile();

            QBTFile.VoxelData[,,] qbtData = qbtFile.VoxelsData;

            colorTexture.AddColors(qbtFile.Colors.ToArray());

            sizeX = qbtData.GetLength(0);
            sizeY = qbtData.GetLength(1);
            sizeZ = qbtData.GetLength(2);

            chunk = new Chunk(sizeX, sizeY, sizeZ);
            for (int x = 0; x < sizeX; x++)
            {
                for (int y = 0; y < sizeY; y++)
                {
                    for (int z = 0; z < sizeZ; z++)
                    {
                        if (qbtData[x, y, z].m != 0)
                        {
                            // The z axis is reversed in qubicle
                            chunk.SetVoxel(
                                x, y, sizeZ - 1 - z,
                                Voxel.Type.Solid,
                                qbtData[x, y, z].Color
                                );
                        }
                    }
                }
            }

            meshRenderer.sharedMaterial.mainTexture = colorTexture.Texture;

//			MeshData meshData = voxelMeshBuilder.BuildMesh(chunk);
//			voxelMeshBuilder.RenderMesh(meshData, meshFilter, meshCollider);

            MeshData meshData = chunkSimplifier.BuildMesh(chunk);

            chunkSimplifier.RenderMesh(meshData, meshFilter, meshCollider);
        }