Son xəbərlər
Pavilion-Labyrinth Barselona pavilyonunda şüşə ilə məkan qavrayışını dəyişirRhino 8-də pafta hazırlığı: Layout, detal görünüşü və miqyas bələdçisiNeapol metro stansiyası tamamlandı: EMBT-dən laminə taxta damlı meydanArchicad 29 IFS funksiyası: şərtlərin ardıcıllığı və standart nəticə bələdçisiVectorworks Data Visualization bələdçisi: model məlumatlarını rəng və görünürlüklə izah edinBlender Python API ilə Image məlumatı və ImageTexture teksturalarıBlender-də Noise və Voronoi teksturaları: Memarlıq materialları üçün addım-addım bələdçiBlender View Layers bələdçisi: Memarlıq renderini qatlara ayırmaqBlender Compositor ilə memarlıq renderlərinə lens və tekstura effektləri əlavə etməkBlender kamera izləməsi: klip izləmə, həll etmə və izlərin təmizlənməsi
TəlimlərBlender

Blender Python API ilə Image məlumatı və ImageTexture teksturaları

Blender Python API sənədləri Image məlumat blokundakı piksel buferini redaktə etməyi və ImageTexture parametrlərindən istifadə etməyi izah edir. Bu bələdçi əsas əməliyyatları memarlıq vizuallaşdırması iş axınlarına uyğunlaşdırır.

Memarlıq interyerləri üçün material nümunələri və vizuallaşdırma iş sahəsiSüni intellekt şəkli
Təmsili şəkil, süni intellektlə yaradılıb.Şəkil: 3dsınıfı / FCA AI

Qısaca

  1. Image məlumat bloku fayldan yüklənən, paketlənən və ya yaradılan təsvir məlumatlarını təmsil edir.
  2. Piksel buferində dəyişiklik etdikdən sonra təsviri yeniləmək üçün update() istifadə edilə bilər.
  3. Yadda saxlanmamış bufer dəyişiklikləri Image məlumat bloku kopyalandıqda surətə köçürülməyə bilər.
  4. ImageTexture seçimlərinə təkrar, kəsmə, alfa və təsvir sərhədlərindən kənardakı davranışı müəyyən edən parametrlər daxildir.

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

Blender Python API-dən istifadə edərək Image məlumat bloku yaratmağı, təsvir buferini miqyaslandırmağı və piksel dəyərlərini dəyişməyi öyrənəcəksiniz. Həmçinin edilən dəyişikliklərin təsvirə əks olunması üçün update() çağırışının rolunu və Image məlumat blokunu kopyalayarkən buferlə bağlı nəzərə alınmalı məqamları araşdıracağıq. Son bölümdə ImageTexture seçimlərinin teksturanın təkrarlanması, alfa və təsvir sərhədləri ilə əlaqəsinə baxacağıq.

Bu izah təsvir məlumatlarını skriptlərlə hazırlamaq və ya tekstura davranışını daha dəqiq araşdırmaq istəyən memarlıq vizuallaşdırması komandaları və Blender istifadəçiləri üçün nəzərdə tutulub. Nümunələr API sənədlərində izah edilən əməliyyatlarla məhdudlaşır; səhnəyə material təyin etmək və ya düyün şəbəkəsi qurmaq addımları bu çərçivəyə daxil deyil.

Tələblər

  • Blender daxilində Python API-yə giriş tələb olunur. Mənbələr Blender-in cari API sənədləridir; göstərilən əməliyyatlar üçün tələb olunan minimum Blender versiyası bu səhifələrdə açıqlanmır.

  • Kod nümunələrində Blender Python mühitində bpy modulundan istifadə edilir. Mənbələrdə xarici hesab tələbi göstərilmir.

  • API sənədlərində bu əməliyyatlar üçün avadanlıq tələbləri, ödəniş və ya lisenziya xərcləri barədə məlumat verilmir. Bu məsələlərlə bağlı konkret tələb fərz edilməməli, istifadə olunacaq versiya və iş mühiti ayrıca yoxlanmalıdır.

Image məlumat bloku ilə addım-addım işləyin

1. Təsvir məlumat bloku yaradın

bpy.data.images.new() ilə yeni Image məlumat bloku yarada bilərsiniz. Aşağıdakı nümunədə mənbə sənəddəki başlanğıc ölçüdən istifadə olunur. size xüsusiyyəti təsvir buferinin en və hündürlüyünü piksel ilə oxumağa imkan verir.

python
import bpy

image_src = bpy.data.images.new("Mimari_Kontrol", 1024, 102)
print(image_src.size)

Image məlumat blokunu təsvirin özündəki bütün məlumatların saxlandığı yer kimi qəbul etmək olmaz. Sənədlərdə bildirilir ki, piksel buferi və ölçü kimi məlumatlar təsvir buferində saxlanılır; Image məlumat bloku isə təsvir faylına və ya yaradılmış təsvirə istinad edir. Bu fərq, xüsusilə buferdə dəyişiklik edib sonra məlumat blokunu kopyalayarkən əhəmiyyətlidir.

2. Buferi miqyaslandırın və dəyişikliyi təsvirə tətbiq edin

scale() təsvir buferinin ölçüsünü dəyişir. pixels xüsusiyyəti üzən nöqtəli dəyərlərdən ibarət piksel buferinə giriş verir. Aşağıdakı nümunə təsviri 1024 × 720 ölçüsünə miqyaslandırır, buferin ilk dörd dəyərini dəyişir və sonra təsviri yeniləyir.

python
image_src.scale(1024, 720)
image_src.pixels[0:4] = (0.5, 0.5, 0.5, 0.5)
image_src.update()

print(image_src.size)
print(image_src.pixels[0:4])

Bu kod yalnız buferin ilk dörd dəyərinə qiymət verir; bu, təsvirin hamısının doldurulduğu demək deyil. update() çağırışı üzən nöqtəli buferdəki dəyişikliyin təsvirin göstərilməsində əks olunmasını təmin edir. Nəticə gözləniləndən fərqlidirsə, əvvəlcə istifadə olunan dəyişənin düzgün Image məlumat blokuna istinad etdiyini və yeniləmə çağırışının işlədiyini yoxlayın.

3. Kopyalama davranışını yoxlayın

Image məlumat blokunu kopyalamaq buferdəki dəyişikliklərin də avtomatik kopyalanması demək deyil. Sənədlərdə buferlərin müxtəlif Image məlumat blokları arasında paylaşılmadığı və təsvir kopyalandıqda çoxaldılmadığı barədə xəbərdarlıq var. Buna görə diskdə saxlanmamış bufer redaktələri surətdə olmaya bilər.

python
image_dest = image_src.copy()
image_dest.update()

print(image_dest.size)
print(image_dest.pixels[0:4])

Surət yaradıldıqdan sonra ölçünü və bufer dəyərlərini ayrıca yoxlayın. Mənbə təsvirdə etdiyiniz son dəyişikliklərin surətdə olacağını fərz etməyin. Buferdəki dəyişikliklərin surətə keçməsi lazımdırsa, əvvəlcə təsviri diskdə saxlamağın tələb olunub-olunmadığını nəzərdən keçirin və surəti yoxlayın.

4. Təsviri yadda saxlayın və ya layihə faylına paketləyin

Image API təsviri yadda saxlamaq üçün save(), səhnənin render parametrlərindən istifadə edərək müəyyən yola saxlamaq üçün isə save_render() funksiyalarını təklif edir. pack() təsviri .blend faylına daxil edilmiş məlumat kimi əlavə etmək üçün istifadə edilə bilər.

python
image_src.pack()

Paketləmə, yadda saxlama və yenidən yükləmə müxtəlif əməliyyatlardır. API-də unpack() paketlənmiş təsviri diskə çıxarır, reload() isə təsviri mənbə yolundan yenidən yükləyir. Hansı üsulun uyğun olması təsvirin fayl yolunu və layihədəki məlumatları necə idarə etmək istədiyinizdən asılıdır. Təhvil verməzdən əvvəl təsvirin gözlənilən yerdə olduğunu və layihə faylındakı vəziyyətini yoxlayın.

ImageTexture parametrlərini necə seçmək olar?

ImageTexture seçimləri təsvirin tekstura kimi necə işlənəcəyini müəyyən edir. extension xüsusiyyəti təsvirin öz sərhədlərindən kənardakı sahənin davranışını seçir. REPEAT təsviri üfüqi və şaquli istiqamətdə təkrarlayır; EXTEND kənar pikselləri uzadır; CLIP isə təsvir ölçüsündən kənarı şəffaf saxlayır. Sənədlərdə CLIP_CUBE və CHECKER də seçimlər arasında göstərilir.

repeat_x və repeat_y üfüqi və şaquli təkrar əmsallarını ayrı-ayrılıqda müəyyən edir. Alfa istifadəsi üçün use_alpha, alfa dəyərlərini tərsinə çevirmək üçün isə invert_alpha mövcuddur. use_interpolation interpolasiyaya, filter_size isə interpolasiyada istifadə olunan filtr ölçüsünə təsir edir. Bu parametrləri araşdırarkən mənbə təsvirin alfa kanalını və teksturanın istifadə formasını nəzərə alın.

Image API alfa göstərilməsi üçün STRAIGHT, PREMUL, CHANNEL_PACKED və NONE seçimlərini sadalayır. Sənədlərdə CHANNEL_PACKED müxtəlif təsvirlərin RGB və alfa kanallarına paketləndiyi, kanalların isə bir-birinə təsir etməməli olduğu istifadə forması kimi izah edilir. Mənbə faylın kanal düzümü məlum deyilsə, alfa parametrlərini dəyişməzdən əvvəl təsvirin necə hazırlandığını yoxlayın.

Tez-tez edilən səhvlər

  • Buferin də surətləndiyini fərz etmək: Yadda saxlanmamış dəyişikliklər surətdə olmaya bilər. Surətin ölçüsünü və bufer dəyərlərini yoxlayın.

  • Dəyişiklikdən sonra update() çağırışını unutmaq: Buferdə dəyişiklik etdikdən sonra təsviri yeniləyin.

  • Tekstura sərhədlərindəki davranışı yoxlamamaq: REPEAT, EXTEND və CLIP fərqli nəticələr verir. Təsvirin kənarlarında hansı davranışın lazım olduğunu müəyyən edin.

  • Alfa parametrlərini mənbə təsvirdən asılı olmayaraq dəyişmək: Alfa kanalının istifadə edilib-edilmədiyini və hansı alfa rejiminin uyğun olduğunu yoxlayın.

  • Yadda saxlama və paketləməni eyni əməliyyat hesab etmək: save(), pack(), unpack() və reload() fərqli məqsədlərə xidmət edir. Layihə faylındakı və diskdəki təsvir vəziyyətlərini ayrı-ayrılıqda yoxlayın.

Növbəti addımlar

Əməliyyatları əvvəlcə kiçik bir test faylında tətbiq edin. Təsviri yaratdıqdan sonra ölçüsünü çap edin; miqyaslandırma və piksel dəyişikliyindən sonra buferi yeniləyib dəyərləri yenidən yoxlayın. Kopyalama davranışını sınaqdan keçirərkən mənbə və surət dəyərlərini müqayisə edin. Daha sonra ImageTexture üçün sərhəd davranışını və təkrar parametrlərini nəzarətli şəkildə sınayın. Memarlıq vizuallaşdırması səhnəsinə keçməzdən əvvəl mənbə təsvirin fayl yolunu, alfa istifadəsini və layihəyə paketlənib-paketlənməyəcəyini yoxlayın.

Mənbə və lisenziya

Bu bələdçi Blender-in rəsmi Python API sənədlərindəki bpy.types.Image və bpy.types.ImageTexture səhifələrinə əsaslanır. Hər iki mənbə CC BY-SA 4.0 lisenziyalıdır; məzmun Azərbaycan dilinə uyğunlaşdırılıb.

Mənbələr

2 mənbə
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Image.html
Xülasə
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.ImageTexture.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

Image və ImageTexture xüsusiyyətləri təsvir məlumatlarını skriptlə redaktə edən və ya təkrarlanan tekstura parametrlərini standartlaşdırmaq istəyən ofislər üçün faydalı idarəetmə imkanları yaradır. Xüsusilə kopyalama davranışını və təsvirin layihəyə paketlənib-paketlənmədiyini təhvil verməzdən əvvəl yoxlamaq faylların ötürülməsi zamanı qeyri-müəyyənliyi azalda bilər.

Türkiyədəki komandalar və tələbələr üçün bu yanaşmanın praktiki dəyəri mövcud Python biliklərindən və iş axınında təkrarlanan əməliyyatların həcmindən asılıdır. API səhifələri avadanlıq tələblərini, xərcləri və ya lisenziya şərtlərini açıqlamır; buna görə bu məsələlərdə ümumi fərziyyələrə əsaslanmaq əvəzinə istifadə olunan Blender versiyasını və iş mühitini ayrıca yoxlamaq lazımdır.

Tez-tez verilən suallar

Blender Python API ilə Image məlumat bloku necə yaradılır?

Blender Python mühitində `bpy.data.images.new()` istifadə edərək Image məlumat bloku yaratmaq olar. Yaradılmış təsvirin ölçüsü `size` xüsusiyyəti ilə oxuna bilər.

Blender-də Image kopyalananda piksel dəyişiklikləri də kopyalanır?

Həmişə yox. API sənədlərində buferlərin müxtəlif Image məlumat blokları arasında paylaşılmadığı və kopyalama zamanı çoxaldılmadığı bildirilir; yadda saxlanmamış dəyişikliklər surətə keçməyə bilər.

ImageTexture-də REPEAT və CLIP nə işə yarayır?

`REPEAT` təsviri üfüqi və şaquli istiqamətdə təkrarlayır. `CLIP` isə təsvir ölçüsündən kənardakı sahəni şəffaf saxlayır.

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

Əlaqəli xəbərlər