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); }
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); }