2016-06-10 3 views
0

Я пытаюсь создать программный объект gameObject, создав сетку, используя только вершины и грани. GameObject создан, но я ничего не вижу. Я искал проблему, но не нашел удовлетворительного ответа. У меня есть другой вопрос: я знаю, что вершины в гранях должны быть по часовой стрелке, но что это значит? например, предположим, что у меня есть лицо с индексами вершин 5,6,7, затем я сначала получаю доступ к массиву вершин и проверяю, где лежит каждая вершина, и упорядочивать их индексы по часовой стрелке в массиве лиц? Возможно, я ошибаюсь в этом, но я попытался упорядочить индексы вершин в массиве «Лица» любым способом, но он все еще не работает.Проблема при отображении 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 Я понимаю это. Единство использует по часовой стрелке грани, согласно моим знаниям. Но чтобы определить порядок вершин по часовой стрелке, нужно знать, где вершины расположены в трехмерном пространстве, или я могу просто предположить, что возрастающий порядок вершин равен направлению по часовой стрелке? – collosalkid

+0

Нет, потому что при определении индексов вершин, которые определяют лицо, вы делаете это с точки зрения _ единственного лица_, которое по определению ** плоское ** существенно сводит проблему к задаче 2D. При указании индексов представьте, что вы смотрите на лицо по направлению лица. Если бы это был куб, вы бы повторили эту операцию 6 раз – MickyD

ответ

0

Никто не может видеть, что ваши Vertices и Faces выглядят так, поэтому я не исключаю проблему.

Единственная проблема, которую я вижу сейчас, - это не добавление шейдера. Если вы не добавить затенения к сетке, она будет быть видна в Scene View с фиолетовым цветом, но это будет в Game Viewневидимый.

Последняя строка кода:

model.AddComponent(typeof(MeshRenderer)); 

должен быть продлен до:

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

меша должно отобразиться. В противном случае что-то не так с вашими вершинами, треугольниками, которые не были отправлены в ваш вопрос. Понимание материала по часовой стрелке тяжело без визуальных изображений. Это guy объясняет это лучшим на youtube с реальной маркированной коробкой, и я предлагаю вам посмотреть, что перед тем, как сделать какие-либо комментарии.