2017-09-06 5 views
-1

私は手続き型地形生成システムに取り組んでいます。私はそれが低いポリ効果を持つようにしたかったのです。私は色のためのテクスチャを使用してみましたが、それは私が探していたものではありませんでした。代わりに私は三角形の色を個別に割り当てることに決めました。私はそれに問題があります。mesh.colorsが機能しません。メッシュは白です

メッシュを作成するためのコードです。

public Mesh CreateMesh() 
{ 
    Mesh mesh = new Mesh(); 
    mesh.vertices = vertices; 
    mesh.triangles = triangles; 
    mesh.uv = uvs; 

    Color[] colours = new Color[vertices.Length]; 

    for (int i = 0; i < triangles.Length; i++) 
    { 
     int vertIndex = triangles[i]; 
     if (i % 3 == 0) 
     { 
      colours[vertIndex] = Color.green; 
     } 
    } 

    mesh.colors = colours; 

    if (useFlatShading) 
    { 
     mesh.RecalculateNormals(); 
    } 
    else 
    { 
     mesh.normals = bakedNormals; 
    } 

    return mesh; 
} 

私は一時的にColor.greenを使用しています。ここでは、低ポリ効果を与えるためにフラットシェーディングに使用しているコードを示します。

void FlatShading() 
{ 
    Vector3[] flatShadedVertices = new Vector3[triangles.Length]; 
    Vector2[] flatShadedUvs = new Vector2[triangles.Length]; 

    for (int i = 0; i < triangles.Length; i++) 
    { 
     flatShadedVertices[i] = vertices[triangles[i]]; 
     flatShadedUvs[i] = uvs[triangles[i]]; 
     triangles[i] = i; 
    } 

    vertices = flatShadedVertices; 
    uvs = flatShadedUvs; 
} 

誰も問題を見ることができますか?もしそうでなければ、私は自分のコードをもう一度検索し、それを理解しようとします。

ありがとうございます!

EDIT:フラットシェーディングはBEFORE CreateMeshと呼ばれ、新しい頂点とuvはメッシュ自体に割り当てられる前に計算されます。

+0

どういう意味ですか?エラーはありますか?何を手に入れましたか、何を期待しましたか?今度は色の配列全体を色で塗りつぶしてそこから行くべきです。 – ElDuderino

答えて

-1

解決済み:Unlit/Textureでシェーダを持っていましたので、テクスチャが必要です。私の悪い!

関連する問題