Son xəbərlər
Memarlıq video promptu necə yazılır? Veo üçün 5 nümunə və məsləhətArchicad 29-da IFC ixracı: düzgün çevirici və məlumat parametrləriBlender Python ilə memarlıq səhnəsində vahid və obyekt mövqeyinin təyin edilməsiBlender-də Follow Path ilə kamera və obyekt animasiyası necə edilirGLUCK+ imzalı Sunnyside Studios, Queensdə bir şəhər kvartalında kampus layihələndirirUnreal Engine-də Spline Mesh Component ilə əyri elementlərin yaradılmasıIntel Oreqondakı 18A gücünün bir hissəsini Intel 3-ə yönəldəcəkNV UEFI Unlocker GeForce RTX tensor performans limitini aradan qaldırmağı hədəfləyirBlender Cycles daxili məkan renderində işıq yollarını necə tənzimləmək olar?Gemini API function calling: Memarlıq iş axınlarında alət çağırışı
TəlimlərBlenderMari

Blender Python ilə memarlıq səhnəsində vahid və obyekt mövqeyinin təyin edilməsi

Blender Python API sənədlərinə əsaslanan bu bələdçidə səhnənin vahid sistemi, obyektin mövqeyi və cari animasiya kadrı kod vasitəsilə tənzimlənir. Nümunələr memarlıq modelləşdirməsi və vizuallaşdırma iş axınlarına uyğunlaşdırılıb.

Metrik ölçü alətləri və işıqlandırılmış memarlıq maketinin olduğu müasir dizayn studiyasıSüni intellekt şəkli
Təmsili şəkil, süni intellektlə yaradılıb.Şəkil: 3dsınıfı / FCA AI

Qısaca

  1. Scene daxilindəki unit_settings vasitəsilə səhnənin ölçü vahidi sistemini METRIC olaraq təyin etmək mümkündür.
  2. Object.location xüsusiyyətinə üç koordinatlı dəyər verməklə obyektin mövqeyi təyin edilir.
  3. Scene.frame_set() metodu səhnənin kadrını seçir, obyektləri və görünüş qatlarını yeniləyir.
  4. Blender API sənədlərində miqyas, vahidlərin göstərilməsi və obyektlərin idarə olunması üçün müvafiq xüsusiyyətlər izah edilir.

Bu bələdçidə nə öyrənəcəksiniz?

Blender-də memarlıq modelləşdirməsi və vizuallaşdırma zamanı səhnə parametrlərini hər dəfə əl ilə tənzimləmək əvəzinə Python API ilə müəyyən əməliyyatları kodlaşdırmaq, eyni addımları müxtəlif fayllarda ardıcıl tətbiq etməyə kömək edir. Bu bələdçidə səhnənin vahid sistemini METRIC olaraq təyin edəcək, səhnədəki obyektin mövqeyini dəyişəcək, sadə işıq obyekti yaradacaq və animasiya kadrını seçəcəksiniz. Nümunələr Blender-in rəsmi Python API sənədlərindəki Scene, Object və UnitSettings izahlarına əsaslanır.

Buradakı kodlar layihə fayllarınıza uyğunlaşdırıla bilən kiçik başlanğıc nümunələridir. Səhnədəki mövcud obyekt düzülüşünü dəyişə biləcəkləri üçün əvvəlcə surət üzərində sınaqdan keçirmək məqsədəuyğundur. Nümunələrdə konkret render mühərriki, plagin və ya memarlıq modelləşdirmə alətinin istifadəsi nəzərdə tutulmur.

Tələblər

Blender və Python API-yə giriş tələb olunur. Mənbə sənədlər Blender API-nin aktual səhifələridir; lakin təqdim olunan məzmunda konkret Blender versiyasının nömrəsi göstərilmir. Buna görə də kodu istehsalat faylında istifadə etməzdən əvvəl quraşdırılmış versiyanın API sənədlərində xüsusiyyətlərin uyğunluğunu yoxlayın. Nümunələrdə hesab, ödənişli lisenziya və ya əlavə plagin tələbi göstərilmir.

Kod parçalarını Blender daxilindəki Python mühitində icra edin; sənədlərdəki nümunələr bpy modulundan və aktiv görünüş qatından istifadə edir. Əmri icra etməzdən əvvəl düzgün faylın, səhnənin və görünüş qatının aktiv olduğuna əmin olun. Obyektin mövqeyi nümunəsi səhnədəki ilk obyekti hədəflədiyinə görə, boş səhnədə bu kodu işlətmək əvəzinə əvvəlcə obyekt yaratma addımını yerinə yetirin.

1. Səhnənin vahid sistemini təyin edin

Scene məlumatı obyektlərlə yanaşı zaman və renderlə bağlı parametrləri də ehtiva edir. Səhnənin vahid sistemi unit_settings xüsusiyyəti vasitəsilə seçilə bilər. API sənədində system üçün NONE, METRIC və IMPERIAL seçimləri göstərilir. Aşağıdakı nümunə aktiv səhnənin sistemini metrik olaraq təyin edir:

python
import bpy

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

Bu əməliyyat yalnız sistem parametrini dəyişir. Sənəddə scale_length xüsusiyyəti Blender vahidləri ilə ölçülər arasında çevirmə üçün istifadə olunan miqyas kimi izah edilir. Bu dəyərdən layihə boyu məqsədyönlü və ardıcıl istifadə edin; müxtəlif fayllardan gələn modellərin ölçülərini müqayisə edərkən bu parametrin təsirini nəzərə alın. Mənbədə length_unit xüsusiyyəti üçün yalnız DEFAULT seçimi göstərildiyindən, burada sənədləşdirilməyən dəyər təyin etmirik.

Vahid parametrlərinin cari dəyərlərini görmək üçün xüsusiyyətləri ekrana çap edə bilərsiniz:

python
import bpy

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

use_separate vahidlərin cüt-cüt göstərilib-göstərilməyəcəyini müəyyən edən xüsusiyyət kimi sənədləşdirilib. Bu kod dəyərləri oxuyur, heç bir parametri dəyişmir. Növbəti addımlara keçməzdən əvvəl çıxışı layihənin ölçüləndirmə tələbləri ilə müqayisə edin.

2. Səhnədəki obyektin mövqeyini dəyişin

Object məlumat blokundakı location obyektin üç koordinatlı mövqeyini ifadə edir. Aşağıdakı kod səhnədə ən azı bir obyekt olduqda ilk obyektə yeni mövqe təyin edir:

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 nümunədəki koordinatlar API sənədlərində verilən əsas obyekt əməliyyatları nümunəsindəki mövqe dəyərləri ilə eynidir. Öz modelinizdə bu rəqəmləri tələb olunan koordinatlarla əvəz edin. Kod ilk obyekti hədəflədiyi üçün səhnədəki obyektlərin sırasını və düzgün obyektin seçilib-seçilmədiyini əvvəlcədən yoxlayın. Bir neçə obyekt olan layihələrdə yanlış obyektə mövqe təyin etmək modelin düzülüşünü poza bilər.

Sənədlərdə obyektin mövqeyi, fırlanması və miqyası ilə yanaşı dünya koordinat sistemindəki transformasiya matrisi də təsvir olunur. Bu bələdçi yalnız əsas location xüsusiyyəti ilə kifayətlənir; matris və ya valideyn əlaqəsi əsasında transformasiya hesablamır. Memarlıq modelində mövcud iyerarxiyanı qorumaq lazımdırsa, mövqe dəyişikliyini əlaqəli valideyn və məhdudiyyət strukturu ilə birlikdə nəzərdən keçirmək lazımdır.

3. Səhnəyə işıq obyekti əlavə edin

Rəsmi API nümunəsində işıq məlumat bloku yaratmaq, onu obyektə bağlamaq və aktiv görünüş qatının kolleksiyasına əlavə etmək göstərilir. Aşağıdakı nümunə eyni əsas əməliyyat ardıcıllığından istifadə edir, lakin işığın adını və mövqeyini dəyişir:

python
import bpy

view_layer = bpy.context.view_layer
light_data = bpy.data.lights.new(name="Memarlıq Test İşığı", type='POINT')
light_object = bpy.data.objects.new(
    name="Memarlıq Test İşığı",
    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

Əməliyyatların ardıcıllığı vacibdir: əvvəlcə işığa aid məlumat bloku, sonra həmin məlumatdan istifadə edən obyekt yaradılır; obyekt aktiv kolleksiyaya bağlandıqdan sonra səhnədə görünür. Son sətirlər obyekti seçir və aktiv obyekt edir. Nümunədə işığın render gücü və ya digər işıqlandırma parametrləri üçün dəyər təyin olunmur; buna görə də konkret parlaqlıq və ya render nəticəsi vəd edilmir.

4. Animasiya kadrını kod vasitəsilə təyin edin

Scene daxilindəki frame_current xüsusiyyəti cari kadrı göstərir. API sənədləri animasiya məlumatlarının və görünüş qatlarının dərhal yenilənməsi üçün frame_set() metodundan istifadə etməyi tövsiyə edir. Məsələn:

python
import bpy

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

Buradakı kadr nömrəsi nümunə üçündür; səhnənin başlanğıc və son intervalını özü dəyişmir. Scene sənədlərində frame_start və frame_end ayrıca xüsusiyyətlər kimi müəyyən edilir. Animasiya və ya kamera hərəkəti olan səhnədə hədəf kadrın layihə intervalına daxil olduğunu və istənilən obyekt vəziyyətinin həmin kadrda yarandığını yoxlayın.

Memarlıq və vizuallaşdırma iş axınında nə verir?

Memarlar, interyer dizaynerləri və vizuallaşdırma mütəxəssisləri üçün bu nümunələr səhnənin hazırlanması, obyektlərin təkrar yerləşdirilməsi və animasiya kadrının seçilməsi kimi işləri kodla idarə etməyin əsasını təşkil edə bilər. Komanda daxilində səhnə standartını paylaşarkən vahid sistemi kimi parametrləri kodda açıq göstərmək hansı xüsusiyyətin dəyişdirildiyini izləməyi asanlaşdırır. Bununla belə, nümunələr avtomatik ölçüləndirmə, fayllar arasında koordinatların uyğunlaşdırılması və ya render parametrlərinin qurulmasını təmin etmir.

Mənbələrdə avadanlıq tələbləri, lisenziya haqqı və ya konkret plagin barədə məlumat yoxdur. Tətbiq etməzdən əvvəl faylın ehtiyat nüsxəsini çıxarın, işlədilən səhnənin düzgün olduğunu yoxlayın və Blender quraşdırmanızdakı API sənədlərinə uyğunluğu təsdiqləyin. Xüsusilə obyektlərin sırasından asılı olan nümunələri birbaşa böyük layihə faylında işlətməkdənsə, kiçik sınaq səhnəsində yoxlayın.

Tez-tez rast gəlinən səhvlər

  • Obyektin mövqeyi kodunu boş səhnədə işlətmək: İlk obyekt olmadıqda mövqe təyin ediləcək hədəf yoxdur. Nümunədəki şərt bu vəziyyəti yoxlayır.

  • Vahid sistemini miqyas dəyəri ilə eyni hesab etmək: system və scale_length sənədlərdə ayrı xüsusiyyətlərdir. Birini dəyişmək digərinin də avtomatik dəyişməsi demək deyil.

  • Obyekti kolleksiyaya bağlamağı unutmaq: Rəsmi işıq nümunəsində yeni obyektin aktiv kolleksiyaya bağlanması onun cari səhnədə yer alması üçün əməliyyat ardıcıllığının bir hissəsidir.

  • Kadr intervalını yoxlamamaq: frame_set() cari kadrı təyin edir; başlanğıc və son intervalı tənzimləyən xüsusiyyətlər ayrıdır.

Növbəti addımlar

Əvvəlcə vahid parametrini oxuyub yoxlayan kodu sınayın, sonra mövqe nümunəsini bir sınaq obyekti üzərində işlədin. İşıq yaratma nümunəsini mövcud layihə faylınıza əlavə etməzdən əvvəl yeni səhnədə yoxlayın. Daha sonra öz iş axınınız üçün hədəf obyekti, koordinatları və kadr nömrəsini dəqiq müəyyən edin. Hər dəyişiklikdən sonra səhnəni və gözlənilən obyekt vəziyyətini yoxlamaq kodun yanlış hədəfə tətbiq edilməsi riskini azaldır.

Mənbə və lisenziya

Bu bələdçi Blender Python API sənədlərindəki Object, Scene və UnitSettings səhifələri əsasında Azərbaycan dilinə uyğunlaşdırılıb. Hər üç mənbə CC BY-SA 4.0 lisenziyalıdır. Kod nümunələrinin əsas API istifadəsi və xüsusiyyət izahları həmin sənədlərə əsaslanır.

Mənbələr

3 mənbə
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Object.html
Xülasə
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Scene.html
Xülasə
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.UnitSettings.html
Xülasə

Mənbə mətnləri yenidən dərc edilmir; qısa sitatlar işarələnir, qalanı bizim xülasə və şərhimizdir.

3dsınıfı rəyi
3dRedaktorun qiymətləndirməsi

Türkiyədəki memarlıq ofisləri və vizuallaşdırma komandaları üçün bu nümunələrin əsas dəyəri mürəkkəb avtomatlaşdırmaya keçməzdən əvvəl səhnə hazırlığının təməl addımlarını aydın və təkrarlana bilən etməsidir. Vahid sistemi, obyekt mövqeyi və kadr seçimi kimi əməliyyatlar kiçik görünsə də, komanda daxilində fayl standartı yaradarkən yoxlama siyahısına əlavə edilə bilər.

Bununla belə, bu bələdçi layihə avtomatlaşdırma paketi deyil; ölçü çevrilməsini və ya render qurulmasını tam həll etmir. Mənbələrdə quraşdırma və lisenziya xərci barədə məlumat olmadığından, xərc üstünlüyü olduğu fərz edilməməlidir. Ofislər kodu öz Blender versiyalarında və ehtiyat faylda yoxlamalı, xüsusilə obyekt seçiminə və səhnə miqyasına diqqət yetirməlidirlər.

Tez-tez verilən suallar

Blender Python ilə səhnənin vahid sistemini necə METRIC etmək olar?

Aktiv səhnənin `unit_settings.system` xüsusiyyətinə `'METRIC'` təyin etmək olar. API sənədlərində vahid sistemləri arasında `NONE`, `METRIC` və `IMPERIAL` seçimləri göstərilir.

Blender Python-da obyektin mövqeyi hansı xüsusiyyətlə dəyişdirilir?

Object məlumat blokundakı `location` xüsusiyyətinə üç koordinatlı dəyər təyin edilir. Kodun düzgün obyekti hədəflədiyini əvvəlcədən yoxlamaq lazımdır.

Blender Python ilə animasiya kadrı necə təyin edilir?

Scene üzərindəki `frame_set()` metodundan istifadə edərək cari kadrı təyin etmək olar. Bu metod başlanğıc və son kadr intervalını dəyişmir.

Şərhlər və forum türkcədir.Müzakirəyə qoşulun
+

Əlaqəli xəbərlər