Dernières actualités
Préparer une planche dans Rhino 8 : guide des Layouts, détails et échellesStation de métro de Naples achevée : une place couverte d’un toit en bois lamellé par EMBTFonction IFS d’Archicad 29 : ordre des conditions et résultat par défautGuide Vectorworks Data Visualization : rendre les données du modèle visibles en couleursDonnées Image et textures ImageTexture avec l’API Python de BlenderTextures Noise et Voronoi dans Blender : guide pas à pas pour les matériaux architecturauxGuide Blender View Layers : séparer un rendu architectural en calquesAjouter des effets de lentille et de texture aux rendus d’architecture avec Blender CompositorSuivi de caméra dans Blender : tracking, résolution et nettoyage des pistesLa cathédrale de Cologne éclairée sans percer la pierre avec plus de 700 LED
TutorielsBlender

Données Image et textures ImageTexture avec l’API Python de Blender

La documentation de l’API Python de Blender explique comment modifier le tampon de pixels d’un bloc de données Image et utiliser les paramètres d’ImageTexture. Ce guide adapte ces opérations de base aux flux de travail de visualisation architecturale.

Exemples de matériaux d’intérieur architectural et espace de travail de visualisationImage IA
Image d’illustration générée par IA.Image : 3dsınıfı / FCA AI

En bref

  1. Le bloc de données Image représente des données visuelles chargées depuis un fichier, empaquetées ou créées.
  2. Après avoir modifié le tampon de pixels, vous pouvez utiliser update() pour actualiser l’image.
  3. Les modifications non enregistrées du tampon ne sont pas nécessairement répercutées dans la copie lorsque le bloc de données Image est dupliqué.
  4. Les options d’ImageTexture comprennent des paramètres de répétition, de rognage, d’alpha et de comportement au-delà des limites de l’image.

Ce que vous apprendrez dans ce guide

Vous apprendrez à créer un bloc de données Image avec l’API Python de Blender, à redimensionner le tampon de l’image et à modifier les valeurs des pixels. Nous verrons également le rôle de l’appel à update() pour appliquer les modifications à l’image, ainsi que les précautions à prendre concernant le tampon lors de la copie d’un bloc de données Image. Enfin, nous examinerons le lien entre les options d’ImageTexture, la répétition des textures, l’alpha et les limites de l’image.

Ce guide s’adresse aux équipes de visualisation architecturale et aux utilisateurs de Blender qui souhaitent préparer des données visuelles à l’aide de scripts ou examiner plus précisément le comportement des textures. Les exemples se limitent aux opérations décrites dans la documentation de l’API ; l’affectation de matériaux à une scène et la création de réseaux de nœuds ne sont pas abordées.

Prérequis

  • Vous devez pouvoir accéder à l’API Python dans Blender. Les sources sont la documentation actuelle de l’API Blender ; elles ne précisent pas la version minimale de Blender requise pour les opérations mentionnées.

  • Les exemples de code utilisent le module bpy dans l’environnement Python de Blender. Les sources ne mentionnent aucune exigence de compte externe.

  • La documentation de l’API ne fournit pas d’informations sur les besoins matériels, les frais ou le coût des licences pour ces opérations. Ne présumez pas de besoins particuliers sur ces points ; vérifiez séparément la version et l’environnement de travail utilisés.

Travailler pas à pas avec un bloc de données Image

1. Créer un bloc de données Image

Vous pouvez créer un nouveau bloc de données Image avec bpy.data.images.new(). L’exemple ci-dessous reprend la taille initiale indiquée dans la source. La propriété size permet de lire la largeur et la hauteur du tampon de l’image en pixels.

python
import bpy

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

Il ne faut pas considérer le bloc de données Image comme l’emplacement de toutes les données de l’image elle-même. La documentation précise que des informations telles que le tampon de pixels et les dimensions sont stockées dans un tampon d’image ; le bloc de données Image, lui, fait référence à un fichier image ou à une image créée. Cette distinction est particulièrement importante lorsque vous modifiez le tampon, puis copiez le bloc de données.

2. Redimensionner le tampon et appliquer la modification à l’image

scale() modifie la taille du tampon de l’image. La propriété pixels donne accès au tampon de pixels, constitué de valeurs à virgule flottante. L’exemple ci-dessous redimensionne l’image à 1024 × 720, modifie les quatre premières valeurs du tampon, puis actualise l’image.

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])

Ce code ne modifie que les quatre premières valeurs du tampon ; il ne remplit pas toute l’image. L’appel à update() actualise l’affichage de l’image après la modification du tampon à virgule flottante. Si le résultat ne correspond pas à vos attentes, vérifiez d’abord que la variable utilisée pointe vers le bon bloc de données Image et que l’appel de mise à jour a bien été effectué.

3. Vérifier le comportement lors de la copie

Copier un bloc de données Image ne signifie pas nécessairement que les modifications du tampon sont également copiées automatiquement. La documentation précise que les tampons ne sont pas partagés entre différents blocs de données Image et qu’ils ne sont pas dupliqués lorsque l’image est copiée. Les modifications du tampon qui n’ont pas été enregistrées sur le disque peuvent donc être absentes de la copie.

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

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

Après avoir créé la copie, vérifiez séparément ses dimensions et les valeurs de son tampon. Ne partez pas du principe que la copie contiendra les dernières modifications apportées à l’image source. Si les modifications du tampon doivent être répercutées dans la copie, évaluez d’abord la nécessité d’enregistrer l’image sur le disque, puis vérifiez la copie.

4. Enregistrer l’image ou l’empaqueter dans le fichier de projet

L’API Image définit les fonctions save() pour enregistrer une image et save_render() pour l’enregistrer à un emplacement donné en utilisant les paramètres de rendu de la scène. pack() peut servir à intégrer l’image au fichier .blend sous forme de données incorporées.

python
image_src.pack()

L’empaquetage, l’enregistrement et le rechargement sont des opérations différentes. Dans l’API, unpack() permet d’extraire sur le disque une image empaquetée, tandis que reload() recharge l’image à partir de son chemin source. La méthode à choisir dépend de la façon dont vous souhaitez gérer le chemin du fichier image et les données dans le projet. Avant la livraison, vérifiez que l’image se trouve à l’emplacement attendu et contrôlez son état dans le fichier de projet.

Comment choisir les paramètres d’ImageTexture ?

Les options d’ImageTexture déterminent la façon dont l’image est utilisée comme texture. La propriété extension définit le comportement des zones situées au-delà des limites de l’image. REPEAT répète l’image horizontalement et verticalement ; EXTEND prolonge les pixels de bord ; CLIP rend transparentes les zones situées en dehors des dimensions de l’image. La documentation répertorie également CLIP_CUBE et CHECKER parmi les options.

repeat_x et repeat_y définissent séparément les facteurs de répétition horizontale et verticale. Pour gérer l’alpha, les options disponibles sont use_alpha et, pour inverser les valeurs alpha, invert_alpha. use_interpolation contrôle l’interpolation, tandis que filter_size agit sur la taille du filtre utilisé pour l’interpolation. Lorsque vous examinez ces paramètres, tenez compte du canal alpha de l’image source et de l’usage prévu de la texture.

L’API Image répertorie les options STRAIGHT, PREMUL, CHANNEL_PACKED et NONE pour l’affichage de l’alpha. La documentation décrit CHANNEL_PACKED comme un mode d’utilisation dans lequel différentes images sont empaquetées dans les canaux RGB et alpha, et où les canaux ne doivent pas interagir entre eux. Si vous ne connaissez pas l’organisation des canaux du fichier source, vérifiez comment l’image a été préparée avant de modifier les paramètres alpha.

Erreurs fréquentes

  • Supposer que le tampon est lui aussi dupliqué : les modifications non enregistrées peuvent être absentes de la copie. Vérifiez les dimensions et les valeurs du tampon de la copie.

  • Oublier d’appeler update() après une modification : actualisez l’image après avoir modifié le tampon.

  • Ne pas vérifier le comportement aux limites de la texture : REPEAT, EXTEND et CLIP donnent des résultats différents. Déterminez le comportement souhaité pour les bords de l’image.

  • Modifier les paramètres alpha sans tenir compte de l’image source : vérifiez si le canal alpha est utilisé et quel mode alpha convient.

  • Confondre l’enregistrement et l’empaquetage : save(), pack(), unpack() et reload() répondent à des objectifs différents. Vérifiez séparément l’état de l’image dans le fichier de projet et sur le disque.

Étapes suivantes

Commencez par appliquer ces opérations dans un petit fichier de test. Après avoir créé l’image, affichez ses dimensions ; après le redimensionnement et la modification des pixels, actualisez le tampon et examinez de nouveau ses valeurs. Pour tester le comportement lors de la copie, comparez les valeurs de la source et de la copie. Essayez ensuite de façon contrôlée les paramètres de répétition et de comportement aux limites d’ImageTexture. Avant de passer à une scène de visualisation architecturale, vérifiez le chemin du fichier source, l’utilisation de l’alpha et si l’image doit être empaquetée dans le projet.

Sources et licence

Ce guide s’appuie sur les pages bpy.types.Image et bpy.types.ImageTexture de la documentation officielle de l’API Python de Blender. Ces deux sources sont sous licence CC BY-SA 4.0 ; le contenu a été adapté en turc.

Sources

2 sources
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Image.html
Résumé
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.ImageTexture.html
Résumé

Les textes sources ne sont pas republiés ; les courtes citations sont signalées, le reste est notre propre résumé et commentaire.

L’avis de 3dsınıfı
3dL’analyse de la rédaction

Les propriétés d’Image et d’ImageTexture offrent un espace de contrôle utile aux bureaux qui modifient des données visuelles par script ou souhaitent standardiser les paramètres de répétition des textures. Vérifier notamment le comportement lors de la copie et l’empaquetage éventuel de l’image dans le projet avant la livraison peut réduire les incertitudes lors du transfert de fichiers.

Pour les équipes et les étudiants en Turquie, l’intérêt pratique de cette approche dépend des connaissances existantes en Python et du nombre de tâches répétitives dans le flux de travail. Les pages de l’API ne précisent ni les besoins matériels, ni les coûts, ni les conditions de licence ; il convient donc de vérifier la version de Blender et l’environnement de travail utilisés plutôt que de faire des suppositions générales sur ces points.

Questions fréquentes

Comment créer un bloc de données Image avec l’API Python de Blender ?

Vous pouvez créer un bloc de données Image dans l’environnement Python de Blender à l’aide de `bpy.data.images.new()`. La dimension de l’image créée se lit avec la propriété `size`.

Dans Blender, les modifications de pixels sont-elles aussi copiées lorsqu’on duplique une Image ?

Pas toujours. La documentation de l’API précise que les tampons ne sont pas partagés entre différents blocs de données Image et qu’ils ne sont pas dupliqués lors de la copie ; les modifications non enregistrées peuvent donc ne pas être reprises dans la copie.

À quoi servent REPEAT et CLIP dans ImageTexture ?

`REPEAT` répète l’image horizontalement et verticalement. `CLIP` rend transparentes les zones situées en dehors des dimensions de l’image.

Les commentaires et le forum sont en turc.Rejoindre la discussion
+

À lire aussi