2016-06-10 51 views
0

我試圖通過僅使用頂點和麪創建網格來以編程方式創建一個gameObject。 GameObject被創建,但我看不到任何顯示。我已經搜索了這個問題,但還沒有找到任何滿意的答案。我還有另一個問題,即我知道面部中的頂點應該是順時針方向的,但這是什麼意思?例如,假設我有一個頂點索引爲5,6,7的面,那麼我是否首先訪問頂點數組並檢查每個頂點所在的位置,並按順時針方向將它們的索引排列在faces數組中?也許我在這裏出錯了,但我嘗試過以各種方式在'Faces'數組中排列頂點索引,但它仍然不起作用。以編程方式顯示GameObject的問題Unity C#

// Vertices is a double array 
    mesh.vertices = Vertices.ToArray(); 
    // Faces is an int array 
    mesh.triangles = Faces.ToArray(); 

    mesh.RecalculateNormals(); 

    mesh.RecalculateBounds(); 

    mesh.name = "Imported Model"; 


    model = new GameObject("Model"); 

    MeshFilter meshFilter = model.AddComponent<MeshFilter>(); 

    meshFilter.mesh = mesh; 

    model.AddComponent(typeof(MeshRenderer)); 

在此先感謝。

+0

_「順時針方向,但這意味着什麼?」_ - 它用於構成臉部的頂點的卷繞順序。臉部只能從一側看到,而側面則由與3D引擎相關的收卷順序定義。如果你弄錯了,那麼它就不會從你期望的一面看到。例如地面可能只在你下面可見時纔可見 – MickyD

+0

@MickyD我明白這一點。根據我的知識,Unity使用順時針方向的面。但爲了確定頂點的順時針順序,我是否需要知道頂點在三維空間中的位置,還是我可以假設頂點的升序是順時針方向? – collosalkid

+0

不,因爲在確定定義一個人臉的頂點索引時,你從一個_single face_的角度來看這樣做,根據定義,** flat **從本質上將問題簡化爲2D。指定索引時,假設您正在從臉部正常方向看臉部。所以如果這是一個立方體,你會重複這個操作6次 – MickyD

回答

0

沒有人可以看到你的VerticesFaces是什麼樣子,所以我不排除這個問題。

我現在看到的唯一問題是不添加着色器。如果不加着色器網格,它是在場景視圖可見帶有紫色,但它會在遊戲查看無形

你的代碼的最後一行:

model.AddComponent(typeof(MeshRenderer)); 

應該擴展到:

MeshRenderer renderer = model.AddComponent(typeof(MeshRenderer)) as MeshRenderer; 
renderer.material.shader = Shader.Find("Particles/Additive"); 

你的網現在應該顯示。否則,你的頂點有問題,三角形沒有發佈在你的問題中。理解順時針的東西很難,沒有視覺圖像。這guy解釋它與youtube上最好的一個真正的標籤框,我建議你看任何評論之前。

相關問題