2016-05-01 8 views
0

私はのカスタムでmeshを作っています(これは私が作ったGameObjectで起こっているようです)そして、エディタはいくつかの顔を消して、私がそれをもっとはっきりと見ることができるようにします。これがどのように役立つのか理解できましたが、ゲームプレイだけでなくプロジェクトに取り組んでいるだけでは迷惑です。私がチェックを外さなければならない箱があるかもしれないが、それが何であるかわからない。私はいくつかのスクリーンショットを含んでいます(最初のものはゲームに、もう1つはエディタにあります。メッシュは完全なピラミッド形でなければなりません)。キューブの私のメッシュには、12の三角形、8つの頂点、およびuvがありません。デフォルトのメッシュには、24の頂点、12の三角形、uvとuv2があります。 Camera Settings私のメッシュの一部をレンダリングして他の部分を可視にしようとしていません

[EDIT]番号:

Screenshot in gameIn editor

は、ここに私のカメラの設定です!私は間違っていた! Regular cube

しかし、私のキューブに:ここで Nope

は、私が使用するコードです:

 if (GameObject.Find ("Hopefully a Cube") == null) { 

      GameObject cube = new GameObject ("Hopefully a Cube"); 
      Mesh mesh = new Mesh(); 

      Vector3[] verticies = new Vector3[8]; 
      verticies [0] = new Vector3 (0, 0, 0); 
      verticies [1] = new Vector3 (100, 0, 0); 
      verticies [2] = new Vector3 (0, 100, 0); 
      verticies [3] = new Vector3 (100, 100, 0); 

      verticies [4] = new Vector3 (0, 0, 100); 
      verticies [5] = new Vector3 (100, 0, 100); 
      verticies [6] = new Vector3 (0, 100, 100); 
      verticies [7] = new Vector3 (100, 100, 100); 

      mesh.vertices = verticies; 

      int[] tris = new int[36]; 
      tris = new[] { 0, 2, 1, 2, 3, 1, 4, 2, 0, 6, 2, 4, 4, 6, 5, 6, 7, 5, 1, 3, 5, 3, 7, 5, 0, 4, 1, 4, 5, 1, 2, 6, 3, 6, 7, 3 }; 
      mesh.triangles = tris; 

      mesh.RecalculateNormals(); 

      MeshFilter meshFilter = cube.AddComponent<MeshFilter>(); 
      meshFilter.mesh = mesh; 

      MeshRenderer meshRenderer = cube.AddComponent<MeshRenderer>(); 
      Texture2D texture = new Texture2D (1, 1); 
      texture.SetPixels (new[] { Color.blue }); 
      meshRenderer.sharedMaterial = new Material (meshShader); 
      meshRenderer.sharedMaterial.mainTexture = texture; 

      cube.SetActive (true); 

     } 

     if (GameObject.Find ("Hopefully a Pyramid") == null) { 

      GameObject pyramid = new GameObject ("Hopefully a Pyramid"); 
      Mesh mesh = new Mesh(); 

      Vector3[] verticies = new Vector3[5]; 
      verticies [0] = new Vector3 (0, 0, 0); 
      verticies [1] = new Vector3 (100, 0, 0); 
      verticies [2] = new Vector3 (0, 0, 100); 
      verticies [3] = new Vector3 (100, 0, 100); 
      verticies [4] = new Vector3 (50, 100, 50); 

      mesh.vertices = verticies; 

      int[] tris = new int[18]; 
      tris = new[] { 0, 2, 1, 2, 3, 1, 0, 4, 1, 2, 4, 0, 3, 4, 2, 3, 4, 1 }; 

      mesh.triangles = tris; 

      mesh.RecalculateNormals(); 

      MeshFilter meshFilter = pyramid.AddComponent<MeshFilter>(); 
      meshFilter.mesh = mesh; 

      MeshRenderer meshRenderer = pyramid.AddComponent<MeshRenderer>(); 
      Texture2D texture = new Texture2D (1, 1); 
      texture.SetPixels (new[] { Color.blue }); 
      meshRenderer.sharedMaterial = new Material (meshShader); 
      meshRenderer.sharedMaterial.mainTexture = texture; 

      pyramid.SetActive (true); 

     } 
+0

私は99%巻取順序と関係があると確信しています。あなたが最もよく見る効果は、「あなたがそれをよりはっきりと見ることができない」ということです。なぜなら、指標(または統一として三角形と呼んでいます。なぜなら、間違った順序にある​​からです。キューブを生成するために使用するコードを投稿してください。 – yes

+0

私が使用したコードを追加しました。 – dsiegler19

+0

@ dsiegler19が答えと簡単な説明を追加しました。正しいものとしてチェックしてください。 – yes

答えて

4
それはここではそれがデフォルト cubeおよびその他のデフォルトオブジェクト

と完全に正常に動作します

メッシュのインデックス(三角形の配列の整数)の順序が間違っています。彼らはあなたが顔を見る方向から時計回りにする必要があります。単純なヒントは、もしそれらがワングに見えたら、問題の三角形の2つのインデックスを反転させるだけです。

これはあなたの立方体です。

tris = new[] { 
    0, 2, 1, 2, 3, 1, 
    4, 2, 0, 6, 2, 4, 
    4, 5, 6, 6, 5, 7, 
    1, 3, 5, 3, 7, 5, 
    0, 1, 4, 4, 1, 5, 
    2, 6, 3, 6, 7, 3 
}; 

それは、このような奇妙なシェーディングを持っているなぜあなたは不思議場合は、24個の頂点のうちのキューブを作成し、違いを参照してください。これは、顔の法線が頂点の法線に依存するためです。 (頂点の色とUVに対しても同じです)。だから、もしあなたが頂点にしかそれらのフィーチャを設定することができないので、あなたが鋭いエッジ、隣接するフェイスまたはUVシームの頂点と異なる色を必要とするならば、フェース/エッジのための個々の頂点(1つのスポットで2つのvert)が必要です。

+1

大丈夫です。三角形の一部が時計回りに並べられていないので、正しくレンダリングされませんでした。ありがとう! – dsiegler19

関連する問題