Son xəbərlər
Rhino 8-də görünüşü yadda saxlamaq və düzgün ekran görüntüsü almaq üzrə bələdçiBlender Grease Pencil Line Art: Memarlıq səhnələrində xətt yaratmaq bələdçisiBlender-da Python əlavəsi necə yazılır? İlk operatorun yaradılmasıGemini API ilə memarlıq videolarının təhlili: addım-addım bələdçiTripo P2.0 və Astra 3D asset istehsalını Blender iş axınına gətirirBlender Cycles-da daha təmiz render: nümunələmə və denoising ayarlarıMSI XpertStation WS300 icmalı: GB300 gücünü masaüstünə gətirirLimassol Arts Centre üçün dizayn və tikintiyə nəzarət müsabiqəsi elan edildiBlender EEVEE-də şüa izləmə, Fast GI və material ayarları üzrə bələdçiAvropa Kollektiv Mənzil Mükafatı: Parisdən iki layihə qalib gəldi
TəlimlərBlender

Blender-da Python əlavəsi necə yazılır? İlk operatorun yaradılması

Blender-ın rəsmi bələdçisi Python bilən istifadəçilərə skripti operatora, sonra isə əlavəyə çevirməyi izah edir. Bu bələdçi səhnədəki obyektləri X oxu boyunca hərəkət etdirən nümunə ilə əsas addımları göstərir.

Memarlıq vizuallaşdırması iş məkanında Python əlavəsi hazırlanmasını xatırladan səhnəSüni intellekt şəkli
Təmsili şəkil, süni intellektlə yaradılıb.Şəkil: 3dsınıfı / FCA AI

Qısaca

  1. Blender əlavəsi tətbiqin tanıyıb siyahıda göstərə bilməsi üçün əlavə məlumatlar daşıyan Python moduludur.
  2. Nümunə operator aktiv səhnədəki bütün obyektləri X oxu boyunca 1 vahid hərəkət etdirir.
  3. Əlavəni Blender-ın Mətn Redaktorunda sınaqdan keçirmək və .py faylı kimi yükləmək olar.
  4. Bələdçi Blender və Python əsasları ilə yanaşı modul və sinif anlayışlarını bilməyi tövsiyə edir.

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

Bu bələdçidə Blender-da işləyən sadə Python skriptini operatora, sonra isə yüklənə bilən əlavəyə çevirəcəksiniz. Nümunə alət aktiv səhnədəki bütün obyektləri X oxu boyunca 1 vahid hərəkət etdirir. Məqsəd hazır istehsal aləti təqdim etmək deyil; Blender-ın operatorları necə təyin etdiyini, qeydiyyata aldığını və işə saldığını addım-addım izah etməkdir.

Əlavə Blender-ın tanıyıb siyahısında göstərə bilməsi üçün tələb olunan əlavə məlumatları daşıyan Python moduludur. bl_info lüğəti əlavənin adı və kateqoriyası kimi məlumatlarla yanaşı, işləməsi üçün tələb olunan ən aşağı Blender versiyasını göstərir. Operator isə əməliyyatı Blender daxilindən çağırmağa imkan verir. Bu nümunədə əməliyyatı Operator Axtarışı pəncərəsindən işə salacağıq.

Vacib məqam: nümunə yalnız seçilmiş obyektlərə deyil, aktiv səhnədəki bütün obyektlərə təsir edir. Buna görə ilk sınaqları vacib layihə faylında deyil, sınaq səhnəsində və ya faylın surətində aparmaq daha təhlükəsizdir.

Tələblər

Blender-dan əsas səviyyədə istifadə etməyi və Mətn Redaktorunda skript işə salmağı bacarmağınız gözlənilir. Python-da ədəd, Boolean, mətn, siyahı, kortej, lüğət və çoxluq kimi əsas tiplərlə tanışlıq da tövsiyə olunur. Bələdçi həmçinin Python modulları və sinifləri barədə əsas biliklərə sahib olmağı məsləhət görür.

Bələdçidəki nümunənin əlavə məlumatlarında Blender versiyası (2, 80, 0) kimi göstərilib. Bu, nümunənin metadata-sında yazılmış ən aşağı versiya məlumatıdır; kodun cari Blender versiyalarında ayrıca sınaqdan keçirildiyi mənasına gəlmir. İstifadə etdiyiniz versiyada API davranışını yoxlamaq lazımdır. İstifadəçi hesabı, aparat xüsusiyyəti və ya ödənişli lisenziya tələbi qeyd edilmir.

Sazlama üçün Blender-ı terminaldan işə salmaq variantlardan biridir. Bələdçidə həmçinin tərcihlərdən Developer Extras-ı aktivləşdirməyin əlavə hazırlama prosesinə kömək edə biləcəyi bildirilir.

Addım-addım: ilk operatorunuzu yazın

1. Kodu Mətn Redaktoruna əlavə edin

Aşağıdakı nümunədə ObjectMoveX sinfi operatoru təyin edir. execute() işə salındıqda aktiv səhnənin obyektləri bir-bir nəzərdən keçirilir və hər birinin X koordinatına 1.0 əlavə olunur. bl_options daxilindəki UNDO seçimi operatorun geri qaytarma dəstəyi ilə işləməsini təmin edir.

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 sadə nümunə operator sinfini qeydiyyata alır; menyuya interfeys elementi əlavə etmir. unregister() isə qeydiyyata alınmış sinfi silir. bl_idname operatorun unikal identifikatorunu, bl_label isə Blender interfeysində və axtarışda görünən adını bildirir. Əməliyyat uğurla başa çatdıqda execute() funksiyası FINISHED nəticəsini qaytarır.

2. Skripti işə salın və operatoru çağırın

Kodu Blender-ın Mətn Redaktoruna yapışdırıb işə salın. Skript operatoru qeydiyyata alır; bu mərhələdə obyektləri özü hərəkət etdirmir. Sonra Operator Axtarışı pəncərəsini açın, Move X by One adını axtarın və operatoru işə salın. Əməliyyat aktiv səhnədəki bütün obyektləri X istiqamətində 1 vahid hərəkət etdirir.

execute(self, context) daxilində context parametrindən istifadə etmək vacibdir. Blender bəzi hallarda operatorları xüsusi kontekstlə işə sala bilər. Buna görə bələdçi birbaşa ümumi kontekstə müraciət etməkdənsə, operatora ötürülən context dəyərindən istifadə etməyi tövsiyə edir.

3. Fayla yazıb əlavə kimi yükləyin

Sınaqdan keçirdiyiniz skripti fayla yazın. Fayl adını Python modulunda istifadə oluna biləcək formada seçin və .py uzantısı əlavə edin. Blender tərcihlərindəki Əlavələr bölməsində yükləmə seçimini açın, faylı seçin və əlavəni siyahıdan aktivləşdirin. Yenidən başladıqdan sonra da aktiv qalmasını istəyirsinizsə, bələdçidəki Save as Default seçimini istifadə edə bilərsiniz.

Əlavənin aktivləşdirilməsi Blender-ın modulu işə salaraq register() daxilindəki qeydiyyat əməliyyatlarını yerinə yetirməsini təmin edir. Əlavəni söndürəndə Blender bu dəfə unregister() funksiyasını çağırır; nümunədə bu, operator sinfinin silinməsi deməkdir. Quraşdırma zamanı mənbə və təyinat qovluqları konsolda göstərilə bilər. Bələdçidə əlavə yollarına Python Konsolunda addon_utils.paths() vasitəsilə baxmaq üsulu da izah olunur.

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

Bu nümunə texniki rəssamların və ya tərtibatçıların təkrarlanan işləri Blender daxilində operatora çevirməsinin əsas məntiqini göstərir. Memarlıq səhnələrində oxşar yanaşma aydın şəkildə müəyyənləşdirilə bilən və dəfələrlə görülən əməliyyatlar üçün xüsusi alətlər hazırlamağa başlanğıc ola bilər. Bununla belə, bu kod istehsal səhnəsində birbaşa istifadəyə hazır ofis aləti deyil: aktiv səhnədəki bütün obyektlərin mövqeyini dəyişir.

İlk sınaq üçün səhnənin surətindən istifadə edin və operatorun hansı obyektlərə təsir etdiyini yoxlayın. Əlavəni komanda ilə paylaşmazdan əvvəl hədəf Blender versiyasını və istifadə olunan API elementlərinin uyğunluğunu ayrıca yoxlayın. Mənbədə konkret aparat tələbi göstərilmir, buna görə aparatla bağlı tövsiyə vermək mümkün deyil. Lisenziya şərtləri və versiya uyğunluğu da yaymazdan əvvəl nəzərdən keçirilməlidir.

Tez-tez edilən səhvlər

  • Skripti işə salan kimi obyektlərin hərəkət edəcəyini gözləmək: İlk işə salma operatoru qeydiyyata alır. Obyektləri dəyişmək üçün Operator Axtarışı pəncərəsindən Move X by One seçilməlidir.

  • Təsir dairəsini nəzərdən qaçırmaq: Kod seçilmiş obyektlərlə məhdudlaşmır; aktiv səhnədəki bütün obyektləri emal edir.

  • Fayl formatını unutmaq: Əlavə faylını .py uzantısı ilə saxlayın və Python modulunda istifadə oluna bilən ad seçin.

  • Yadda saxlamaqla aktivləşdirməni eyni əməliyyat hesab etmək: Faylı yadda saxlamaq əlavəni öz-özlüyündə aktivləşdirmir. Fayl tərcihlərdən yüklənməli və siyahıdan aktiv edilməlidir.

Növbəti addımlar

Əvvəlcə nümunəni sınaq səhnəsində işə salın və operatorun nəticəsini müşahidə edin. Sonra bl_info, operator sinfi, execute() və qeydiyyat funksiyalarının vəzifələrini ayrı-ayrılıqda araşdırın. Növbəti inkişaf mərhələsində sabit dəyərləri istifadəçinin tənzimləyə biləcəyi operator xüsusiyyətlərinə çevirməyi öyrənə bilərsiniz; Blender bələdçisinin davamında bu mövzu və əlaqəli obyektlərin surətlərini yaradan başqa bir nümunə nəzərdən keçirilir.

Xəta mesajları ilə qarşılaşdıqda Blender-ın konsol çıxışına baxmaq problemin hansı mərhələdə yarandığını anlamağa kömək edə bilər. Blender API icmalı, bpy.context və bpy.types.Operator sənədləri də bələdçinin göstərdiyi anlayışları daha ətraflı araşdırmaq üçün mənbələr arasındadır.

Mənbə və lisenziya

Bu bələdçi Blender-ın rəsmi “Add-on Tutorial” sənədindəki əlavə və operator nümunəsi əsasında Azərbaycan dilinə uyğunlaşdırılıb. Mənbə CC BY-SA 4.0 lisenziyası ilə yayımlanır.

Mənbələr

1 mənbə
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.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

Blender-da təkrarlanan səhnə əməliyyatlarını kiçik alətlərə çevirmək Python bilən memarlıq ofislərinin komandaları və texniki rəssamlar üçün faydalı başlanğıcdır. Ancaq bu nümunənin təsir dairəsi genişdir: səhnədəki bütün obyektləri hərəkət etdirir. Buna görə əvvəlcə surət üzərində sınaqdan keçirmək, real layihəyə uyğunlaşdırarkən isə operatorun əhatə dairəsini diqqətlə müəyyənləşdirmək lazımdır.

Mənbədə konkret aparat və ya ödəniş tələbi göstərilmir; burada əsas diqqət yetirilməli məqamlar əlavənin hədəflədiyi Blender versiyası, API uyğunluğu və onun komanda daxilində necə paylanacağıdır. Tələbələr üçün əsas qazanc isə Python skriptinin Blender-da operator kimi necə qeydiyyata alınıb çağırıldığını anlamaqdır.

Tez-tez verilən suallar

Blender-da Python əlavəsini necə işə salmaq olar?

Kodu Mətn Redaktorunda işə salaraq operatoru qeydiyyata alın. Sonra Operator Axtarışı pəncərəsində operatorun etiketini axtarıb işə salın.

Blender Python əlavəsi necə yüklənir?

Faylı `.py` uzantısı ilə saxlayın, Blender tərcihlərinin Əlavələr bölməsindən yükləyin və siyahıdan aktivləşdirin.

Nümunə Blender əlavəsi hansı obyektləri hərəkət etdirir?

Nümunə operator aktiv səhnədəki bütün obyektləri X oxu boyunca 1 vahid hərəkət etdirir; yalnız seçilmiş obyektlərlə məhdudlaşmır.

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

Əlaqəli xəbərlər