[PYTHON] Créez une image diabolique avec le script de Blender

** * La version de Blender est 2.80 **

Certaines modélisations dans Blender peuvent être considérablement réduites dans le temps à l'aide de scripts Python. Le travail d'agencement d'un grand nombre d'objets est le meilleur. Je vais vous montrer un exemple.

Organiser des figures simples

Organisez les primitives (figures simples).

Si vous divisez la fenêtre et appuyez sur Shift + F11 avec le curseur sur un côté, ce sera comme suit.

image.png

Appuyez sur "Nouveau" pour créer un nouveau script.

image.png

Copiez le texte suivant.


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

Cliquez sur "Exécuter le script" ou entrez ʻAlt + P`, et l'image suivante sera créée.

image.png

Vous pouvez spécifier la largeur de répétition en jouant avec la valeur de «max». Si c'est environ «20», je pense que ça va avec la plupart des ordinateurs, mais si c'est «100», il peut se figer pendant quelques minutes. radius1 spécifie le rayon du bas, et 0.7 spécifie une valeur proche de $ \ frac {1} {\ sqrt {2}} $ de sorte que les bas de l'autre se touchent à peine. Faire.

Plus dramatique

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)

Ajoutez une variation à la hauteur du cône. Utilisez une fonction triangulaire pour changer la hauteur périodiquement. Si vous n'ajoutez pas la moitié de la hauteur spécifiée dans profondeur à la position z, la hauteur du fond ne correspondra pas, donc profondeur = hauteur,location = (i, j, hauteur / 2) Je vais.

Utiliser également la hauteur

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

Ressentez l'univers. La plage d'itération va de «0» <«max» à «-max» <«max» pour faciliter les calculs futurs.

Ajouter un changement (aléatoire)

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

Un nombre aléatoire est spécifié pour "rotation". C'est magnifique avec ça.

Ajouter un changement (régulier)

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

Tous les cônes sont centrés. $ \ Tan ^ {-1} (\ frac {j} {i}) $ pour la longitude, $ \ tan ^ {-1} (\ frac {k} {\ sqrt {i ^ 2 + j ^ 2}}) La latitude est calculée avec $. La «profondeur» est également ajustée pour créer une sensation d'être vers le centre.

Copier et organiser des formes arbitraires

C'est ennuyeux s'il ne s'agit que de primitives, alors copiez et arrangez des objets arbitraires. Nous le ferons en organisant et en sélectionnant celui qui sera la source de la copie, et en le copiant sérieusement.

image.png

C'est,

image.png

Comme ça.

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

Importez et organisez un grand nombre de chiffres

Si vous souhaitez apporter d'autres modifications à la figure, vous pouvez préparer à l'avance fbx, obj ou ply et en importer un grand nombre. Juste avant Nous avons généré un grand nombre de modèles de corps humains, alors importons-les tous en même temps et organisons-les. Il est nécessaire de préparer à l'avance un grand nombre de fichiers dans un dossier spécifique et de les préparer pour qu'ils puissent être traités collectivement par numéro de série.

image.png

Est-ce Neo Exdes?

import bpy
import numpy

#Entrez ici le chemin du fichier (juste avant le numéro de série)
dir = r'~~~' 

for i in range(0,500):
    #Spécifiez le numéro de série et l'extension (obj avec ce 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

Créez une image diabolique avec le script de Blender
Créez un système stellaire avec le script Blender 2.80
Créer une page d'accueil avec django
Créer un répertoire avec python
Créez un environnement virtuel avec Python!
Créer un téléchargeur de fichiers avec Django
Créer un décorateur de fonction Python avec Class
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Créer une application graphique avec Tkinter de Python
Créer un gros fichier texte avec shellscript
Créer une machine virtuelle avec un fichier YAML (KVM)
Créez une application Web simple avec Flask
Créer un compteur de fréquence de mots avec Python 3.4
Créer un voisin le plus proche de connexion avec NetworkX
Créer un service Web avec Docker + Flask
Créer un référentiel privé avec AWS CodeArtifact
Créez un compteur de voiture avec Raspberry Pi
Créer une matrice avec PythonGUI (zone de texte)
Créer un graphique avec des bordures supprimées avec matplotlib
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
Créer un fichier exécutable GUI créé avec tkinter
Créez une interface utilisateur de jeu à partir de zéro avec pygame2!
Créer un fichier PDF avec une taille de page aléatoire
Créer un environnement virtuel avec conda avec Python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Donnez vie à votre vie de manière procédurale avec les scripts Blender
Créer un babillard avec Heroku, Flask, SQL Alchemy
Créez un tableau de bord pour les appareils réseau avec Django!
Créer une matrice avec PythonGUI (combo tkinter)
Créer une barre de couleurs avec Python + Qt (PySide)
Étapes pour créer un bot Twitter avec Python
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer un widget avec une couleur spécifiée avec Python + Qt (PySide)
Procédure de création d'application multi-plateforme avec kivy
Créez une application Hello World avec un seul fichier avec django
Créer un fichier au format Photoshop (.psd) avec python
Créer un cylindre avec une sortie de fichier open3d + STL
Créer un serveur "Hello World" (HTTP) dans Tornado
Créez un outil de traduction avec Translate Toolkit
Créer une table avec le notebook IPython
Essayez de créer un Checkbutton dynamiquement avec Tkinter en Python
Créez un environnement virtuel avec Anaconda installé via Pyenv
[Python] Générer ValueObject avec un constructeur complet à l'aide de classes de données
Essayez de créer une application Todo avec le framework Django REST
Pourquoi ne pas créer facilement une table élégante avec Python?
[Blender] Complétez l'API Python de Blender avec un éditeur de texte
Créez un environnement de développement python avec vagrant + ansible + fabric
environnement en ligne de serveur de code (2) Créer un réseau virtuel avec Boto3
Créez un chatbot prenant en charge la saisie gratuite avec Word2Vec
Créer une application Todo avec Django ③ Créer une page de liste de tâches
Créez un lot d'images et gonflez avec ImageDataGenerator
Créez une carte thermique de tweet avec l'API Google Maps
Créer un nombre aléatoire avec une densité de probabilité arbitraire
Créer une couche pour AWS Lambda Python dans Docker
Créez un serveur de musique domestique avec Centos8 + Universal Media Server