[PYTHON] Erstellen Sie ein teuflisches Bild mit Blenders Skript

** * Blender-Version ist 2.80 **

Einige Modellierungen in Blender können mithilfe von Python-Skripten zeitlich katastrophal reduziert werden. Die Anordnung einer großen Anzahl von Objekten ist die beste. Ich werde Ihnen ein Beispiel zeigen.

Ordnen Sie einfache Figuren

Ordnen Sie die Grundelemente (einfache Figuren) an.

Wenn Sie das Fenster teilen und mit dem Cursor auf einer Seite Umschalt + F11 drücken, ist dies wie folgt.

image.png

Drücken Sie "Neu", um ein neues Skript zu erstellen.

image.png

Kopieren Sie den folgenden Text.


import bpy

#reset objects
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(True)

max = 20

for i in range(0,max):
    for j in range(0,max):
        bpy.ops.mesh.primitive_cone_add(
        radius1=.7,
        location=(i,j,0)
        )

Klicken Sie auf "Skript ausführen" oder geben Sie "Alt + P" ein, um das folgende Bild zu erstellen.

image.png

Sie können die Wiederholungsbreite angeben, indem Sie mit dem Wert "max" spielen. Wenn es um "20" geht, denke ich, dass es mit den meisten Computern in Ordnung ist, aber wenn es "100" ist, kann es für ein paar Minuten einfrieren. radius1 gibt den Radius des Bodens an, und 0.7 gibt einen Wert nahe $ \ frac {1} {\ sqrt {2}} $ an, so dass sich die Böden kaum berühren. Machen.

Dramatischer

image.png


import bpy
import math

#reset objects
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(True)

max = 20

for i in range(0,max):
    for j in range(0,max):
        height = 2+math.sin(i+j)
        bpy.ops.mesh.primitive_cone_add(
        radius1=.7,
        location=(i,j,height/2),
        depth = height)

Fügen Sie der Höhe des Kegels eine Variation hinzu. Verwenden Sie eine Dreiecksfunktion, um die Höhe regelmäßig zu ändern. Wenn Sie der z-Position nicht die Hälfte der in "Tiefe" angegebenen Höhe hinzufügen, stimmt die Höhe des Bodens nicht überein, also "Tiefe = Höhe", "Ort = (i, j, Höhe / 2)" Ich werde.

Verwenden Sie auch Höhe

image.png

import bpy

#reset objects
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(True)

max = 5

for i in range(-max,max):
    for j in range(-max,max):
        for k in range(-max,max):
            bpy.ops.mesh.primitive_cone_add(
            location=(i*4,j*4,k*4)
            )

Fühle das Universum. Für zukünftige Berechnungen reicht der Iterationsbereich von "0" <"max" bis "-max" <"max".

Änderung hinzufügen (zufällig)

image.png


import bpy
import numpy

#reset objects
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(True)

max = 5

for i in range(-max,max):
    for j in range(-max,max):
        for k in range(-max,max):
            bpy.ops.mesh.primitive_cone_add(
            location=(i*4,j*4,k*4),
            rotation=numpy.random.rand(3)*3,
            )

Für "Rotation" wird eine Zufallszahl angegeben. Das ist schön damit.

Änderung hinzufügen (regulär)

image.png

import bpy
import math

#reset objects
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(True)

max = 5

for i in range(-max,max):
    for j in range(-max,max):
        for k in range(-max,max):
            dist = math.sqrt(i*i+j*j)
            zx = math.atan2(j,i)
            zy = -math.pi/2-math.atan2(k,dist)
            bpy.ops.mesh.primitive_cone_add(
            location=(i*8,j*8,k*8),
            depth=dist*2,
            rotation=(0,zy,zx)
            )

Alle Zapfen sind zentriert. $ \ Tan ^ {-1} (\ frac {j} {i}) $ für Längengrad, $ \ tan ^ {-1} (\ frac {k} {\ sqrt {i ^ 2 + j ^ 2}}) Der Breitengrad wird mit $ berechnet. Die "Tiefe" wird auch angepasst, um ein Gefühl der Mitte zu erzeugen.

Kopieren Sie beliebige Formen und ordnen Sie sie an

Es ist langweilig, wenn es sich nur um Grundelemente handelt. Kopieren Sie also beliebige Objekte und ordnen Sie sie an. Wir werden dies tun, indem wir diejenige arrangieren, auswählen, die die Kopierquelle sein wird, und sie ernsthaft kopieren.

image.png

Das ist,

image.png

So was.

import bpy
import numpy

for i in range(0,500):
    bpy.ops.object.duplicate()
    bpy.context.object.location = numpy.random.rand(3)*40-20
    bpy.context.object.rotation_euler = numpy.random.rand(3)*3

Importieren und arrangieren Sie eine große Anzahl von Figuren

Wenn Sie weitere Änderungen an der Abbildung vornehmen möchten, können Sie fbx, obj oder ply im Voraus vorbereiten und eine große Menge davon importieren. Kurz zuvor (https://qiita.com/hibit/items/f78b8a167cc75ce749dc) Wir haben eine große Anzahl menschlicher Körpermodelle generiert. Importieren Sie sie also alle auf einmal und ordnen Sie sie an. Es ist erforderlich, eine große Anzahl von Dateien in einem bestimmten Ordner im Voraus vorzubereiten und vorzubereiten, damit sie gemeinsam anhand der Seriennummer verarbeitet werden können.

image.png

Ist es Neo Exdes?

import bpy
import numpy

#Geben Sie hier den Dateipfad (bis kurz vor die Seriennummer) ein
dir = r'~~~' 

for i in range(0,500):
    #Geben Sie die Seriennummer und die Nebenstelle an (obj mit diesem Code)
    path = dir + str(i) + '.obj' 
    bpy.ops.import_scene.obj(filepath=path)

for i in range(0,500):
    bpy.data.objects[i].location = numpy.random.rand(3)*20-10

Recommended Posts

Erstellen Sie ein teuflisches Bild mit Blenders Skript
Erstellen Sie ein Sternensystem mit Blender 2.80-Skript
Erstellen Sie eine Homepage mit Django
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie mit Class einen Python-Funktionsdekorator
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Erstellen Sie eine GUI-App mit Tkinter of Python
Erstellen Sie eine große Textdatei mit Shellscript
VM mit YAML-Datei (KVM) erstellen
Erstellen Sie eine einfache Web-App mit Flasche
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen Sie mit NetworkX einen verbindenden nächsten Nachbarn
Erstellen Sie einen Webdienst mit Docker + Flask
Erstellen Sie ein privates Repository mit AWS CodeArtifact
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Erstellen Sie eine Matrix mit PythonGUI (Textfeld)
Erstellen Sie ein Diagramm mit Rändern, die mit matplotlib entfernt wurden
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
Erstellen Sie eine mit tkinter erstellte ausführbare GUI-Datei
Erstelle mit pygame2 eine neue Benutzeroberfläche!
Erstellen Sie eine PDF-Datei mit einer zufälligen Seitengröße
Erstellen Sie eine virtuelle Umgebung mit conda in Python
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erwecken Sie Ihr Leben mit Blender-Skripten prozedural zum Leben
Erstellen Sie ein Bulletin Board mit Heroku, Flask, SQL Alchemy
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Erstellen Sie eine Matrix mit PythonGUI (tkinter-Kombinationsfeld)
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Schritte zum Erstellen eines Twitter-Bots mit Python
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie mit Python + Qt (PySide) ein farbspezifisches Widget.
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Machen Sie einen Zylinder mit open3d + STL-Dateiausgabe
Erstellen Sie in Tornado einen HTTP-Server (Hello World)
Erstellen Sie ein Übersetzungswerkzeug mit dem Translate Toolkit
Erstellen Sie eine Tabelle mit IPython Notebook
Versuchen Sie, mit Tkinter in Python dynamisch einen Checkbutton zu erstellen
Erstellen Sie eine virtuelle Umgebung mit Anaconda, die über Pyenv installiert ist
[Python] Generieren Sie ValueObject mit dem vollständigen Konstruktor mithilfe von Datenklassen
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Warum nicht einfach mit Python eine stilvolle Tabelle erstellen?
[Blender] Ergänzen Sie die Python-API von Blender mit einem Texteditor
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Code-Server-Online-Umgebung (2) Erstellen Sie mit Boto3 ein virtuelles Netzwerk
Erstellen Sie einen Chatbot, der die kostenlose Eingabe mit Word2Vec unterstützt
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
Erstellen Sie einen Stapel von Bildern und blasen Sie sie mit ImageDataGenerator auf
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
Erstellen Sie eine Zufallszahl mit einer beliebigen Wahrscheinlichkeitsdichte
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Erstellen Sie einen Home Music Server mit Centos8 + Universal Media Server