Kısaca
- Blender 2.8x ile 2.7x dönemindeki sabit sahne katmanlarının yerini koleksiyonlar ve View Layer düzeni aldı.
- Bir obje birden fazla koleksiyona bağlanabilir; bu işlem yeni bir obje oluşturmaz.
- Koleksiyon, etkin View Layer’dan dışlanarak o katmanın düzeninde kontrol edilebilir.
- `hide_viewport` ve `hide_render`, obje görünürlüğünü farklı alanlarda yönetir.
Bu rehberde ne öğreneceksiniz?
Mimari görselleştirme sahneleri; yapı kabuğu, iç mekân elemanları, mobilyalar ve başka pek çok objeyi bir araya getirebilir. İçerik büyüdükçe sahnedeki öğeleri gruplamak ve farklı çalışma görünümlerini yönetmek önem kazanır. Blender’ın Python API’si, objeleri koleksiyonlara bağlamaya ve View Layer’lar aracılığıyla koleksiyon hiyerarşisinin hangi bölümlerinin etkin olacağını düzenlemeye imkân verir.
Bu rehberde Python ile yeni bir koleksiyon oluşturmayı, onu sahneye bağlamayı, etkin objeyi koleksiyona eklemeyi ve koleksiyonu etkin View Layer’dan dışlamayı öğreneceksiniz. Ayrıca obje görünürlüğü ayarlarıyla koleksiyon ve View Layer düzeni arasındaki farkları ele alacağız. Örnekler, Blender’ın resmi Python API belgeleri ile Blender 2.80 için yayımlanan sahne ve obje API açıklamalarına dayanıyor.
Gereksinimler
Örnekleri Blender’ın Python API’sinin kullanılabildiği bir Blender ortamında çalıştırın. Kod, bpy üzerinden etkin sahneye ve gerektiğinde etkin objeye erişiyor. İlk örnek yeni koleksiyonu doğrudan bpy.data.collections.new ile oluşturup sahnenin kök koleksiyonuna bağlar; önceden etkin bir koleksiyon gerektirmez. Etkin objeyi yeni koleksiyona bağlayan ayrı örnek ise etkin obje yoksa bu bağlantı adımını atlar.
Belgeler belirli bir Blender sürümü, kullanıcı hesabı ya da ek yazılım gereksinimi belirtmiyor. Bu nedenle kodu kullanmadan önce kurulu Blender sürümündeki API davranışını kontrol edin. Blender 2.80 geliştirici belgesi, 2.8x dönemindeki API değişikliklerini açıklarken güncel API sayfaları Scene ve Object özelliklerini belgeliyor. Eski sürümlerden gelen betiklerle çalışırken bu farkı göz önünde bulundurun.
Adım adım koleksiyon düzeni kurma
1. Koleksiyonların ve View Layer’ların görevini ayırın
Blender 2.7x döneminde sahneler 20 sabit katmanla düzenlenebiliyordu. 2.8x API değişiklikleriyle obje organizasyonu koleksiyonlara, koleksiyon hiyerarşisinin görünürlük ve render bağlamındaki kontrolü ise View Layer’lara taşındı. Bu nedenle eski betiklerde görülen sahne katmanı özelliklerini yeni koleksiyon sistemiyle karıştırmamak gerekir.
Koleksiyonlar objeleri ve diğer koleksiyonları hiyerarşik biçimde gruplar. View Layer’lar da bu düzenin hangi kısımlarının etkin olacağını belirler. Bir koleksiyon oluşturmak, objeleri otomatik olarak o koleksiyona taşımaz; bağlantı ayrıca yapılmalıdır.
2. Sahneye yeni bir koleksiyon ekleyin
Aşağıdaki örnek, etkin sahnenin kök koleksiyonunun altına Mimari_Govde adlı yeni bir koleksiyon bağlar. Kod koleksiyonu oluşturur ve ardından sahne hiyerarşisine ekler:
import bpy
scene = bpy.context.scene
collection = bpy.data.collections.new("Mimari_Govde")
scene.collection.children.link(collection)bpy.data.collections.new yeni koleksiyonu oluşturur. scene.collection.children.link ise bu koleksiyonu sahnenin kök koleksiyonuna bağlar. Bu örnekte etkin obje ya da önceden etkin bir koleksiyon kullanılmaz. Dosyada aynı adlı bir koleksiyon zaten bulunuyorsa, betiği yeniden çalıştırmadan önce mevcut sahne düzenini kontrol edin.
3. Etkin objeyi yeni koleksiyona bağlayın
Koleksiyon oluşturulduktan sonra etkin objeyi ona bağlamak için aşağıdaki örnek kullanılabilir:
obj = bpy.context.object
if obj is not None:
collection.objects.link(obj)Etkin bir obje varsa koleksiyona bağlantı eklenir; etkin obje yoksa koşulun içindeki işlem çalışmaz. Bu bağlantı objeyi çoğaltmaz. Blender’ın geliştirici belgesine göre aynı obje birden fazla koleksiyonda yer alabilir ve yine tek bir obje olarak kalır.
Mimari sahnelerde bu ayrım, nesne verisini çoğaltmadan gruplandırma düzeni kurmaya yardımcı olur. Ancak örnekteki kod objeyi mevcut koleksiyonundan kaldırmaz; yalnızca yeni koleksiyona da bağlar. Bu nedenle sahnedeki diğer koleksiyon bağlantılarını ayrıca inceleyin.
4. Koleksiyonu etkin View Layer’dan çıkarın
Koleksiyon sahnenin kök koleksiyonunun doğrudan altındaysa, etkin View Layer içindeki ilgili LayerCollection erişimiyle dışlanabilir:
bpy.context.view_layer.layer_collection.children["Mimari_Govde"].exclude = TrueBu satır, Mimari_Govde koleksiyonunu etkin View Layer’dan dışlar. Tekrar etkinleştirmek için exclude değerini False yapın. Kod, koleksiyonun View Layer hiyerarşisinin doğrudan altında olduğu durumu varsayar. Koleksiyon başka bir koleksiyonun içine yerleştirilmişse, hiyerarşideki doğru konumdan erişmek gerekir.
View Layer’lar koleksiyon düzeninin hangi bölümlerinin etkin olduğunu kontrol eder. Bu işlem, objelerin her birindeki görünürlük özelliklerini tek tek değiştirmekle aynı değildir. Sonucu değerlendirirken objelerin başka koleksiyonlara da bağlı olup olmadığını ve kullandığınız View Layer yapısını göz önünde bulundurun.
5. Obje görünürlüğünü ayrı yönetin
Koleksiyon görünürlüğü yerine belirli bir objeyi kontrol etmek gerekiyorsa, obje özellikleri kullanılabilir. hide_viewport görünüm alanındaki, hide_render ise render’daki obje görünürlüğünü etkiler. Örneğin etkin objeyi render’da gizlemek için:
obj = bpy.context.object
if obj is not None:
obj.hide_render = TrueBurada yalnızca render görünürlüğü değiştirilir. Viewport’ta gizleme için belgelenen ayrı özellik hide_viewport’tur. İstenen sonuca göre doğru özelliği seçin; iki ayarı birbirinin yerine kullanmayın.
Yaygın hatalar
Koleksiyon oluşturunca objelerin otomatik eklendiğini sanmak: Koleksiyon oluşturma ve obje bağlantısı farklı işlemlerdir. İlgili objeyi koleksiyona ayrıca bağlayın.
Eski sahne katmanı yöntemlerini yeni API’de kullanmak: 2.8x ile koleksiyon ve View Layer düzeni değişti. Eski betiklerdeki object.layers gibi kullanımları güncel koleksiyon yapısıyla karşılaştırmadan uygulamayın.
Bir koleksiyona bağlantıyı obje kopyalamakla karıştırmak: Aynı obje birden fazla koleksiyonda bulunabilir. Koleksiyon bağlantısı yeni bir obje ya da geometri kopyası oluşturmaz.
View Layer hiyerarşisinin yanlış seviyesinde arama yapmak: Örnek dışlama satırı, koleksiyonun etkin katmanın doğrudan çocuğu olduğunu varsayar. Alt koleksiyonlarda erişim yolunun sahnedeki gerçek hiyerarşiye göre düzenlenmesi gerekir.
Viewport ve render görünürlüğünü aynı ayar sanmak: hide_viewport ile hide_render ayrı özelliklerdir. Sorunun görünüm alanında mı, render çıktısında mı olduğunu belirleyerek ilgili özelliği değiştirin.
Mimarlık ve görselleştirme iş akışına etkisi
Koleksiyonlar; yapı kabuğu, mobilyalar veya birlikte kontrol edilmesi gereken diğer sahne öğelerini gruplamak için kullanılabilir. View Layer düzeni ise bu koleksiyon hiyerarşisinin hangi bölümlerinin etkin olacağını yönetir. Bu yapı, özellikle çok parçalı projelerde sahne içeriğini düzenli tutmaya ve görünürlük kararlarını gruplar üzerinden ele almaya yardımcı olabilir.
Yaklaşım, Blender sahnelerinde Python ile tekrar edilebilir bir organizasyon kurmak isteyen mimarlık ofisleri, iç mimarlar ve archviz sanatçıları için değerlendirilebilir. Ancak kaynaklar belirli bir render motoruyla uyumluluk, performans artışı ya da donanım avantajı vaat etmiyor. Projelerde Blender sürümünü, koleksiyonların gerçek hiyerarşisini ve dosyanın başka kişilerle paylaşılacağı iş akışını kontrol etmek gerekir.
Sonraki adımlar
Önce dosyanın bir kopyasında koleksiyon oluşturma örneğini çalıştırın. Ardından etkin bir objeyle bağlantı adımını deneyin ve objenin birden fazla koleksiyonda bulunabildiğini kontrol edin. View Layer dışlama kodunu uygulamadan önce koleksiyonun etkin katman içindeki yerini doğrulayın.
Daha sonra hide_viewport ve hide_render özelliklerini ayrı ayrı inceleyerek hangi görünürlük düzeyinin ihtiyacı karşıladığını belirleyin. Betikleri farklı Blender sürümlerinde kullanacaksanız, kodu çalıştıracağınız sürümün API belgelerine bakın ve değişiklikleri proje dosyasında uygulamadan önce test edin.
Kaynak ve lisans
Blender Developer belgelerindeki “Blender 2.80: Scene and Object API” (K2), koleksiyonlar ve View Layer yapısındaki değişiklikleri açıklıyor. Blender Python API’nin Scene (K1) ve Object (K4) belgeleri CC BY-SA 4.0 lisanslıdır. Rehber, bu kaynaklardaki teknik bilgileri Türkçe olarak uyarlayıp özgün örneklerle açıklamaktadır.
Sık sorulan sorular
Blender’da Python ile yeni koleksiyon nasıl oluşturulur?
`bpy.data.collections.new` ile koleksiyon oluşturulur, ardından `scene.collection.children.link` ile sahne koleksiyon hiyerarşisine bağlanır. Objeler bu koleksiyona ayrıca eklenmelidir.
Blender’da aynı obje birden fazla koleksiyonda bulunabilir mi?
Evet. Blender geliştirici belgesine göre aynı obje birden fazla koleksiyona bağlanabilir ve tek bir obje olarak kalır.
Blender’da `hide_viewport` ile `hide_render` arasındaki fark nedir?
`hide_viewport` görünüm alanındaki, `hide_render` ise render’daki obje görünürlüğünü yönetir. Bunlar ayrı özelliklerdir.
Kaynaklar
3 kaynakKaynak metinler yeniden yayımlanmaz; kısa alıntılar tırnak içinde verilir, geri kalanı özgün özet ve yorumdur.
Türkiye’de mimarlık ofisleri ve görselleştirme ekipleri için koleksiyonları Python’la yönetmek, sahne organizasyonunu daha tekrarlanabilir hâle getirebilir. Objeleri çoğaltmadan farklı koleksiyon bağlantıları kurabilmek, özellikle sahnesi büyüyen ekiplerin iş akışında pratik bir düzenleme olanağı sunuyor.
Bununla birlikte bu örnekler render süresini kısaltma ya da belirli donanımlarda performansı artırma vaadi taşımıyor. Gerçek projede kullanılan Blender sürümü ve sahne hiyerarşisi kontrol edilmeli; otomasyon önce dosyanın bir kopyasında denenmeli. Kaynaklar ayrıca hesap, donanım veya ücret koşulları hakkında bilgi vermiyor.




Yorumlar 0