# Blender’da Python eklentisi nasıl yazılır? İlk operatörü oluşturma

Kaynak: https://3dsinifi.com/haber/blenderda-python-eklentisi-nasil-yazilir-ilk-operatoru · Kategori: Eğitimler · Yayın: 23 Ekim 2026

> Blender’ın resmî kılavuzu, Python bilen kullanıcıların bir betiği operatöre ve eklentiye dönüştürmesini anlatıyor. Bu rehber, sahnedeki nesneleri X ekseninde hareket ettiren örnekle temel adımları gösteriyor.

## Kısaca
- Blender eklentisi, uygulamanın tanıyıp listeleyebilmesi için ek bilgiler içeren bir Python modülüdür.
- Örnek operatör, etkin sahnedeki tüm nesneleri X ekseninde 1 birim taşır.
- Eklenti, Blender’ın Metin Düzenleyicisi’nde test edilebilir ve .py dosyası olarak yüklenebilir.
- Kılavuz, Blender ve Python temellerinin yanı sıra modül ve sınıf kavramlarını bilmeyi öneriyor.

## Bu rehberde ne öğreneceksiniz?

Bu rehberde, Blender’da çalışan basit bir Python betiğini bir operatöre ve ardından yüklenebilir bir eklentiye dönüştüreceksiniz. Örnekteki araç, etkin sahnedeki bütün nesneleri X ekseninde 1 birim hareket ettiriyor. Amaç, hazır bir üretim aracı sunmak değil; Blender’ın operatörleri nasıl tanımladığını, kaydettiğini ve çalıştırdığını adım adım açıklamak.

Bir eklenti, Blender’ın tanıyıp listesinde gösterebilmesi için gereken ek bilgilere sahip bir Python modülüdür. `bl_info` sözlüğü eklentinin adı ve kategorisi gibi bilgilerin yanı sıra çalışması için gereken en düşük Blender sürümünü belirtir. Operatör ise bir işlemi Blender içinden çağrılabilir hâle getirir. Bu örnekte işlemi Operatör Arama penceresinden çalıştıracağız.

Önemli bir ayrıntı: örnek, yalnızca seçili nesneleri değil, etkin sahnedeki tüm nesneleri etkiler. Bu nedenle ilk testleri önemli bir proje dosyasında değil, deneme sahnesinde veya dosyanın bir kopyasında yapmak daha güvenlidir.

## Gereksinimler

Blender’ın temel kullanımını bilmeniz ve Metin Düzenleyicisi’nde bir betiği çalıştırabilmeniz bekleniyor. Python tarafında sayı, Boolean, metin, liste, demet, sözlük ve küme gibi temel türlere aşinalık da öneriliyor. Kılavuz ayrıca Python modülleri ve sınıfları hakkında temel bilgiye sahip olmayı tavsiye ediyor.

Kılavuzdaki örneğin eklenti bilgilerinde Blender sürümü `(2, 80, 0)` olarak belirtilmiş. Bu değer, örnek metadata’sında yazan en düşük sürüm bilgisidir; kodun güncel Blender sürümleriyle ayrıca sınandığı anlamına gelmez. Kullandığınız sürümde API davranışını doğrulamak gerekir. Bir kullanıcı hesabı, donanım özelliği veya ücretli lisans gereksinimi belirtilmiyor.

Hata ayıklamak için Blender’ı terminalden çalıştırmak seçeneklerden biri. Kılavuz, tercihlerden Geliştirici Ekstraları’nı açmanın da eklenti geliştirme sürecini destekleyebileceğini belirtiyor.

## Adım adım: ilk operatörü yazın

### 1. Kodu Metin Düzenleyicisi’ne ekleyin

Aşağıdaki örnekte `ObjectMoveX` sınıfı operatörü tanımlar. `execute()` çalıştırıldığında etkin sahnenin nesneleri tek tek ele alınır ve her birinin X konumuna `1.0` eklenir. `bl_options` içindeki `UNDO` seçeneği, operatörün geri alma desteğiyle kullanılmasını sağlar.

```python
bl_info = {
    "name": "Move X Axis",
    "blender": (2, 80, 0),
    "category": "Object",
}

import bpy

class ObjectMoveX(bpy.types.Operator):
    """My Object Moving Script"""
    bl_idname = "object.move_x"
    bl_label = "Move X by One"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        scene = context.scene
        for obj in scene.objects:
            obj.location.x += 1.0
        return {'FINISHED'}

def register():
    bpy.utils.register_class(ObjectMoveX)

def unregister():
    bpy.utils.unregister_class(ObjectMoveX)

if __name__ == "__main__":
    register()
```

Bu sade örnek, operatör sınıfını kaydeder; ayrıca menüye bir arayüz öğesi eklemez. `unregister()` da kaydedilmiş sınıfı kaldırır. `bl_idname` operatörün benzersiz kimliğini, `bl_label` ise Blender arayüzünde ve aramada görünen adını belirtir. İşlem başarılı olduğunda `execute()` fonksiyonu `FINISHED` sonucunu döndürür.

### 2. Betiği çalıştırın ve operatörü çağırın

Kodu Blender’ın Metin Düzenleyicisi’ne yapıştırıp çalıştırın. Betik, operatörü kaydeder; nesneleri bu aşamada kendiliğinden hareket ettirmez. Ardından Operatör Arama penceresini açın, `Move X by One` adını aratın ve operatörü çalıştırın. İşlem etkin sahnedeki tüm nesneleri X yönünde 1 birim taşır.

`execute(self, context)` içindeki `context` parametresini kullanmak önemlidir. Blender, operatörleri bazı durumlarda özel bir bağlamla çalıştırabilir. Kılavuz bu nedenle doğrudan genel bağlama başvurmak yerine operatöre verilen `context` değerinin kullanılmasını öneriyor.

### 3. Dosyaya kaydedip eklenti olarak yükleyin

Test ettiğiniz betiği bir dosyaya kaydedin. Dosya adını Python modülünde kullanılabilecek biçimde seçin ve `.py` uzantısını ekleyin. Blender tercihlerinde Eklentiler bölümündeki yükleme seçeneğini açın, dosyayı seçin ve eklentiyi listeden etkinleştirin. Yeniden başlatma sonrasında da etkin kalmasını istiyorsanız, kılavuzdaki Varsayılan Olarak Kaydet seçeneğini kullanabilirsiniz.

Eklentiyi açmak, Blender’ın modülü çalıştırıp `register()` içindeki kayıt işlemlerini yapmasını sağlar. Eklentiyi kapatırken Blender bu kez `unregister()` işlevini çağırır; örnekte bu, operatör sınıfının kaldırılması demektir. Kurulum sırasında kaynak ve hedef klasörler konsolda gösterilebilir. Kılavuz, eklenti yollarını Python Konsolu’nda `addon_utils.paths()` kullanarak görüntüleme yöntemini de anlatıyor.

## Mimarlık ve görselleştirme iş akışında kullanım

Bu örnek, teknik sanatçıların veya geliştiricilerin tekrar eden işleri Blender içinde bir operatöre dönüştürmesinin temel mantığını gösterir. Mimari sahnelerde benzer bir yaklaşım, açıkça tanımlanabilen ve tekrar tekrar yapılan işlemler için özel araçlar tasarlarken başlangıç noktası olabilir. Ancak bu kod, üretim sahnesinde doğrudan kullanılmaya hazır bir ofis aracı değildir: etkin sahnedeki tüm nesnelerin konumunu değiştirir.

İlk test için kopya bir sahne kullanın ve operatörün hangi nesnelere etki ettiğini kontrol edin. Eklentiyi ekipte paylaşmadan önce hedef Blender sürümünü ve kullanılan API öğelerinin uyumluluğunu ayrıca doğrulayın. Kaynak, belirli bir donanım gereksinimi belirtmiyor; bu nedenle donanım tavsiyesi çıkarmak mümkün değil. Lisans koşulları ve sürüm uyumluluğu da dağıtım öncesinde değerlendirilmelidir.

## Sık yapılan hatalar

- **Betiği çalıştırınca nesnelerin hemen hareket etmesini beklemek:** İlk çalıştırma operatörü kaydeder. Nesneleri değiştirmek için Operatör Arama penceresinden `Move X by One` seçilmelidir.
- **Etki alanını gözden kaçırmak:** Kod seçili nesnelerle sınırlı değildir; etkin sahnedeki bütün nesneleri işler.
- **Dosya biçimini unutmak:** Eklenti dosyasını `.py` uzantısıyla kaydedin ve Python modülünde kullanılabilecek bir ad seçin.
- **Kaydetme ile etkinleştirmeyi aynı işlem sanmak:** Dosyanın kaydedilmesi tek başına eklentiyi etkinleştirmez. Dosyanın tercihlerden yüklenmesi ve listeden açılması gerekir.

## Sonraki adımlar

Önce örneği deneme sahnesinde çalıştırın ve operatörün sonucunu gözlemleyin. Ardından `bl_info`, operatör sınıfı, `execute()` ve kayıt işlevlerinin görevlerini ayrı ayrı inceleyin. Sonraki geliştirme aşamasında sabit değerleri kullanıcı tarafından ayarlanabilir operatör özelliklerine dönüştürmeyi araştırabilirsiniz; Blender kılavuzunun devamında bu konu ve bağlı nesne kopyaları oluşturan başka bir örnek ele alınıyor.

Hata mesajlarıyla karşılaşıldığında Blender’ın konsol çıktısını incelemek sorunun hangi adımda oluştuğunu anlamaya yardımcı olabilir. Blender API genel bakışı, `bpy.context` ve `bpy.types.Operator` belgeleri de kullanılan kavramları daha ayrıntılı incelemek için kılavuzun işaret ettiği başvuru kaynakları arasında.

## Kaynak ve lisans

Bu rehber, Blender’ın resmî “Add-on Tutorial” belgesindeki eklenti ve operatör örneği temel alınarak Türkçeye uyarlanmıştır. Kaynak CC BY-SA 4.0 lisanslıdır.

## Pro ipucu
Operatörü önce kopya bir sahnede çalıştırın; örnek yalnızca seçili nesneleri değil, etkin sahnedeki tüm nesneleri taşır.

## 3dsınıfı yorumu
Blender’da tekrarlanan sahne işlemlerini küçük araçlara dönüştürmek, Python bilen mimarlık ofisi ekipleri ve teknik sanatçılar için işe yarar bir başlangıç. Ancak bu örneğin etkisi geniş: sahnedeki bütün nesneleri hareket ettiriyor. Bu yüzden önce bir kopyada denemek ve gerçek projeye uyarlarken operatörün kapsamını dikkatle belirlemek gerekiyor.

Kaynak belirli bir donanım veya ücret şartı vermiyor; burada asıl dikkat edilmesi gerekenler eklentinin hedeflediği Blender sürümü, API uyumluluğu ve ekip içinde nasıl dağıtılacağı. Öğrenciler içinse temel kazanım, bir Python betiğinin Blender’da operatör olarak nasıl kaydedilip çağrıldığını kavramak.

## Kaynaklar
- [docs.blender.org (CC BY-SA 4.0)](https://docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.html) (özet)

_Yapay zekâ ile yazıldı, kaynaklarla doğrulandı. © 3dsınıfı_
