- 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