Son xəbərlər
Cinema 4D MoGraph Cloner bələdçisi: Memarlıq səhnələrində çoxaltmaBlender Cycles-da hərəkət bulanıqlığı: memarlıq animasiyası üçün bələdçiBlender Python ilə kolleksiya və View Layer düzəni qurmaq üçün bələdçiInstancer 2D Fusion-da 10 min elementi sahələrlə idarə edirSketchUp-da relyef yaratmaq və kənarları yumşaltmaq bələdçisiBlender Glare düyünü ilə memarlıq renderlərində işıq parıltısı yaratmaq bələdçisiBlender-da memarlıq kamera ayarları: Perspektiv, kadr və sahə dərinliyiBlender-də kamera izləməsi: 3D modeli videoya yerləşdirmə bələdçisiRhino 8 QuadRemesh bələdçisi: Quad mesh-i SubD modelinə çevirməkUnreal Engine Nanite bələdçisi: Memarlıq səhnələrində yüksək detallı həndəsədən istifadə
TəlimlərBlender

Blender Python ilə kolleksiya və View Layer düzəni qurmaq üçün bələdçi

Blender Python API ilə səhnəyə kolleksiya əlavə etmək, obyektləri qruplaşdırmaq və View Layer görünürlüyünü idarə etmək mümkündür. Bu bələdçi memarlıq vizuallaşdırma səhnələri üçün əsas addımları və diqqət edilməli məqamları izah edir.

Kolleksiyalara ayrılmış memarlıq interyer maketini xatırladan səliqəli studiya kompozisiyasıSüni intellekt şəkli
Təmsili şəkil, süni intellektlə yaradılıb.Şəkil: 3dsınıfı / FCA AI

Qısaca

  1. Blender 2.8x ilə 2.7x dövründəki sabit səhnə qatlarının yerini kolleksiyalar və View Layer düzəni aldı.
  2. Bir obyekt bir neçə kolleksiyaya bağlana bilər; bu əməliyyat yeni obyekt yaratmır.
  3. Kolleksiya aktiv View Layer-dan kənarlaşdırılaraq həmin qatın düzənində idarə oluna bilər.
  4. `hide_viewport` və `hide_render` obyekt görünürlüyünü fərqli sahələrdə idarə edir.

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

Memarlıq vizuallaşdırma səhnələrində bina konstruksiyası, interyer elementləri, mebellər və bir çox başqa obyekt ola bilər. Məzmun böyüdükcə səhnədəki elementləri qruplaşdırmaq və fərqli iş görünüşlərini idarə etmək vacib olur. Blender-in Python API-si obyektləri kolleksiyalara bağlamağa və View Layer-lar vasitəsilə kolleksiya iyerarxiyasının hansı hissələrinin aktiv olacağını tənzimləməyə imkan verir.

Bu bələdçidə Python ilə yeni kolleksiya yaratmağı, onu səhnəyə bağlamağı, aktiv obyekti kolleksiyaya əlavə etməyi və kolleksiyanı aktiv View Layer-dan kənarlaşdırmağı öyrənəcəksiniz. Həmçinin obyekt görünürlüyü parametrləri ilə kolleksiya və View Layer düzəni arasındakı fərqləri nəzərdən keçirəcəyik. Nümunələr Blender-in rəsmi Python API sənədlərinə və Blender 2.80 üçün yayımlanmış səhnə və obyekt API-si izahlarına əsaslanır.

Tələblər

Nümunələri Blender-in Python API-sindən istifadə oluna bilən Blender mühitində icra edin. Kod bpy vasitəsilə aktiv səhnəyə və lazım olduqda aktiv obyektə müraciət edir. İlk nümunə bpy.data.collections.new ilə yeni kolleksiyanı birbaşa yaradır və onu səhnənin kök kolleksiyasına bağlayır; əvvəlcədən aktiv kolleksiya tələb etmir. Aktiv obyekti yeni kolleksiyaya bağlayan ayrıca nümunədə isə aktiv obyekt yoxdursa, bu bağlama addımı ötürülür.

Sənədlərdə konkret Blender versiyası, istifadəçi hesabı və ya əlavə proqram təminatı tələbi göstərilmir. Buna görə kodu istifadə etməzdən əvvəl quraşdırılmış Blender versiyasındakı API davranışını yoxlayın. Blender 2.80 tərtibatçı sənədi 2.8x dövründəki API dəyişikliklərini izah edir, aktual API səhifələri isə Scene və Object xüsusiyyətlərini sənədləşdirir. Köhnə versiyalardan qalmış skriptlərlə işləyərkən bu fərqi nəzərə alın.

Kolleksiya düzənini addım-addım qurmaq

1. Kolleksiyaların və View Layer-ların rolunu fərqləndirin

Blender 2.7x dövründə səhnələri 20 sabit qatla təşkil etmək mümkün idi. 2.8x API dəyişiklikləri ilə obyektlərin təşkili kolleksiyalara, kolleksiya iyerarxiyasının görünürlük və render kontekstində idarə olunması isə View Layer-lara keçdi. Buna görə köhnə skriptlərdə görünən səhnə qatı xüsusiyyətlərini yeni kolleksiya sistemi ilə qarışdırmamaq lazımdır.

Kolleksiyalar obyektləri və digər kolleksiyaları iyerarxik şəkildə qruplaşdırır. View Layer-lar isə bu düzənin hansı hissələrinin aktiv olacağını müəyyənləşdirir. Kolleksiya yaratmaq obyektləri avtomatik olaraq həmin kolleksiyaya daşımır; onları ayrıca bağlamaq lazımdır.

2. Səhnəyə yeni kolleksiya əlavə edin

Aşağıdakı nümunə aktiv səhnənin kök kolleksiyasının altına Mimari_Govde adlı yeni kolleksiya bağlayır. Kod kolleksiyanı yaradır, sonra isə səhnə iyerarxiyasına əlavə edir:

python
import bpy

scene = bpy.context.scene
collection = bpy.data.collections.new("Mimari_Govde")
scene.collection.children.link(collection)

bpy.data.collections.new yeni kolleksiya yaradır. scene.collection.children.link isə bu kolleksiyanı səhnənin kök kolleksiyasına bağlayır. Bu nümunədə aktiv obyekt və ya əvvəlcədən aktiv kolleksiyadan istifadə olunmur. Faylda artıq eyni adlı kolleksiya varsa, skripti yenidən icra etməzdən əvvəl mövcud səhnə düzənini yoxlayın.

3. Aktiv obyekti yeni kolleksiyaya bağlayın

Kolleksiya yaradıldıqdan sonra aktiv obyekti ona bağlamaq üçün aşağıdakı nümunədən istifadə etmək olar:

python
obj = bpy.context.object

if obj is not None:
    collection.objects.link(obj)

Aktiv obyekt varsa, kolleksiyaya bağlantı əlavə olunur; aktiv obyekt yoxdursa, şərtin daxilindəki əməliyyat icra edilmir. Bu bağlantı obyekti çoxaltmır. Blender-in tərtibatçı sənədinə görə eyni obyekt bir neçə kolleksiyada yer ala və yenə də tək obyekt olaraq qala bilər.

Memarlıq səhnələrində bu fərq obyekt məlumatlarını çoxaltmadan qruplaşdırma düzəni qurmağa kömək edir. Bununla belə, nümunədəki kod obyekti mövcud kolleksiyasından çıxarmır, sadəcə onu yeni kolleksiyaya da bağlayır. Buna görə səhnədəki digər kolleksiya bağlantılarını ayrıca nəzərdən keçirin.

4. Kolleksiyanı aktiv View Layer-dan çıxarın

Kolleksiya səhnənin kök kolleksiyasının birbaşa altındadırsa, aktiv View Layer daxilindəki müvafiq LayerCollection-a müraciət etməklə onu kənarlaşdırmaq olar:

python
bpy.context.view_layer.layer_collection.children["Mimari_Govde"].exclude = True

Bu sətir Mimari_Govde kolleksiyasını aktiv View Layer-dan kənarlaşdırır. Onu yenidən aktivləşdirmək üçün exclude dəyərini False edin. Kod kolleksiyanın View Layer iyerarxiyasının birbaşa altında olduğu halı nəzərdə tutur. Kolleksiya başqa kolleksiyanın içində yerləşirsə, iyerarxiyada düzgün mövqeyə müraciət etmək lazımdır.

View Layer-lar kolleksiya düzəninin hansı hissələrinin aktiv olacağını idarə edir. Bu əməliyyat hər bir obyektin görünürlük xüsusiyyətlərini ayrı-ayrılıqda dəyişdirməklə eyni deyil. Nəticəni qiymətləndirərkən obyektlərin başqa kolleksiyalara da bağlı olub-olmadığını və istifadə etdiyiniz View Layer quruluşunu nəzərə alın.

5. Obyekt görünürlüyünü ayrıca idarə edin

Kolleksiya görünürlüyü əvəzinə konkret obyekti idarə etmək lazımdırsa, obyekt xüsusiyyətlərindən istifadə etmək olar. hide_viewport görünüş sahəsində, hide_render isə render zamanı obyektin görünürlüyünə təsir edir. Məsələn, aktiv obyekti renderdə gizlətmək üçün:

python
obj = bpy.context.object

if obj is not None:
    obj.hide_render = True

Burada yalnız render görünürlüyü dəyişdirilir. Viewport-da gizlətmək üçün sənədləşdirilmiş ayrıca xüsusiyyət hide_viewport-dur. İstənilən nəticəyə uyğun xüsusiyyəti seçin; bu iki parametri bir-birinin əvəzinə işlətməyin.

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

Kolleksiya yaradıldıqda obyektlərin avtomatik əlavə olunduğunu düşünmək: Kolleksiya yaratmaq və obyekt bağlamaq ayrı əməliyyatlardır. Lazım olan obyekti kolleksiyaya ayrıca bağlayın.

Yeni API-də köhnə səhnə qatı üsullarından istifadə etmək: 2.8x ilə kolleksiya və View Layer düzəni dəyişdi. Köhnə skriptlərdəki object.layers kimi istifadələri aktual kolleksiya quruluşu ilə müqayisə etmədən tətbiq etməyin.

Kolleksiyaya bağlantını obyekti kopyalamaqla qarışdırmaq: Eyni obyekt bir neçə kolleksiyada yer ala bilər. Kolleksiya bağlantısı yeni obyekt və ya həndəsə nüsxəsi yaratmır.

View Layer iyerarxiyasının yanlış səviyyəsində axtarış aparmaq: Nümunədəki kənarlaşdırma sətri kolleksiyanın aktiv qatın birbaşa övladı olduğunu nəzərdə tutur. Alt kolleksiyalara müraciət yolu səhnədəki real iyerarxiyaya uyğun tənzimlənməlidir.

Viewport və render görünürlüyünü eyni parametr hesab etmək: hide_viewport və hide_render ayrı xüsusiyyətlərdir. Problemin görünüş sahəsində, yoxsa render nəticəsində olduğunu müəyyənləşdirib müvafiq xüsusiyyəti dəyişdirin.

Memarlıq və vizuallaşdırma iş axınına təsiri

Kolleksiyalardan bina konstruksiyasını, mebelləri və ya birlikdə idarə edilməli olan digər səhnə elementlərini qruplaşdırmaq üçün istifadə etmək olar. View Layer düzəni isə bu kolleksiya iyerarxiyasının hansı hissələrinin aktiv olacağını idarə edir. Bu quruluş, xüsusilə çoxkomponentli layihələrdə səhnə məzmununu nizamlı saxlamağa və görünürlük qərarlarını qruplar üzrə verməyə kömək edə bilər.

Bu yanaşma Blender səhnələrində Python ilə təkrarlana bilən təşkilat qurmaq istəyən memarlıq ofisləri, interyer dizaynerləri və archviz sənətçiləri üçün faydalı ola bilər. Bununla belə, mənbələr konkret render mühərriki ilə uyğunluq, performans artımı və ya avadanlıq üstünlüyü vəd etmir. Layihələrdə Blender versiyasını, kolleksiyaların faktiki iyerarxiyasını və faylın başqaları ilə paylaşılacağı iş axınını yoxlamaq lazımdır.

Növbəti addımlar

Əvvəlcə faylın surətində kolleksiya yaratma nümunəsini icra edin. Sonra aktiv obyektlə bağlantı addımını sınayın və obyektin bir neçə kolleksiyada yer ala bildiyini yoxlayın. View Layer kənarlaşdırma kodunu tətbiq etməzdən əvvəl kolleksiyanın aktiv qat daxilindəki yerini təsdiqləyin.

Daha sonra hide_viewport və hide_render xüsusiyyətlərini ayrı-ayrılıqda yoxlayaraq hansı görünürlük səviyyəsinin ehtiyacınıza cavab verdiyini müəyyənləşdirin. Skriptləri müxtəlif Blender versiyalarında istifadə edəcəksinizsə, kodu icra edəcəyiniz versiyanın API sənədlərinə baxın və dəyişiklikləri layihə faylında tətbiq etməzdən əvvəl sınaqdan keçirin.

Mənbə və lisenziya

Blender Developer sənədlərindəki “Blender 2.80: Scene and Object API” (K2) kolleksiyalar və View Layer quruluşundakı dəyişiklikləri izah edir. Blender Python API-nin Scene (K1) və Object (K4) sənədləri CC BY-SA 4.0 lisenziyalıdır. Bələdçi bu mənbələrdəki texniki məlumatları Azərbaycan dilinə uyğunlaşdıraraq orijinal nümunələrlə izah edir.

Mənbələr

3 mənbə
D
developer.blender.orgdeveloper.blender.org/docs/release_notes/2.80/python_api/scene_and_object_api
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.Object.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 qrupları üçün kolleksiyaları Python-la idarə etmək səhnə təşkilatını daha təkrarlana bilən edə bilər. Obyektləri çoxaltmadan fərqli kolleksiya bağlantıları qurmaq, xüsusilə səhnəsi böyüyən qrupların iş axınında praktik təşkilat imkanı yaradır.

Bununla belə, bu nümunələr render vaxtını azaltmağa və ya konkret avadanlıqda performansı artırmağa zəmanət vermir. Real layihədə istifadə olunan Blender versiyası və səhnə iyerarxiyası yoxlanmalı, avtomatlaşdırma əvvəlcə faylın surətində sınaqdan keçirilməlidir. Mənbələr hesab, avadanlıq və ya ödəniş şərtləri barədə də məlumat vermir.

Tez-tez verilən suallar

Blender-də Python ilə yeni kolleksiyanı necə yaratmaq olar?

Kolleksiya `bpy.data.collections.new` ilə yaradılır, sonra `scene.collection.children.link` vasitəsilə səhnə kolleksiyası iyerarxiyasına bağlanır. Obyektlər həmin kolleksiyaya ayrıca əlavə edilməlidir.

Blender-də eyni obyekt bir neçə kolleksiyada ola bilərmi?

Bəli. Blender-in tərtibatçı sənədinə görə eyni obyekt bir neçə kolleksiyaya bağlana bilər və tək obyekt olaraq qalır.

Blender-də `hide_viewport` ilə `hide_render` arasındakı fərq nədir?

`hide_viewport` görünüş sahəsində, `hide_render` isə render zamanı obyektin görünürlüyünü idarə edir. Bunlar ayrı xüsusiyyətlərdir.

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

Əlaqəli xəbərlər