CodeBlanks Logo Icon CodeBlanks

Perlin noise

Perlin noise ile doğal görünümlü yüzey üretmeyi öğrenirsin.

Perlin Noise ve Doğal Gradyanlar

Saf rastgele sayılar yan yana konulduğunda televizyon paraziti gibi keskin ve yapay görünür. Perlin Noise, komşu koordinatlar arasında yumuşak ve pürüzsüz geçişler üreten bir gradyan gürültü algoritmasıdır.

// 0.0 ile 1.0 arasinda yumusak gecisli deger uretir
float height = Mathf.PerlinNoise(x * 0.1f, y * 0.1f);

Bu yumuşak geçişler tepeler, vadiler, kıyı şeritleri ve bulut dokuları üretmek için kusursuz bir temel sağlar.

Ölçek (Scale) ve Yükseklik Haritaları

Perlin gürültüsünde koordinatlar bir ölçek katsayısı (scale) ile çarpılarak gürültü sıklığı ayarlanır. Küçük bir ölçek yayvan vadiler ve göller oluştururken, büyük ölçek dik ve sık kayalıklar üretir.

float xCoord = (float)x / width * scale;
float yCoord = (float)y / height * scale;
float sample = Mathf.PerlinNoise(xCoord, yCoord);

Hesaplanan bu değerler ızgara üzerindeki her bir noktanın yükseklik (Y ekseni) bilgisi haline gelir.

Uygulama Perlin yükseklik hesaplama

Bir Start metodu tanımla. İçinde float yukseklik = 0.75f; tanımla ve konsola "Arazi yuksekligi: " + yukseklik yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class PerlinTester : MonoBehaviour
{
    // Start icinde yukseklik tanimla ve yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class PerlinTester : MonoBehaviour
{
    void Start()
    {
        float yukseklik = 0.75f;
        Debug.Log("Arazi yuksekligi: " + yukseklik);
    }
}

Beklenen çıktı

Arazi yuksekligi: 0.75

Soru ve cevaplar

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

1 Arazi (terrain), ada veya tepe üretiminde saf rastgelelik yerine Perlin Noise kullanılmasının ana sebebi nedir?

  • Sadece ses dosyalarını düzenlemeye yaraması
  • Komşu noktalar arasında yumuşak ve doğal yükseklik geçişleri sunması Doğru cevap
  • Ağ bağlantısındaki gecikmeyi (ping) sıfıra indirmesi
  • Ekrandaki tüm 3D modelleri 2D sprite'a dönüştürmesi

Açıklama: Perlin gürültüsü, birbirine yakın koordinatlarda ani sıçramalar yerine doğal görünümlü yumuşak yükselti farkları üretir.

2 Perlin gürültüsü örnekleme

Soru
float sample = Mathf.____(xCoord, yCoord);
Cevap
float sample = Mathf.PerlinNoise(xCoord, yCoord);

Açıklama: Unity'de 2D Perlin gürültüsü değerini hesaplamak için 'Mathf.PerlinNoise' metodu kullanılır.

3 Perlin noise terimleri

Kavram Anlamı
Perlin Noise Doğal ve pürüzsüz gradyan gürültüsü
Mathf.PerlinNoise Unity 2D Perlin gürültü fonksiyonu
Scale Tepelerin ve vadilerin sıklık ölçeği
Heightmap Yükseklik bilgisi tutan harita

İleri seviye bölümündeki tüm dersler