[Blender x Python] Lass uns zufällig meistern !!

Dieses Mal werden wir einen Mechanismus zum zufälligen Anordnen einer großen Anzahl von Objekten einführen.

Inhaltsverzeichnis

  1. Wie bekomme ich eine Zufallszahl?
  2. Lassen Sie Würfel an zufälligen Positionen erscheinen
  3. Erstellen Sie eine Funktion zum Organisieren des Prozesses
  4. Beispielcode
  5. Englische Wörter Referenzmaterial

0. Wie bekomme ich eine Zufallszahl?

Dieses Mal verwenden wir die Funktion rand () in einer Bibliothek (einer Sammlung nützlichen Codes) namens ** numpy **.

Die Funktion rand () gibt einen Zufallswert ** von ** 0 bis 1 zurück. Das Argument (Parameter) gibt an, wie viele Zufallszahlen zurückgegeben werden sollen. Wenn es Rand (3) ist, werden 3 Zufallszahlen zurückgegeben.

import numpy as np

#np.Sie können sich Zufall als nach rechts zeigenden Pfeil vorstellen und ihn ignorieren.
np.random.rand(3)

Point:import numpy as np Die Bibliothek mit dem Namen numpy wird im Code als np abgekürzt.

array([0.90681482, 0.04813658, 0.47969033])

↑ Es werden drei Zufallswerte im Bereich von 0 bis 1 ausgegeben.

1. Lassen Sie Würfel an zufälligen Positionen erscheinen

1-0. Lassen wir den Würfel in zufälligen Positionen erscheinen !!

Verwenden Sie die Bibliothek numpy für die numerische Berechnung

import bpy
import numpy as np

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

Point:rand( ) Generieren Sie einen zufälligen Wert von 0 bis 1. Das Argument bestimmt, wie viele Werte zurückgegeben werden sollen. rand (3) gibt drei zufällige Werte zurück.

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

1-1. Lassen Sie uns den Bereich angeben, in dem der Würfel angezeigt wird

○ Ruft eine Zufallszahl im Bereich von -10 oder mehr und weniger als 10 ab. Der Code hat die folgende Struktur.

Ordnen Sie der Variablen □ Daten (Informationen) zu und führen Sie die Verarbeitung mit diesen Daten aus. Und Sie können sich die Punkte als nach rechts zeigende Pfeile vorstellen (fast vernachlässigbar).

□ ← Zufällige numerische Daten
===>Funktion( □ )
import bpy
import numpy as np

#Variable zufällig_Erstellen Sie einen Ort und weisen Sie einen zufälligen Wert zu
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

Punkt: ** Numerischer Wert innerhalb eines bestimmten Bereichs ** Die Formel, um einen zufälligen Wert im Bereich von min oder mehr und weniger als max zu erhalten, lautet (max-min) * np.random.rand() + min ist.

Mit anderen Worten ** Bereich, in dem die Zahlen schwanken * Zufälliger Wert von 0 bis 1 + Beginn des Bereichs ** darüber.

In diesem Beispiel erhalten wir (Zufalls-) Zahlen im Bereich +20 von -10. Bereich → (-10, ..- 9, ..0, ..9, ..10)

2. Erstellen Sie eine Funktion zum Organisieren des Prozesses

2-0. Erstellen Sie eine Funktion, die eine Zufallszahl zurückgibt, und eine Funktion, mit der ein Würfel angezeigt wird.

import bpy
import numpy as np

#Definieren einer Funktion zum Generieren von drei Zufallswerten
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#get_random_location()Definition einer Funktion, die einen Würfel mit dem von der Funktion generierten Wert erscheinen lässt
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 Es wird in Form von "Rückgabeinformationen" verwendet, wenn die Funktion einige Informationen ausgibt.

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

2-1 Erstellen Sie eine Funktion, mit der mehrere Würfel an zufälligen Positionen angezeigt werden

import bpy
import numpy as np

#Definieren einer Funktion zum Generieren von drei Zufallswerten
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#get_random_location()Definition einer Funktion, die einen Würfel mit dem von der Funktion generierten Wert erscheinen lässt
def generate_random_cube(min,max):
    random_location = get_random_location(min,max)
    bpy.ops.mesh.primitive_cube_add(location = random_location)

#Definition einer Funktion, bei der mehrere Würfel an zufälligen Positionen angezeigt werden
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. Lassen Sie mehrere Würfel mit zufälligen Winkeln an zufälligen Positionen erscheinen

import bpy
import math
import numpy as np

#Definieren einer Funktion zum Generieren von drei Zufallswerten
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#random_number()Definition einer Funktion, die sich dreht und einen Würfel mit dem von der Funktion generierten Wert erscheinen lässt
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))

#Definition einer Funktion, die sich dreht und mehrere Würfel an zufälligen Positionen erscheinen lässt
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. Beispielcode

Erstellen Sie eine Funktion, die die Farbe zufällig bestimmt

○ Platzieren Sie bunte Würfel an zufälligen Positionen und in zufälligen Winkeln.

import bpy
import math
import numpy as np

#Definition der Funktion, die das Material bestimmt
def material(name = 'material'):
    material_glass = bpy.data.materials.new(name)
    #Stellen Sie den Knoten zur Verfügung
    material_glass.use_nodes = True
    p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
    #0→BaseColor/7→roughness(=Rauheit)/15→transmission(=Vermehrung)
    #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
    #Fügen Sie einem Objekt Materialelemente hinzu
    bpy.context.object.data.materials.append(material_glass)

#Definieren einer Funktion zum Generieren von drei Zufallswerten
def get_random_location(min,max):
    return (max - min) * np.random.rand(3) + min

#random_number()Definition einer Funktion, die sich dreht und einen Würfel mit dem von der Funktion generierten Wert erscheinen lässt
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))

#Definition einer Funktion, die sich dreht und mehrere Würfel an zufälligen Positionen erscheinen lässt
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


Erstellen Sie eine Funktion, die Würfel beim Drehen anordnet

import bpy
import math
import numpy as np

#Definition der Funktion, die das Material bestimmt
def material(name = 'material'):
    material_glass = bpy.data.materials.new(name)
    #Stellen Sie den Knoten zur Verfügung
    material_glass.use_nodes = True
    p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
    #0→BaseColor/7→roughness(=Rauheit)/15→transmission(=Vermehrung)
    #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
    #Fügen Sie einem Objekt Materialelemente hinzu
    bpy.context.object.data.materials.append(material_glass)

#Definition einer Funktion, die bunte Würfel beim Drehen anordnet
def spiral_colorful_cubes():
    #100 mal iterieren
    for i in range(0,100):
        bpy.ops.mesh.primitive_cube_add(
            #Bewegen Sie sich nach und nach nach oben
            location=(0, 0, i/50),
            scale=(1, 1, 0.05),
            #180 * i * 36(Jedes Mal)Verschieben Sie einen nach dem anderen
            rotation = (0, 0, math.pi*i*10/360)
            )
        #Fügen Sie einem Objekt Materialelemente hinzu
        material('Random')

#Verarbeitung durchführen
spiral_colorful_cubes()

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


Erstellen Sie eine Funktion, die den Torus transformiert, dreht und anordnet

import bpy
import math
import numpy as np

#Definition der Funktion, die das Material bestimmt
def material(name = 'material'):
    material_glass = bpy.data.materials.new(name)
    #Stellen Sie den Knoten zur Verfügung
    material_glass.use_nodes = True
    p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
    #0→BaseColor/7→roughness(=Rauheit)/15→transmission(=Vermehrung)
    #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
    #Fügen Sie einem Objekt Materialelemente hinzu
    bpy.context.object.data.materials.append(material_glass)

#Definition einer Funktion, die den Torus und die Farben jeweils transformiert und verschiebt
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,
            )
        #In Richtung der Y-Achse schrumpfen
        bpy.ops.transform.resize(value=(1, 0.3, 1))
        #Um die Z-Achse drehen
        bpy.ops.transform.rotate(value=math.pi*i*10/360,orient_axis='Z')
        #Fügen Sie einem Objekt Materialelemente hinzu
        material('Random')

colorful_torus_spiral()

c4.png


4. Englische Wörter

englische Wörter Übersetzung
spiral Spiral
material Material, Material
principled Prinzip, Prinzip
primitive Primitive
math Mathematik
add hinzufügen
context Kontext, Umgebung
value Wert
default Standard
append hinzufügen
generate produzieren
inputs erhalten

Referenzmaterial

Referenz: Mit Blender x Python automatisch eine große Menge lebenden Partikels generieren

Recommended Posts

[Blender x Python] Lass uns zufällig meistern !!
[Blender x Python] Lass uns die Rotation meistern !!
[Blender x Python] Lass uns das Material beherrschen !!
[Blender x Python] Beginnen wir mit Blender Python !!
[Python] Lass uns alle und jeden meistern
Blender 2.9 Python Extrude extrudieren
Blender 2.8, Python, Kamerabewegung, zufällige Farbspezifikation
[Blender x Python] Denken Sie an Code mit Symbolen
Python-String-Manipulations-Master
Mixer, Python, Wendeltreppe
Zufälliger Spaziergang in Python
Führen Sie Blender mit Python aus
Mixer, Python, Kugelverhalten
Zufällige String-Generierung (Python)
Blender 2.8, Python-Cube-Skalierung
Ziel Python Library Master (36) json2html
Ziel Python-Master (49) psidialogs
Mal sehen, wie def in Python verwendet wird
Lassen Sie uns Python Janome einfach verwenden
Ziel Python Library Master (26) easyxml
x86-Compiler selbst erstellt mit Python
Ziel Python Library Master (29) table_printer
Balanced Random Forest in Python
Registrieren Sie DynamoDB x Python / Decimal
Ziel Python Library Master (46) Browserplus
Ziel Python Library Master (30) Chronyk
Ziel Python Library Master (3) Arbeitskalender
Ziel Python Speed Master (42) Speedrecorder
Ziel Python Library Master (37) Slimurl
Ziel Python Library Master (44) Pynetviz
Ziel Python Library Master (8) Rolex
Ziel Python Library Master (52) Marktime
Ziel Python Library Master (7) Numparser
Ziel Python Library Master (21) hy
Richten Sie die Anforderungen des Python Library Master (18) aus
Blender 2.9, Python-Gebäude, Auto, Video
Ziel Python Library Master (13) easydev
Zielen Sie gleichzeitig auf den Python-Bibliotheksmaster (34)
Ziel ist die Wortsegmentierung des Python Library Master (40)
Mixer, Python, Wendeltreppe, Farbe
Ziel Python Library Master (43) cpmoptimize
Ziel Python Library Master (68) Pazudorasolver
Ziel Python Library Master (58) Fälscher
Ziel Python Library Master (11) nlist
Ziel Python Library Master (38) beautiful_print
Ziel Python Library Master (2) Vincent
Zielen Sie auf das Logbuch des Python Library Master (59)
Ziel Python Library Master (51) Pyautogui
Setzen Sie Python 3.x in Ubuntu ein
Ziel Python Library Master (10) Timeit
Ziel Python Python Master (0) Links
Verwenden Sie Random Forest mit Python
Ziel Python Library Master (66) youtube-dl