CodeBlanks Logo Icon CodeBlanks

Mesh nedir?

Mesh'in 3D geometri taşıyan veri yapısı olduğunu öğrenirsin.

Mesh ve Vertex Kavramı

Mesh, 3D bir nesnenin geometrik şeklini tanımlayan temel veri yapısıdır. En küçük yapı taşı, 3D uzaydaki nokta koordinatlarını tutan köşelerdir (vertices). Bu köşeler C# tarafında Vector3 dizisi olarak saklanır.

Vector3[] koseler = mesh.vertices;
Debug.Log("Köşe sayısı: " + koseler.Length);

Üçgenler ve Yüzeyler (Triangles)

Köşe noktaları tek başına bir yüzey oluşturmaz; ekran kartının yüzey çizebilmesi için üçerli gruplar halinde üçgenlere bağlanır. mesh.triangles, köşelerin hangi sırayla birleşip yüzey oluşturacağını belirten tam sayı (int) indeks dizisidir. Her üç köşe indeksi bir üçgen yüzeyi meydana getirir.

int[] ucgenler = mesh.triangles;
int ucgenSayisi = ucgenler.Length / 3;

Uygulama Mesh Köşe ve Üçgen Analizi

Verilen mesh nesnesinin köşe sayısını ve üçgen sayısını hesapla. Köşe sayısını Debug.Log("Kose: " + koseSayisi);, üçgen sayısını Debug.Log("Ucgen: " + ucgenSayisi); ile yazdır.

Başlangıç kodu

Player.cs
using System;

public struct Vector3
{
    public float x, y, z;
    public Vector3(float x, float y, float z) { this.x = x; this.y = y; this.z = z; }
}

public class Mesh
{
    public Vector3[] vertices = new Vector3[4];
    public int[] triangles = new int[6];
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        Mesh mesh = new Mesh();
        // kose ve ucgen sayilarini hesaplayip konsola yazdir
    }
}

Örnek çözüm

Player.cs
using System;

public struct Vector3
{
    public float x, y, z;
    public Vector3(float x, float y, float z) { this.x = x; this.y = y; this.z = z; }
}

public class Mesh
{
    public Vector3[] vertices = new Vector3[4];
    public int[] triangles = new int[6];
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        Mesh mesh = new Mesh();
        int koseSayisi = mesh.vertices.Length;
        int ucgenSayisi = mesh.triangles.Length / 3;
        Debug.Log("Kose: " + koseSayisi);
        Debug.Log("Ucgen: " + ucgenSayisi);
    }
}

Beklenen çıktı

Kose: 4
Ucgen: 2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 3D bir mesh yapısında uzaydaki köşe noktalarının koordinatlarını tutan temel dizi hangisidir?

  • vertices Doğru cevap
  • colors
  • normals
  • uv

Açıklama: vertices dizisi, mesh geometrisini oluşturan tüm köşe koordinatlarını Vector3 formatında tutar.

2 Köşe Dizisini Oku

Soru
Vector3[] noktalar = mesh.____;
Cevap
Vector3[] noktalar = mesh.vertices;

Açıklama: Mesh üzerindeki tüm köşe noktalarını okumak için vertices özelliği kullanılır.

3 Mesh Veri Yapısı

Kavram Anlamı
vertices 3D uzaydaki köşe noktaları dizisi
triangles Yüzeyleri oluşturan köşe indeks dizisi
Mesh 3D geometrik şekli tutan veri yapısı
triangles.Length / 3 Mesh üzerindeki toplam üçgen sayısı

Orta seviye bölümündeki tüm dersler