Neler yeni

Seni de aramızda görmek istiyoruz! 🚀

Bilgi paylaştıkça çoğalır. Şu an misafir olarak buradasın ama sadece birkaç saniyeni ayırarak ücretsiz üye olabilir; binlerce içeriğe erişebilir, sorularını sorabilir ve topluluğumuzun bir parçası olabilirsin. Geliştirmek, öğrenmek ve paylaşmak için hemen aramıza katıl!

Tileable Texture Oluşturma — Dikişsiz Tekrarlanan Dokuların Sırrı

baki

Sahip
Yönetici

🧵 TILEABLE TEXTURE — DİKİŞSİZ DOKU OLUŞTURMA TEKNİĞİ 🧵
Çim, taş, ahşap dokularının kenarları neden görünmez?
​




Merhaba! 🧵

Bir oyun dünyasındaki zemin dokusu, aynı küçük görüntünün binlerce kez tekrarlanmasıyla oluşuyor ama dikiş çizgisi görünmüyor. Bu konuda tileable doku oluşturma teknikini derinlemesine ele aldım.

🤔 "Tileable" Olmak Ne Demek?

Bir dokunun sol kenarı ile sağ kenarı, üst kenarı ile alt kenarı yan yana konulduğunda kusursuz şekilde birleşmeli.

🛠️ Offset (Kaydırma) Tekniği

Markdown (GitHub flavored):
1. Dokunuzu açın (örn: 512x512 piksel çim dokusu)
2. Filtre > Offset uygulayın (yatay/dikey genişlik/2)
   "Wrap around" aktif olmalı
3. Eski kenarlar artık merkezde görünür hale gelir
4. Ortada bir dikiş çizgisi göreceksiniz
5. Clone Stamp ile bu dikiş çizgisini kapatın
6. Tekrar offset uygulayıp merkeze geri getirin

🐍 Python ile Programatik Kontrol

Python:
from PIL import Image
import numpy as np
 
def tileable_kontrolu(goruntu_yolu: str, esik_deger: float = 15.0):
    img = Image.open(goruntu_yolu).convert('RGB')
    dizi = np.array(img, dtype=np.float64)
 
    sol_kenar = dizi[:, 0, :]
    sag_kenar = dizi[:, -1, :]
    yatay_fark = np.mean(np.abs(sol_kenar - sag_kenar))
 
    ust_kenar = dizi[0, :, :]
    alt_kenar = dizi[-1, :, :]
    dikey_fark = np.mean(np.abs(ust_kenar - alt_kenar))
 
    print(f"Yatay kenar farki: {yatay_fark:.2f}")
    print(f"Dikey kenar farki: {dikey_fark:.2f}")
 
    if yatay_fark < esik_deger and dikey_fark < esik_deger:
        print("Doku iyi tileable gorunuyor!")
    else:
        print("Kenarlar arasinda gorunur fark var")
 
    return yatay_fark, dikey_fark
 
def basit_kaydirma_uygula(goruntu_yolu: str, cikti_yolu: str):
    img = Image.open(goruntu_yolu)
    genislik, yukseklik = img.size
 
    dizi = np.array(img)
    kaydirilmis = np.roll(dizi, shift=(yukseklik // 2, genislik // 2), axis=(0, 1))
 
    sonuc_img = Image.fromarray(kaydirilmis)
    sonuc_img.save(cikti_yolu)
    print(f"Kaydirilmis goruntu kaydedildi: {cikti_yolu}")
 
def onizleme_mozaigi_olustur(goruntu_yolu: str, cikti_yolu: str, tekrar: int = 3):
    img = Image.open(goruntu_yolu)
    genislik, yukseklik = img.size
 
    mozaik = Image.new('RGB', (genislik * tekrar, yukseklik * tekrar))
 
    for x in range(tekrar):
        for y in range(tekrar):
            mozaik.paste(img, (x * genislik, y * yukseklik))
 
    mozaik.save(cikti_yolu)
    print(f"{tekrar}x{tekrar} mozaik onizlemesi kaydedildi: {cikti_yolu}")

🎨 AI Destekli Modern Yaklaşım

Stable Diffusion gibi araçlar "seamless tiling" modu ile doğrudan tileable dokular üretebiliyor — manuel süreci büyük ölçüde otomatikleştiriyor.

💡 Doğal Görünüm İçin Ek İpuçları

🔹 Tekrar paterni fark edilmesin diye çeşitlilik ekleyin: Birden fazla varyant doku oluşturup rastgele karıştırın
🔹 Büyük ölçekli detay katmanları ekleyin: Tekrar etmeyen bir gürültü katmanı harmanlamak tekrarı gizlemeye yardımcı oluyor




💬 TILEABLE DOKU OLUŞTURDUNUZ MU? 💬​

Hangi araçları kullandınız? 🧵👇
 

Konuyu görüntüleyenler

Üst