[Blender x Python] Maîtrisons au hasard !!

Cette fois, nous allons introduire un mécanisme pour disposer un grand nombre d'objets au hasard.

table des matières

  1. Comment obtenir un nombre aléatoire 1.Faites apparaître des cubes à des positions aléatoires
  2. Créez une fonction pour organiser le processus
  3. Exemple de code
  4. Mots anglais Matériel de référence

0. Comment obtenir un nombre aléatoire

Cette fois, nous utiliserons la fonction `` rand () '' dans une bibliothèque (une collection de code utile) appelée ** numpy **.

La fonction rand () renvoie une valeur aléatoire ** de ** 0 à 1. L'argument (paramètre) spécifie le nombre de nombres aléatoires à renvoyer. S'il s'agit de rand (3), il renvoie 3 nombres aléatoires.

import numpy as np

#np.Vous pouvez considérer le hasard comme une flèche pointant vers la droite et l'ignorer.
np.random.rand(3)

Point:import numpy as np La bibliothèque appelée numpy est abrégée en np dans le code.

array([0.90681482, 0.04813658, 0.47969033])

↑ Trois valeurs aléatoires comprises entre 0 et 1 sont émises.

1.Faites apparaître des cubes à des positions aléatoires

1-0. Faisons apparaître le cube dans des positions aléatoires !!

Utilisez la bibliothèque `` numpy '' pour le calcul numérique

import bpy
import numpy as np

bpy.ops.mesh.primitive_cube_add(location = np.random.rand(3))

Point:rand( ) Générez une valeur aléatoire de 0 à 1. L'argument détermine le nombre de valeurs à renvoyer. rand (3) renvoie trois valeurs aléatoires.

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

1-1. Pouvons spécifier la plage dans laquelle le cube apparaît

○ Obtient un nombre aléatoire compris entre -10 ou plus et moins de 10. Le code a la structure suivante.

Attribuez des données (informations) à la variable □ et exécutez le traitement en utilisant ces données. Et vous pouvez considérer les points comme des flèches pointant vers la droite (presque négligeables).

□ ← Données numériques aléatoires
===>fonction( □ )
import bpy
import numpy as np

#Variable aléatoire_Créer un emplacement et attribuer une valeur aléatoire
random_location = (10 - (-10)) * np.random.rand(3) + (-10)
bpy.ops.mesh.primitive_cube_add(location = random_location)

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

Point: ** Valeur numérique dans une certaine plage ** La formule pour obtenir une valeur aléatoire comprise entre min ou plus et moins que max est (max-min) * np.random.rand() + min est.

En d'autres termes ** Plage où les nombres fluctuent * Valeur aléatoire de 0 à 1 + Début de plage ** à propos de ça.

Dans cet exemple, nous obtenons des nombres (aléatoires) compris entre +20 et -10. Plage → (-10, ..- 9, ..0, ..9, ..10)

2. Créez une fonction pour organiser le processus

2-0. Créez une fonction qui renvoie un nombre aléatoire et une fonction qui l'utilise pour faire apparaître un cube.

import bpy
import numpy as np

#Définition d'une fonction pour générer trois valeurs aléatoires
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#get_random_location()Définition d'une fonction qui fait apparaître un cube à l'aide de la valeur générée par la fonction
def generate_random_cube(min,max):
    random_location = get_random_location(min,max)
    bpy.ops.mesh.primitive_cube_add(location = random_location)

generate_random_cube(-10,10)

Point:Return Il est utilisé sous la forme de `` retour d'informations '' lorsque la fonction sort des informations.

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

2-1. Créez une fonction qui fait apparaître plusieurs cubes à des positions aléatoires

import bpy
import numpy as np

#Définition d'une fonction pour générer trois valeurs aléatoires
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#get_random_location()Définition d'une fonction qui fait apparaître un cube à l'aide de la valeur générée par la fonction
def generate_random_cube(min,max):
    random_location = get_random_location(min,max)
    bpy.ops.mesh.primitive_cube_add(location = random_location)

#Définition d'une fonction qui fait apparaître plusieurs cubes à des positions aléatoires
def generate_random_cubes(min,max,num):
    for i in range(0,num):
        generate_random_cube(min,max)

generate_random_cubes(-10,10,200)

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

2-2. Faire apparaître plusieurs cubes avec des angles aléatoires à des positions aléatoires

import bpy
import math
import numpy as np

#Définition d'une fonction pour générer trois valeurs aléatoires
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#random_number()Définition d'une fonction qui tourne et fait apparaître un cube en utilisant la valeur générée par la fonction
def generate_random_rotate_cube(min,max):
    random_location = get_random_location(min,max)
    bpy.ops.mesh.primitive_cube_add(location = random_location,rotation = math.pi * np.random.rand(3))

#Définition d'une fonction qui tourne et fait apparaître plusieurs cubes à des positions aléatoires
def generate_random_rotate_cubes(min,max,num):
    for i in range(0,num):
        generate_random_rotate_cube(min,max)

generate_random_rotate_cubes(-10,10,200)

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


3. Exemple de code

Créer une fonction qui détermine aléatoirement la couleur

○ Placez des cubes colorés à des positions aléatoires et à des angles aléatoires.

import bpy
import math
import numpy as np

#Définition de la fonction qui détermine le matériau
def material(name = 'material'):
    material_glass = bpy.data.materials.new(name)
    #Rendre le nœud disponible
    material_glass.use_nodes = True
    p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
    #0→BaseColor/7→roughness(=Rugosité)/15→transmission(=propagation)
    #default_value = (R, G, B, A)
    p_BSDF.inputs[0].default_value = np.random.rand(4)
    p_BSDF.inputs[7].default_value = 0
    p_BSDF.inputs[15].default_value = 1
    #Ajouter des éléments matériels à un objet
    bpy.context.object.data.materials.append(material_glass)

#Définition d'une fonction pour générer trois valeurs aléatoires
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#random_number()Définition d'une fonction qui tourne et fait apparaître un cube en utilisant la valeur générée par la fonction
def generate_random_rotate_cube(min,max):
    random_location = get_random_location(min,max)
    bpy.ops.mesh.primitive_cube_add(location = random_location,rotation = math.pi * np.random.rand(3))

#Définition d'une fonction qui tourne et fait apparaître plusieurs cubes à des positions aléatoires
def generate_random_rotate_colorful_cubes(min,max,num):
    for i in range(0,num):
        generate_random_rotate_cube(min,max)
        material('Random')


generate_random_rotate_colorful_cubes(-10,10,200)

    

c1.png


Créez une fonction qui organise les cubes tout en les faisant pivoter

import bpy
import math
import numpy as np

#Définition de la fonction qui détermine le matériau
def material(name = 'material'):
    material_glass = bpy.data.materials.new(name)
    #Rendre le nœud disponible
    material_glass.use_nodes = True
    p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
    #0→BaseColor/7→roughness(=Rugosité)/15→transmission(=propagation)
    #default_value = (R, G, B, A)
    p_BSDF.inputs[0].default_value = np.random.rand(4)
    p_BSDF.inputs[7].default_value = 0
    p_BSDF.inputs[15].default_value = 1
    #Ajouter des éléments matériels à un objet
    bpy.context.object.data.materials.append(material_glass)

#Définition d'une fonction qui arrange des cubes colorés tout en les faisant tourner
def spiral_colorful_cubes():
    #Itérer 100 fois
    for i in range(0,100):
        bpy.ops.mesh.primitive_cube_add(
            #Montez petit à petit
            location=(0, 0, i/50),
            scale=(1, 1, 0.05),
            #180 * i * 36(À chaque fois)Shift un par un
            rotation = (0, 0, math.pi*i*10/360)
            )
        #Ajouter des éléments matériels à un objet
        material('Random')

#Effectuer le traitement
spiral_colorful_cubes()

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


Créer une fonction qui transforme le tore, le fait pivoter et l'organise

import bpy
import math
import numpy as np

#Définition de la fonction qui détermine le matériau
def material(name = 'material'):
    material_glass = bpy.data.materials.new(name)
    #Rendre le nœud disponible
    material_glass.use_nodes = True
    p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
    #0→BaseColor/7→roughness(=Rugosité)/15→transmission(=propagation)
    #default_value = (R, G, B, A)
    p_BSDF.inputs[0].default_value = np.random.rand(4)
    p_BSDF.inputs[7].default_value = 0
    p_BSDF.inputs[15].default_value = 1
    #Ajouter des éléments matériels à un objet
    bpy.context.object.data.materials.append(material_glass)

#Définition d'une fonction qui transforme et décale le tore et colore chacun
def colorful_torus_spiral():
    for i in range(0,36):
        bpy.ops.mesh.primitive_torus_add(
            location=(0, 0, 0),
            major_radius=1.0,
            minor_radius=0.01,
            )
        #Rétrécir dans la direction de l'axe Y
        bpy.ops.transform.resize(value=(1, 0.3, 1))
        #Rotation autour de l'axe Z
        bpy.ops.transform.rotate(value=math.pi*i*10/360,orient_axis='Z')
        #Ajouter des éléments matériels à un objet
        material('Random')

colorful_torus_spiral()

c4.png


4. Mots anglais

mots anglais Traduction
spiral Spirale
material Matériel, matériel
principled Principe, principe
primitive Primitif
math Math
add ajouter
context Contexte, environnement
value valeur
default Défaut
append ajouter
generate produire
inputs avoir

Matériel de référence

Référence: Générer automatiquement une grande quantité de particules en direct avec Blender x Python

Recommended Posts

[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 !!
[Python] Maîtrisons tout et tout
Extrusion Python Extrude de Blender 2.9
Blender 2.8, Python, mouvement de la caméra, spécification de couleur aléatoire
[Blender x Python] Pensez au code avec des symboles
Maître de manipulation de chaînes Python
mixeur, python, escalier en colimaçon
Marche aléatoire en Python
Exécutez Blender avec python
mélangeur, python, comportement de la sphère
Génération de chaînes aléatoires (Python)
Blender 2.8, mise à l'échelle du cube Python
Aim Python Library Master (36) json2html
Aim Python Library Master (49) psidialogs
Voyons comment utiliser def en python
Utilisons Python Janome facilement
Aim Python Library Master (26) easyxml
compilateur x86 réalisé avec python
Aim python library master (29) table_printer
Forêt aléatoire équilibrée en python
Enregistrer DynamoDB x Python / Decimal
AIM Python Library Master (46) BrowserPlus
Aim Python Library Master (30) Chronyk
AIM Python Library Master (3) Workalendar
Aim Python Library Master (42) Speedrecorder
Aim Python Library Master (37) Slimurl
Aim Python Library Master (44) pynetviz
Aim Python Library Master (8) Rolex
Aim Python Library Master (52) Marktime
Aim Python Library Master (7) Numparser
Aim Python Library Master (21) hy
Viser les requêtes du maître de bibliothèque python (18)
Blender 2.9, Python Building, Voiture, Vidéo
Aim Python Library Master (13) Easydev
Aim Python Library Master (34) simultané
Viser la segmentation de mots du maître de la bibliothèque python
mixeur, python, escalier en colimaçon, couleur
Aim Python Library Master (43) cpmoptimize
Aim Python Library Master (68) pazudorasolver
Aim Python Library Master (58) Faker
Aim Python Library Master (11) nlist
Aimez le maître de la bibliothèque python (38) beautiful_print
Aim Python Library Master (2) Vincenty
Journal de bord Aim Python Library Master (59)
Aim Python Library Master (51) Pyautogui
Mettez Python 3.x dans Ubuntu
Aim Python Library Master (10) Timeit
Aim Python Library Master (0) Liens
Utiliser Random Forest avec Python
Aim Python Library Master (66) youtube-dl