Wenden Sie Mesh Color oder Mesh Color32 an und rendern Sie sie für die prozedurale ErzeugungC++

Programme in C++. Entwicklerforum
Anonymous
 Wenden Sie Mesh Color oder Mesh Color32 an und rendern Sie sie für die prozedurale Erzeugung

Post by Anonymous »

Ich bin hier, weil ich ein Problem mit meinem Projekt habe. Ich habe 6 Quads zum Erstellen eines Würfels erstellt und es gibt das Ergebnis: < /p>
Mein fabelhafter Würfel ohne Textur oder Farbe < /p>
Während dieser Kreation gebe ich meinem Quad eine Farbe mit Mesh.Color. Aber es wirkt sich nicht auf die Quad-Farbe aus, und nimm die Farbe nicht. />
https://docs.unity3d.com/scriptreferenc ... ors32.html
Meine Frage lautet also: Wie kann ich Farbe oder Color32 auf meinem Netz verwenden, um einen Würfel mit Farbe zu erstellen?

Code: Select all

public class World : MonoBehaviour
{
enum Cubeside { Bottom, Top, Left, Right, Front, Back };
//public void SetColors(List inColors);

public float quadSize = 0.5f;

private int id;
// Red , Green , Blue
private List RGBColor;
private float Opacity;
//public Color32[] VoxelColors = new Color32[] { new Color32(255, 105, 205, 225)};
//public Color32 VoxelColors = new Color32(255, 105, 205, 225);
public Color[] VoxelColorsSimple;

/// 
/// Permet de créer une face du cube
/// 
/// 
Définie le coté que l'on doit créer
/// Aucun return
void CreateQuad(Cubeside side)
{
int colorRed = 255;
int ColorGreen = 105;
int ColorBlue = 205;

Color32 C32Red = new Color32(255, 0, 0, 255);
Color CRed = new Color(1f, 0f, 0f, 1f);
Color32[] VoxelColors = new Color32[] { C32Red };
Color mycolor = Color.red;

Mesh mesh = new Mesh();
mesh.name = "ScriptedMesh";

Vector3[] vertices = new Vector3[4];
Vector3[] normals = new Vector3[4];
int[] triangles = new int[6];

//all possible vertices
//Positionnement des 8 vertices nécessaire à notre cube ( les 8 cotés du cube )
Vector3 p0 = new Vector3(-quadSize, -quadSize, quadSize);
Vector3 p1 = new Vector3(quadSize, -quadSize, quadSize);
Vector3 p2 = new Vector3(quadSize, -quadSize, -quadSize);
Vector3 p3 = new Vector3(-quadSize, -quadSize, -quadSize);
Vector3 p4 = new Vector3(-quadSize, quadSize, quadSize);
Vector3 p5 = new Vector3(quadSize, quadSize, quadSize);
Vector3 p6 = new Vector3(quadSize, quadSize, -quadSize);
Vector3 p7 = new Vector3(-quadSize, quadSize, -quadSize);

//+------+.      +------+       +------+       +------+      .+------+
//|`.    | `.    |\     |\      |      |      /|     /|    .' |    .'|
//|  `+--+---+   | +----+-+     +------+     +-+----+ |   +---+--+'  |
//|   |  |   |   | |    | |     |      |     | |    | |   |   |  |   |
//+---+--+.  |   +-+----+ |     +------+     | +----+-+   |  .+--+---+
// `.  |    `.|    \|     \|     |      |     |/     |/    |.'    | .'
//   `+------+     +------+     +------+     +------+     +------+'
//Création des différents carré à partir de 2 triangle rectangle

switch(side)
{
case Cubeside.Front :
//Nous prenons 4 coté du cube
vertices = new Vector3[] { p4, p5, p1, p0 };
//nous rajoutons des normals avec la direction
normals = new Vector3[] { Vector3.forward, Vector3.forward, Vector3.forward, Vector3.forward };
//Nous créons les triangles sur la face du cube 3 1 0 étant en haut à droite et 3 2 1 en bas à gauche
triangles = new int[] { 3, 1, 0, 3, 2, 1 };
break;
case Cubeside.Bottom :
vertices = new Vector3[] { p0, p1, p2, p3 };
normals = new Vector3[] { Vector3.down, Vector3.down, Vector3.down, Vector3.down };
triangles = new int[] { 3, 1, 0, 3, 2, 1 };
break;
case Cubeside.Top:
vertices = new Vector3[] { p7, p6, p5, p4 };
normals = new Vector3[] { Vector3.up, Vector3.up, Vector3.up, Vector3.up };
triangles = new int[] { 3, 1, 0, 3, 2, 1 };
break;
case Cubeside.Left:
vertices = new Vector3[] { p7, p4, p0, p3 };
normals = new Vector3[] { Vector3.left, Vector3.left, Vector3.left, Vector3.left };
triangles = new int[] { 3, 1, 0, 3, 2, 1 };
break;
case Cubeside.Right:
vertices = new Vector3[] { p5, p6, p2, p1 };
normals = new Vector3[] { Vector3.right, Vector3.right, Vector3.right, Vector3.right };
triangles = new int[] { 3, 1, 0, 3, 2, 1 };
break;
case Cubeside.Back:
vertices = new Vector3[] { p6, p7, p3, p2 };
normals = new Vector3[] { Vector3.back, Vector3.back, Vector3.back, Vector3.back };
triangles = new int[] { 3, 1, 0, 3, 2, 1 };
break;
}

mesh.vertices = vertices;
mesh.normals = normals;
mesh.triangles = triangles;
Color[] tempColor = new Color[mesh.vertices.Length];
for ( int cpt = 0; cpt < mesh.vertices.Length; cpt++)
{
tempColor[cpt] = Color.red;
}
VoxelColorsSimple = tempColor;
mesh.colors = VoxelColorsSimple;

GameObject quad = new GameObject("quad");
quad.transform.parent = this.gameObject.transform;
MeshFilter meshFilter = (MeshFilter)quad.AddComponent(typeof(MeshFilter));
meshFilter.mesh = mesh;
MeshRenderer renderer = quad.AddComponent(typeof(MeshRenderer)) as MeshRenderer;

/* //I don't want to use material
Material mat = Resources.Load("VoxelMaterial") as Material;
renderer.material = mat;*/

}

// Use this for initialization
void Start()
{
CreateQuad(Cubeside.Front);
CreateQuad(Cubeside.Bottom);
CreateQuad(Cubeside.Top);
CreateQuad(Cubeside.Left);
CreateQuad(Cubeside.Right);
CreateQuad(Cubeside.Back);
}

// Update is called once per frame
void Update()
{
}
}
Und dieses Skript ist mit meinem leeren Objekt "Welt" hier verknüpft:
Hierarchie meines Projekts

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post