Grasshopper Temelleri - Görsel Programlama
Grasshopper ile görsel programlamaya başlangıç - Algoritmik tasarım, parametrik modelleme, veri yapıları.
Grasshopper, Rhino için görsel programlama (visual scripting) aracıdır. Kod yazmadan algoritm gruptik tasarım ve parametrik modelleme yapmanızı sağlar. Bu rehber Grasshopper'ı ilk kez kullananlar için temel kavramları, arayüzü ve çalışma mantığını açıklar.
Grasshopper Nedir?
- Görsel programlama (Visual Scripting) aracı - Kod yazmadan algoritma
- Parametrik tasarım - Değişkenleri değiştir, model güncellenir
- Algoritmik modelleme - Karmaşık geometri kurallarla oluştur
- Rhino entegrasyonu - Rhino viewport'ta canlı önizleme
- Node-based workflow - Component'ları bağlayarak veri akışı
- Ücretsiz - Rhino 6+ ile birlikte gelir
- Kullanım alanları: Mimari, ürün tasarımı, sanat, mühendislik
- Avantajlar: Hızlı iterasyon, varyasyon üretme, automation
- Community: Geniş topluluk, binlerce hazır script
- Plugin ekosistemi: Kangaroo, Ladybug, Lunchbox, vb.
Grasshopper Arayüzü - UI Tanıtımı
- Canvas: Ana çalışma alanı - Component'lar burada
- Component Palette: Sol tarafta kategoriler halinde component'lar
- Menu Bar: Dosya, görünüm, ayarlar
- Tab'lar: Params, Maths, Sets, Vector, Curve, Surface, Mesh, vb.
- Component: Bir işlem yapan kutu (örn: Circle, Move, Divide)
- Wire: Component'ları birbirine bağlayan çizgi (veri akışı)
- Parameter: Veri saklayan component (Number, Point, Geometry)
- Group: Component'ları organize etmek için
- Panel: Veri görüntüleme aracı - Debug için
- Zoom/Pan: Mouse wheel + right-click drag
- Rhino viewport senkronizasyonu - Grasshopper'da değişiklik, Rhino'da görünür
İlk Grasshopper Tanımı - Hello World
- 1. Rhino'da Grasshopper komutunu çalıştır (veya Grasshopper menü)
- 2. Canvas'a sağ tıkla > Params > Geometry > Circle
- 3. Circle component'a çift tıkla, radius değerini gir (örn: 10)
- 4. Rhino viewport'ta circle görünür - Grasshopper geometrisi yeşil
- 5. Circle component'ı sil, baştan başla
- 6. Alternatif: Params > Input > Number Slider ekle
- 7. Curve > Primitive > Circle (CNR) component ekle
- 8. Number Slider'ı Circle'ın R (radius) input'una bağla
- 9. Slider'ı hareket ettir - Circle boyutu değişir (parametrik!)
- 10. İlk parametrik model tamamlandı - Tebrikler!
Component Anatomisi - Input/Output
- Input (sol taraf): Veri giriş noktaları - Parametreler
- Output (sağ taraf): İşlem sonucu - Çıktılar
- Component ismi: Üstte yazılı (örn: Circle CNR)
- Input/Output isimleri: Mouse hover ile görünür
- Optional vs Required: Koyu input zorunlu, açık renkli opsiyonel
- Default values: Input boşsa varsayılan değer kullanılır
- Wire bağlama: Input/Output'a tıkla-çek-bırak
- Wire kesme: Wire üzerinde Ctrl+click
- Multiple connections: Bir output birden fazla input'a bağlanabilir
- Data matching: Liste uzunlukları farklıysa (Longest, Shortest, Cross Reference)
- Component renkleri: Turuncu=uyarı, kırmızı=hata, gri=devre dışı
Veri Tipleri - Data Types
- Number: Sayısal değer (integer veya float) - Örn: 5, 3.14
- Boolean: True/False (mantıksal) - Karar yapıları için
- Text: String veri - Etiket, isim
- Point: 3D koordinat (X, Y, Z) - Geometri temeli
- Vector: Yön ve büyüklük - Hareket, normal
- Plane: Referans düzlemi (Origin + X,Y,Z axis) - Transformasyon
- Curve: Eğri (Line, Polyline, NURBS, vb.)
- Surface: Yüzey (NURBS surface, Brep face)
- Brep: Solid veya surface (boundary representation)
- Mesh: Mesh geometri (vertex, face) - Rendering için
- List: Veri koleksiyonu - Bir output'ta çoklu değer
- Tree: Hiyerarşik veri yapısı - İleri seviye (branches)
Veri Akışı - Data Flow Mantığı
- Soldan sağa: Veri input'tan output'a akar
- Component chain: Output bir sonraki input'a bağlanır
- Upstream: Veri kaynağı (önceki component'lar)
- Downstream: Veri hedefi (sonraki component'lar)
- Önbellek (cache): Her component sonucu saklar - Tekrar hesaplama yok
- Update/Recompute: Parametre değişince otomatik güncelleme
- Disable component: Component'a sağ tıkla > Enabled (gri renk)
- Preview kapatma: Sağ tıkla > Preview Off (sarı ikon kaybolur)
- Bake: Grasshopper geometrisini Rhino'ya kalıcı olarak aktar
- Internalize data: Veriyi component içine göm (Rhino'dan bağımsız)
- Performance: Çok wire varsa yavaşlar - Optimize et
Temel Component'lar - Sık Kullanılanlar
- Number Slider: Sayısal değer kontrolü - En çok kullanılan
- Panel: Veri görüntüleme - Debug ve test
- Point: 3D nokta oluştur (XYZ koordinat)
- Circle (CNR): Merkez, normal, radius ile daire
- Line (SDL): İki nokta arasında çizgi
- Move: Geometriyi vector ile taşı
- Rotate: Geometriyi döndür (eksene göre)
- Scale: Geometriyi ölçeklendir (merkeze göre)
- Divide Curve: Eğriyi eşit parçalara böl - Noktalar elde et
- Loft: Profil eğrilerinden yüzey oluştur
- Extrude: Eğri/yüzeyi ekstrude et (yükseklik ver)
- Boolean Union: Geometrileri birleştir (toplama)
Liste İşlemleri - List Operations
- List: Bir output'ta birden fazla değer - Örn: 10 nokta
- Index: Liste elemanının sırası (0'dan başlar)
- List Length: Kaç eleman var? - Component'ı var
- List Item: Belirli index'teki elemanı al
- Cull Pattern: Pattern ile bazı elemanları kaldır (True/False)
- Shift List: Listeyi kaydır (döngüsel)
- Reverse List: Liste sırasını ters çevir
- Weave: İki listeyi interleave et (birleştir)
- Entwine: Birden fazla listeyi birleştir
- Merge: Listeler birleştir (duplicate'lar kalır)
- Flatten: Tüm branch'ları tek liste yap (tree → list)
- Graft: Her elemanı ayrı branch yap (list → tree)
Grasshopper Workflow - Çalışma Akışı
- 1. Tasarım hedefinizi belirle - Ne yapmak istiyorsun?
- 2. Parametreleri tanımla - Hangi değişkenler var?
- 3. Geometri oluştur - Temel şekilleri ekle
- 4. Transformasyon uygula - Move, rotate, scale
- 5. Varyasyon test et - Slider'ları hareket ettir
- 6. Optimize et - Gereksiz component'ları temizle
- 7. Document et - Group ve Text Panel ile açıklama
- 8. Bake et - Rhino'ya kalıcı geometri aktar
- 9. Save et - .gh dosyası olarak kaydet
- 10. Paylaş - Community'de yayınla (grasshopper3d.com)
- Best practice: Temiz layout, group kullan, panel ile açıklama
Yaygın Hatalar ve Troubleshooting
- Turuncu component: Uyarı - Veri tipi uyuşmazlığı (genellikle çalışır)
- Kırmızı component: Hata - İşlem yapılamıyor, input eksik/yanlış
- Null data: Boş veri - Upstream'de hata var
- Empty list: Liste boş - Filtreleme çok agresif
- Data mismatch: Liste uzunlukları uyumsuz - Matching kontrol et
- Runtime error: İşlem sırasında hata - Panel ile debug
- Rhino'da görünmüyor: Preview kapalı - Preview On yap
- Yavaş çalışıyor: Çok fazla geometri - Preview kapat veya basitleştir
- Grasshopper dondu: Sonsuz döngü - Component'ı disable et
- Component bulamıyorum: Plugin yüklü mü? - Package Manager kontrol
- Forum yardımı: discourse.mcneel.com/c/grasshopper