# Blender Python ile mimari sahnede birim ve nesne konumu ayarlama

Kaynak: https://3dsinifi.com/haber/blender-python-ile-mimari-sahnede-birim-ve-nesne-konumu · Kategori: Eğitimler · Yayın: 31 Ekim 2026

> Blender’ın Python API belgelerini temel alan bu rehberde sahne birim sistemi, nesne konumu ve geçerli animasyon karesi kodla düzenleniyor. Örnekler mimari modelleme ve görselleştirme iş akışlarına uyarlanıyor.

## Kısaca
- Sahnenin ölçü birimi sistemi, Scene içindeki unit_settings üzerinden METRIC olarak ayarlanabiliyor.
- Bir nesnenin konumuna Object.location özelliğiyle üç koordinatlı bir değer atanabiliyor.
- Scene.frame_set() yöntemi, sahne karesini belirleyip nesneleri ve görünüm katmanlarını güncelliyor.
- Blender API belgeleri ölçek, birim gösterimi ve nesne yönetimi için ilgili özellikleri açıklıyor.

## Bu rehberde ne öğreneceksiniz?

Blender’da mimari modelleme ve görselleştirme yaparken sahne ayarlarını tekrar tekrar elle düzenlemek yerine Python API ile belirli işlemleri kodlamak, aynı adımları farklı dosyalarda tutarlı biçimde uygulamaya yardımcı olur. Bu rehberde sahnenin birim sistemini METRIC olarak ayarlayacak, sahnedeki bir nesnenin konumunu değiştirecek, basit bir ışık nesnesi oluşturacak ve animasyon karesini belirleyeceksiniz. Örnekler Blender’ın resmi Python API belgelerindeki Scene, Object ve UnitSettings açıklamalarına dayanıyor.

Buradaki kodlar, kendi proje dosyalarına göre uyarlanacak küçük başlangıç örnekleridir. Sahnenin mevcut nesne düzenini değiştirebilecekleri için önce bir kopya üzerinde deneme yapmak yerinde olur. Örneklerde belirli bir render motoru, eklenti veya mimari modelleme aracı varsayılmıyor.

## Gereksinimler

Blender ve Python API erişimi gerekir. Kaynak belgeler güncel Blender API sayfalarıdır; ancak sağlanan içerik belirli bir Blender sürüm numarası belirtmiyor. Bu nedenle bir üretim dosyasında kodu kullanmadan önce kurulu sürümdeki API belgeleriyle özelliklerin uyumunu kontrol edin. Örneklerde hesap, ücretli lisans veya ek eklenti gereksinimi belirtilmiyor.

Kod parçalarını Blender içindeki Python bağlamında çalıştırın; belgelerdeki örnekler `bpy` modülünü ve etkin görünüm katmanını kullanıyor. Bir komutu çalıştırmadan önce doğru dosyanın, sahnenin ve görünüm katmanının etkin olduğundan emin olun. Nesne konumu örneği sahnedeki ilk nesneyi hedeflediği için, boş bir sahnede bu kodu çalıştırmak yerine önce nesne oluşturma adımını uygulayın.

## 1. Sahne birim sistemini ayarlayın

Scene verisi nesnelerin yanı sıra zaman ve render ile ilgili ayarları da içeriyor. Bir sahnenin `unit_settings` özelliği üzerinden birim sistemi seçilebiliyor. API belgesi `system` için `NONE`, `METRIC` ve `IMPERIAL` seçeneklerini listeliyor. Aşağıdaki örnek etkin sahnenin sistemini metrik olarak ayarlar:

```python
import bpy

scene = bpy.context.scene
scene.unit_settings.system = 'METRIC'
```

Bu işlem yalnızca sistem ayarını değiştirir. Belgelerde `scale_length` özelliği, Blender birimleriyle boyutlar arasında dönüşüm için kullanılan ölçek olarak açıklanıyor. Bu değeri proje boyunca bilinçli ve tutarlı kullanın; farklı dosyalardan gelen modellerin ölçülerini karşılaştırırken ayarın etkisini göz önünde bulundurun. Kaynakta `length_unit` özelliği için yalnızca `DEFAULT` seçeneği gösterildiğinden, burada belgelenmeyen bir değer atamıyoruz.

Birim ayarlarının geçerli değerlerini gözden geçirmek için özellikleri ekrana yazdırabilirsiniz:

```python
import bpy

settings = bpy.context.scene.unit_settings
print(settings.system)
print(settings.scale_length)
print(settings.use_separate)
```

`use_separate`, birimlerin çiftler hâlinde gösterilip gösterilmeyeceğini belirleyen bir özellik olarak belgeleniyor. Bu kod değerleri okur; herhangi bir ayarı değiştirmez. Çıktıyı projenin ölçülendirme beklentisiyle karşılaştırarak sonraki adımlara geçin.

## 2. Sahnedeki bir nesnenin konumunu değiştirin

Object veri bloğundaki `location`, nesnenin üç koordinatlı konumunu temsil eder. Aşağıdaki kod sahnede en az bir nesne varsa ilk nesnenin konumuna yeni bir değer atar:

```python
import bpy

scene = bpy.context.scene
if len(scene.objects) > 0:
    obj = scene.objects[0]
    obj.location = (5.0, 5.0, 5.0)
```

Bu örnekteki koordinatlar, API belgelerinde verilen temel nesne işlemleri örneğindeki konum değerleriyle aynıdır. Kendi modelinizde bu sayıları ihtiyaç duyulan koordinatlarla değiştirin. Kod, ilk nesneyi seçtiği için sahnedeki nesnelerin sırasını ve hedefin doğru nesne olup olmadığını önceden kontrol edin. Birden çok nesne bulunan projelerde, yanlış nesneye konum atamak model yerleşimini bozabilir.

Belgelerde nesnenin konum, dönüş ve ölçek bilgisinin yanı sıra dünya uzayı dönüşüm matrisi de tanımlanıyor. Bu rehber temel `location` özelliğiyle sınırlı kalıyor; matris veya ebeveyn ilişkisi üzerinden dönüşüm hesabı yapmıyor. Mimari modelde mevcut hiyerarşiyi korumak gerekiyorsa, konum değişikliğinin ilgili ebeveyn ve kısıt düzeniyle birlikte değerlendirilmesi gerekir.

## 3. Sahneye bir ışık nesnesi ekleyin

Resmi API örneği, ışık veri bloğu oluşturmayı, bunu bir nesneye bağlamayı ve etkin görünüm katmanının koleksiyonuna eklemeyi gösteriyor. Aşağıdaki örnek aynı temel işlem akışını kullanır; ışığın adını ve konumunu değiştirir:

```python
import bpy

view_layer = bpy.context.view_layer
light_data = bpy.data.lights.new(name="Mimari Test Isigi", type='POINT')
light_object = bpy.data.objects.new(
    name="Mimari Test Isigi",
    object_data=light_data
)
view_layer.active_layer_collection.collection.objects.link(light_object)
light_object.location = (5.0, 5.0, 5.0)
light_object.select_set(True)
view_layer.objects.active = light_object
```

İşlem sırası önemlidir: önce ışığa ait veri bloğu, ardından bu veriyi kullanan nesne oluşturulur; nesne etkin koleksiyona bağlandıktan sonra sahnede görünür hâle gelir. Son satırlar nesneyi seçer ve etkin nesne yapar. Örnek, ışığın render gücü veya başka aydınlatma parametreleri için bir değer belirlemiyor; bu nedenle belirli bir parlaklık ya da render sonucu vaat etmiyor.

## 4. Animasyon karesini kodla belirleyin

Scene içindeki `frame_current` özelliği geçerli kareyi belirtir. API belgeleri, animasyon verisi ve görünüm katmanlarının hemen güncellenmesi için `frame_set()` yöntemini kullanmayı öneriyor. Örneğin:

```python
import bpy

scene = bpy.context.scene
scene.frame_set(25)
```

Buradaki kare numarası örnek amaçlıdır; sahnenin başlangıç ve bitiş aralığını kendiliğinden değiştirmez. Scene belgelerinde `frame_start` ve `frame_end` ayrı özellikler olarak tanımlanır. Animasyon veya kamera hareketi içeren bir sahnede, hedef karenin proje aralığı içinde olduğundan ve istenen nesne durumunun o karede oluştuğundan emin olun.

## Mimarlık ve görselleştirme iş akışında ne sağlar?

Mimarlar, iç mimarlar ve görselleştirme sanatçıları için bu örnekler sahne hazırlama, tekrar eden nesne yerleşimleri ve animasyon karesi kontrolü gibi işleri kodla düzenlemenin temelini oluşturabilir. Bir sahne standardını ekip içinde paylaşırken birim sistemi gibi ayarları kodda açıkça göstermek, hangi özelliğin değiştirildiğini izlemeyi kolaylaştırır. Bununla birlikte, örnekler otomatik ölçülendirme, dosyalar arası koordinat eşleştirme veya render ayarı kurmuyor.

Donanım gereksinimi, lisans bedeli ya da belirli bir eklenti hakkında kaynaklarda bilgi yok. Uygulama öncesinde dosyanın yedeğini alın, çalıştırılan sahnenin doğru olduğuna bakın ve Blender kurulumundaki API belgeleriyle uyumluluğu doğrulayın. Özellikle nesne sıralamasına bağlı örnekleri doğrudan büyük proje dosyasında çalıştırmak yerine küçük bir test sahnesinde deneyin.

## Sık yapılan hatalar

- **Boş sahnede nesne konumu kodunu çalıştırmak:** İlk nesne bulunmadığında konum ataması yapılacak bir hedef yoktur. Örnekteki koşul bu durumu kontrol eder.
- **Birim sistemiyle ölçek değerini aynı şey sanmak:** `system` ve `scale_length` belgelerde ayrı özelliklerdir. Birini değiştirmek diğerinin de otomatik olarak değiştiği anlamına gelmez.
- **Nesneyi koleksiyona bağlamayı atlamak:** Resmi ışık örneğinde yeni nesnenin etkin koleksiyona bağlanması, nesnenin mevcut sahnede yer alması için işlem akışının bir parçasıdır.
- **Kare aralığını kontrol etmemek:** `frame_set()` geçerli kareyi ayarlar; başlangıç ve bitiş aralığını düzenleyen özellikler ayrıdır.

## Sonraki adımlar

Önce birim ayarını okuyup kontrol eden kodu deneyin, ardından konum örneğini tek bir test nesnesi üzerinde çalıştırın. Işık oluşturma örneğini mevcut proje dosyasına almadan önce yeni bir sahnede doğrulayın. Daha sonra kendi iş akışınız için hedef nesneyi, koordinatları ve kare numarasını açıkça belirleyin. Her değişiklikten sonra sahneyi ve beklenen nesne durumunu kontrol etmek, kodun yanlış hedefe uygulanması riskini azaltır.

## Kaynak ve lisans

Bu rehber, Blender Python API belgelerindeki Object, Scene ve UnitSettings sayfalarından Türkçeye uyarlanmıştır. Üç kaynak da CC BY-SA 4.0 lisanslıdır. Kod örneklerinin temel API kullanımı ve özellik açıklamaları bu belgelere dayanır.

## Pro ipucu
Konum kodunu çalıştırmadan önce etkin sahnedeki nesneleri kontrol edin; ilk nesneyi hedefleyen örneği üretim dosyası yerine önce bir test sahnesinde deneyin.

## 3dsınıfı yorumu
Türkiye’de mimarlık ofisleri ve görselleştirme ekipleri için bu örneklerin asıl değeri, karmaşık otomasyondan önce sahne hazırlığındaki temel adımları görünür ve tekrarlanabilir kılması. Birim sistemi, nesne konumu ve kare seçimi gibi işlemler küçük görünse de ekip içi dosya standardı oluştururken kontrol listesine eklenebilir.

Bununla birlikte rehber bir proje otomasyon paketi değil; ölçü dönüşümünü veya render kurulumunu bütünüyle çözmüyor. Kurulum ve lisans maliyeti hakkında kaynaklarda bilgi bulunmadığından maliyet avantajı varsayılmamalı. Ofisler kodu kendi Blender sürümlerinde ve yedek dosyada doğrulamalı; özellikle nesne seçimi ve sahne ölçeğini dikkatle takip etmeli.

## Kaynaklar
- [docs.blender.org (CC BY-SA 4.0)](https://docs.blender.org/api/current/bpy.types.Object.html) (özet)
- [docs.blender.org (CC BY-SA 4.0)](https://docs.blender.org/api/current/bpy.types.Scene.html) (özet)
- [docs.blender.org (CC BY-SA 4.0)](https://docs.blender.org/api/current/bpy.types.UnitSettings.html) (özet)

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