[Blender x Python] Organisons une grande quantité de Susanne proprement !!

table des matières

  1. Faire apparaître une Susanne
  2. Disposez Susanne dans une rangée
  3. Disposer Susanne en deux dimensions
  4. Disposer Susanne en trois dimensions
  5. Exemple de code

0. Faire apparaître une Susanne

C'est le code pour faire apparaître une Susanne présentée dans l'article précédent. Cette fois, nous appliquerons cela.

import bpy

bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      location=(0, 0, 0),
      scale=(1, 1, 1)
      )

Cela peut sembler long à première vue, mais c'était une histoire à laquelle vous pouvez penser simplement en ** faisant abstraction, compression et symbolisation d'informations ** (↓)

===>primitive_monkey_add(□,□,□,□,□)

Signification du code: Susanne apparaît. À ce moment-là, vous pouvez modifier la position et la taille.


1. Disposez Susanne dans une rangée

◯ ** for loop ** est utilisé pour le traitement itératif. La clé pour comprendre le traitement itératif est

** Nombre de processus ** Quand ** Valeur numérique qui change avec le traitement **

** Pensez séparément **.

Je ne suis pas sûr pour le moment, mais ça va !!

1-0.x Positionne les coordonnées par 1

◯ Le fait est que la valeur numérique qui change avec le traitement augmente de un.

import bpy

#i est 0 → 1 → 2 → 3 → 4
for i in range(0,5):
    bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      #Attention ↓
      location=(i, 0, 0),
      scale=(1, 1, 1)
    )

Lorsque le code ci-dessus est symbolisé (abstrait),

i → 0,1,2,3,4 : ===>primitive_monkey_add(□,□,□,□,□)

Appelez comme.

Sens: Chaque fois que je répète le processus, il augmente de ** 1. Si i satisfait ** 0 <= i <5 **, le processus de faire apparaître Susanne est exécuté. Ensuite, remplacez la valeur de i par la valeur de la coordonnée x.


Le nombre de traitements est de 5 fois La valeur numérique qui change avec le traitement est 0 → 1 → 2 → 3 → 4.

Lorsque vous faites cela, cela ressemblera à l'image ci-dessous. En quelque sorte mignon .. ??

スクリーンショット 2020-11-11 14.14.48.png


◯ Point: ** plage (d'où à où) ** Il est utilisé pour déterminer la plage de traitement itératif.


1-1.x Les coordonnées sont décalées de 3 (partie 1)

◯ Le point est la partie où la coordonnée x de Susanne s'écrit ** i * 3 **. Le symbole * est un symbole de multiplication.

import bpy

#i est 0 → 1 → 2 → 3 → 4
for i in range(0,5):
    bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      #Attention ↓
      location=(i * 3, 0, 0),
      scale=(1, 1, 1)
    )

スクリーンショット 2020-11-11 14.51.16.png

La coordonnée x de Susanne est i * 3. En d'autres termes Premier traitement (i = 0) → ** i * 3 = 0 ** Deuxième temps de traitement (i = 1) → ** i * 3 = 3 ** Troisième temps de traitement (i = 2) → ** i * 3 = 6 ** 4ème traitement (i = 3) → ** i * 3 = 9 ** 5ème processus (i = 4) → ** i * 3 = 12 **

1-2. Placer les coordonnées x par 3 (partie 2)

◯ Le point est dans la plage ().

import bpy

#i est 0 → 3 → 6 → 9 → 12
for i in range(0,13,3):
    bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      #Attention ↓
      location=(i, 0, 0),
      scale=(1, 1, 1)
    )

スクリーンショット 2020-11-11 14.51.16.png

range () peut être `` range (first value, last value, step) '' Vous pouvez décider du nombre de numéros que vous souhaitez ignorer ** dans la plage allant du premier au dernier numéro.

En d'autres termes, pour i dans la plage (0,13,3): signifie que tous les trois nombres de 0 sont sélectionnés et affectés à i, qui est répété dans la plage de i <13. ⬇️ 0 1 2 3 4 5 6 7 8 9 10 11 12

Premier traitement → ** i = 0 ** Deuxième temps de traitement → ** i = 3 ** 3ème traitement → ** i = 6 ** 4ème traitement → ** i = 9 ** 5ème processus → ** i = 12 **


2. Disposer Susanne en deux dimensions

Le fait est que ** une autre boucle for se trouve à l'intérieur de la boucle for **.

import bpy

#i est 0 → 3 → 6 → 9 → 12
for i in range(0,13,3):
    for j in range(0,13,3):
        bpy.ops.mesh.primitive_monkey_add(
          size=2,
          enter_editmode=False,
          align='WORLD',
          #Attention ↓
          location=(i, j, 0),
          scale=(1, 1, 1)
        )

スクリーンショット 2020-11-11 16.12.06.png

Lorsqu'il est symbolisé (abstrait),

i = 0→3→6→9→12:
    j = 0→3→6→9→12:
        ===>primitive_monkey_add(□,□,□,□,□)

Appelez comme.

c'est,

( i , j ) = (0,0),(0,3),(0,6),(0,9),(0,12),
            (3,0),(3,3),(3,6),(3,9),(3,12),
            (6,0),(6,3),(6,6),(9,9),(12,12),
            (9,0),(9,3),(9,6),(9,9),(9,12),
            (12,0),(12,3),(12,6),(12,9),(12,12)

à propos de ça.


3. Disposer Susanne en trois dimensions

◯ C'est l'application mentionnée précédemment.

import bpy

for i in range(0,13,3):
    for j in range(0,13,3):
        for k in range(0,13,3):
            bpy.ops.mesh.primitive_monkey_add(
              size=2,
              enter_editmode=False,
              align='WORLD',
              #Attention ↓
              location=(i, j, k),
              scale=(1, 1, 1)
            )

スクリーンショット 2020-11-11 17.20.33.png

4. Exemple de code

◯ Seul l'exemple de code est résumé.

4-0. Code qui fait apparaître une seule Susanne

import bpy

bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      location=(0, 0, 0),
      scale=(1, 1, 1)
      )

4-1. Code pour organiser Susanne dans une rangée (décalage de 1)

import bpy

#i est 0 → 1 → 2 → 3 → 4
for i in range(0,5):
    bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      #Attention ↓
      location=(i, 0, 0),
      scale=(1, 1, 1)
    )

4-2. Code pour organiser Susanne dans une rangée (décalage de 3: Partie 1)

import bpy

#i est 0 → 1 → 2 → 3 → 4
for i in range(0,5):
    bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      #Attention ↓
      location=(i * 3, 0, 0),
      scale=(1, 1, 1)
    )

4-3. Code pour organiser Susanne dans une rangée (décalage de 3: partie 2)

import bpy

#i est 0 → 3 → 6 → 9 → 12
for i in range(0,13,3):
    bpy.ops.mesh.primitive_monkey_add(
      size=2,
      enter_editmode=False,
      align='WORLD',
      #Attention ↓
      location=(i, 0, 0),
      scale=(1, 1, 1)
    )

4-4. Code pour disposer Susanne en deux dimensions

import bpy

#i est 0 → 3 → 6 → 9 → 12
for i in range(0,13,3):
    for j in range(0,13,3):
        bpy.ops.mesh.primitive_monkey_add(
          size=2,
          enter_editmode=False,
          align='WORLD',
          #Attention ↓
          location=(i, j, 0),
          scale=(1, 1, 1)
        )

4-5. Code pour disposer Susanne en trois dimensions

import bpy

for i in range(0,13,3):
    for j in range(0,13,3):
        for k in range(0,13,3):
            bpy.ops.mesh.primitive_monkey_add(
              size=2,
              enter_editmode=False,
              align='WORLD',
              #Attention ↓
              location=(i, j, k),
              scale=(1, 1, 1)
            )

4-6. Codes disposés en cercle

import bpy
import math

#Attribuer un numéro à une variable
#Pour faciliter la modification des numéros
n = 12
r = 10.0
for i in range(0, n):
    rad = 2 * math.pi * i /n  #Calcul de l'angle 2π i/n
    x = r * math.cos(rad) #rayon de calcul des coordonnées x*cosθ
    y = r * math.sin(rad) #rayon de calcul des coordonnées y*sinθ
    
    bpy.ops.mesh.primitive_monkey_add(
              size=2,
              enter_editmode=False,
              align='WORLD',
              #Attention ↓
              location=(x, y, 0),
              scale=(1, 1, 1)
            )

スクリーンショット 2020-11-11 17.59.30.png

4-7. Cordons disposés en spirale

import bpy
import math

n = 144
r = 10.0
for i in range(0, n):
    rad = 2 * math.pi * i /24  #Calcul de l'angle 2π i/24
    x = (r * i)/10 *  math.cos(rad) #rayon de calcul des coordonnées x*cosθ
    y = (r * i)/10 *  math.sin(rad) #rayon de calcul des coordonnées y*sinθ

    bpy.ops.mesh.primitive_monkey_add(
              size=2,
              enter_editmode=False,
              align='WORLD',
              #Attention ↓
              location=(x, y, 0),
              scale=(1, 1, 1)
            )

スクリーンショット 2020-11-11 18.46.00.png

4-8. Code pour faire une spirale

import bpy
import math

n = 144
r = 10.0
for i in range(0, n):
    rad = 2 * math.pi * i /12  #Calcul de l'angle 2π i/12
    x = r * math.cos(rad) #rayon de calcul des coordonnées x*cosθ
    y = r * math.sin(rad) #rayon de calcul des coordonnées y*sinθ
    
    bpy.ops.mesh.primitive_monkey_add(
              size=2,
              enter_editmode=False,
              align='WORLD',
              #Attention ↓
              location=(x, y, i),
              scale=(1, 1, 1)
            )

スクリーンショット 2020-11-11 18.10.43.png

Recommended Posts

[Blender x Python] Organisons une grande quantité de Susanne proprement !!
[Blender x Python] Maîtrisons au hasard !!
[Blender x Python] Maîtrisons la rotation !!
[Blender x Python] Maîtrisons le matériel !!
[Blender x Python] Commençons avec Blender Python !!
[Blender x Python] Pensez au code avec des symboles
Python qui fusionne beaucoup d'excellence en un seul Excel
Python + sélénium pour GW beaucoup de publicités par courrier électronique
Je veux démarrer beaucoup de processus à partir de python
2.x, 3.x code de caractères des séries python
L'exécution d'un grand nombre de Python3 Executor.submit peut consommer beaucoup de mémoire.
J'ai créé beaucoup de fichiers pour la connexion RDP avec Python
[Blender Python] Organiser les données de propriétés personnalisées dans template_list () de la disposition de l'interface utilisateur
J'ai fait beaucoup de recherches sur la façon dont Python est exécuté
Un enregistrement de patcher un package python
Principes de base de Python x SIG (3)
Une bonne description des décorateurs Python
Faisons une interface graphique avec python.
[Python] Un mémorandum de belle soupe4
Un bref résumé de la collection Python
Principes de base de Python x SIG (partie 2)
Faisons un graphe avec python! !!
Grands Pandas Apprenons beaucoup
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
Construisons une méthode de propagation probabiliste (Python)
Faisons un jeu de shiritori avec Python
Créer un diagramme de relations des modules Python
Créons un environnement virtuel pour Python
Créons un groupe gratuit avec Python
Faisons la voix lentement avec Python
[python] Obtenir une liste de variables d'instance
[python] [meta] Le type de python est-il un type?
Créez un framework Web avec Python! (1)
Faisons un calcul de combinaison avec Python
L'histoire du traitement A du blackjack (python)
Faisons un bot Twitter avec Python!
[Python] Obtenir une liste de dossiers uniquement
Créez un framework Web avec Python! (2)
Mémorandum du processus de suppression de chaîne python
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy