- Home /
 
To color each single cube from texture
Hello guys ... i need help. This is a final result that i want to get: https://imgur.com/vjcVCst (this image come from Blender software - i need to make for example a cube-giraffe - is only an example) I made a script where i created some cubes in base of vertexs position. I need you help to recreate color information of texture and to color each single cube with the corresponding color. How i can do this?
This is the code to make the vertex-cube:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class CubeVertex : MonoBehaviour
 {
     Mesh mesh;
     Vector3[] vertices;
     public GameObject particles;
     [Range(0.0f,10.0f)]
     public float scaleObj;
     Color[] colors;
     public Material newMat;
     public Color colorOrigin;
 
     public Texture2D sourceTex;
     Color [] colorArray;
 
 
     Texture2D destTex;
     public Vector2[] uv;
  
     
 
     int index = 0;
     float someHeight = 1;
 
     // Start is called before the first frame update
     void Start()
     {
            mesh = this.GetComponent<MeshFilter>().mesh;
         vertices = mesh.vertices;
         colors = new Color[vertices.Length];
         colorArray = sourceTex.GetPixels();
         
         
 
         // Set up a new texture with the same dimensions as the original.
         destTex = new Texture2D(sourceTex.width, sourceTex.height);
         
 
     
 
           uv = new Vector2[vertices.Length];
      
              for (int x = 0; x < destTex.height; x++)
              {
                  for (int z = 0; z < destTex.width; z++)
                  {
                      vertices[index] = new Vector3(x, someHeight, z);
                     uv[index] = new Vector2(x / (float)destTex.height, z / (float)destTex.width);
                      index++;
                      Debug.Log(index);
                  }
              }
 
          for (var i = 0; i < vertices.Length; i++)
         {
             Vector3 coords = new Vector3(vertices[i].x,vertices[i].y,vertices[i].z);
             GameObject obj = (GameObject)Instantiate(particles, coords , Quaternion.identity);
             obj.transform.localScale = new Vector3(scaleObj,scaleObj,scaleObj);
             obj.GetComponent<Renderer>().material = newMat;
               
               Color currentColor = sourceTex.GetPixelBilinear(uv[i].x,uv[i].y);
               obj.GetComponent<Renderer>().material.color = currentColor;
               
         }
 
 
 
     }
 
     
 }
 
               i tried to color the cube ... but is only an experiment. How i can recreate color information of texture and to color each single cube with the corresponding color? Logic the number of colorArray.Length is different from vertices.Length ... i repeat: this is only an experiment. Thanks you
this is a very simple result : https://imgur.com/Mp8tpoe ... the mesh is a free model online and needs only for this experiment. I can change the scale of cubes and to make a "new" cube-mesh. Thanks you netkingZ
Your answer
 
             Follow this Question
Related Questions
Color not appearing on created mesh? (only grey) 2 Answers
What is the most efficient way to sample the color at a point on a mesh? 1 Answer
UV map on an arch/ color issue 2 Answers
On Touch change color 2 Answers
UV-ing a sphere procedurally 1 Answer