Faire fonctionner Blender avec Python

1. Introduction

Voici les étapes pour faire une modélisation simple avec Python sur le mélangeur. L'environnement est la version 2.8.5 de Blender et le système d'exploitation est Windows 10. Veuillez noter qu'il y a eu un changement significatif dans les spécifications de 2.7 à 2.8. Vous pouvez penser que 2.7 et 2.8 sont presque incompatibles.

2. Cadre japonais

Si vous devez utiliser le japonais, définissez les paramètres suivants. Il n'y a rien de particulièrement difficile. Préférences utilisateur → onglet Interface Vérifiez la traduction et définissez la langue sur le japonais Activez les info-bulles, l'interface et les nouvelles données, puis cliquez sur Enregistrer les paramètres utilisateur. Dans la version actuelle, le japonais ne peut pas être saisi directement dans l'éditeur. Copiez et collez les caractères que vous tapez dans d'autres éditeurs de texte si nécessaire.

3. Comment utiliser Python sur Blender

Si vous exécutez du code Python sur Blender et obtenez une erreur, vous devez afficher l'écran de la console. Pour afficher l'écran de la console

Pour les fenêtres

Cliquez sur Basculer la console système dans le menu Fenêtre en haut pour afficher l'écran de la console.

Pour Mac

Démarrer le mélangeur Au lieu de double-cliquer sur l'icône, entrez la commande suivante à partir du terminal pour démarrer le mélangeur. /Applications/blender.app/Contents/MacOS/blender (L'emplacement du dossier de l'application (/Applications/blender.app) change en fonction de l'environnement)

3. Composition de base des éléments

Le mélangeur place des éléments appelés primitifs.

models.py


import bpy  #importation blender

#1.Emplacement de la colonne:Coordonnées centrales du rayon de la figure:Profondeur du rayon du cercle:Rotation en hauteur: angle de rotation du solide(rad)
bpy.ops.mesh.primitive_cylinder_add(location=(-5, 5, 0), radius=1, depth=3, rotation=(0, 0, 0))

#2.Emplacement cubique:Coordonnées centrales de la taille de la figure:Longueur d'un côté de la rotation du cube: angle de rotation du solide(rad)
bpy.ops.mesh.primitive_cube_add(location=(5, 0, 0), size=1.5, rotation=(0, 0, 0))

#3.Emplacement de la sphère:Coordonnées centrales du rayon de la figure:Subdivisions de rayon de sphère: nombre de divisions
bpy.ops.mesh.primitive_ico_sphere_add(location=(-5, 0, 0), radius=1, subdivisions=5)

#4.monkey location:Coordonnées centrales de la taille de la figure:Taille
bpy.ops.mesh.primitive_monkey_add(location = (-5, -5, 0), size = 3.0)

#5.Emplacement en forme de beignet:Coordonnées du centre de la figure majeure_radius:Rayon de l'anneau mineur_radius:Rotation du rayon du cylindre:Angle de rotation solide(rad)
bpy.ops.mesh.primitive_torus_add(location=(0, 5, 0), major_radius=1.0, minor_radius=0.1, rotation=(0, 0, 0))

#6.Assiette plate(Cercle) location:Coordonnées centrales du remplissage de la figure_type:Rayon de remplissage:Rotation radiale:Angle de rotation solide(rad)
bpy.ops.mesh.primitive_circle_add(location=(5, 5, 0), fill_type="NGON", radius=2, rotation=(0, 0, 0))

#7.Assiette plate(carré) location:Coordonnées centrales de la taille de la figure:Rotation de la longueur latérale:Angle de rotation solide(rad)
bpy.ops.mesh.primitive_plane_add(location=(5, -5, 0), rotation=(0, 0, 0), size=2)

#8.Emplacement du cône polygonal:Coordonnées centrales des sommets de la figure:Nombre de sommets rayon1,radius2:Profondeur du rayon du cercle:Rotation en hauteur: angle de rotation du solide(rad)
bpy.ops.mesh.primitive_cone_add(location=(0,-5,0),vertices=10,radius1=0.5,radius2=1,depth=3, rotation=(0, 0, 0))

sample4.png

4. Modélisation variée

4.1 Dessin de sphère par boucle

loop.py


import bpy
import math

#Supprimer l'élément existant
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

N = 12
RR1 = 10.0
RR2 = 2.0
for i in range(0, N):
    rad = 2 * math.pi * i /N  #Calcul de l'angle 2π i/n
    xx = RR1 * math.cos(rad) #rayon de calcul des coordonnées x*cosθ
    yy = RR1 * math.sin(rad) #rayon de calcul des coordonnées y*sinθ
    #Création de sphère
    bpy.ops.mesh.primitive_ico_sphere_add(location=(xx, yy, 0),radius= RR2, subdivisions = 5 )

sample2.png

4.2 Transformer / faire pivoter / déplacer les primitives

rectangle.py



import bpy

#Supprimer l'élément existant
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)
#Dessiner un cube
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0), size=1.5, rotation=(0, 0, 0))
#Transformez la forme(2 fois dans la direction X, 1 fois dans la direction Y, 0 dans la direction de l'épaisseur.5 fois)
bpy.ops.transform.resize(value=(2.0,1.0,0.1))
#Faire pivoter la forme(30 ° autour de l'axe Y)
bpy.ops.transform.rotate(value=3.1415/6 ,orient_axis='Y')
#Déplacer la figure(Déplacer 5 le long de l'axe Z)
bpy.ops.transform.translate(value=(0,0,5))

sample5.png

4.3 Réglage du matériau

material.py


import bpy

# 1.Supprimer l'élément existant
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

# 2.Définition du matériau(rouge)
mat1 = bpy.data.materials.new('Red')
mat1.diffuse_color = (1.0, 0.0, 0.0, 1.0)

# 3.Définition du matériau(Bleu)
mat2 = bpy.data.materials.new('blue')
mat2.diffuse_color = (0.0, 0.0, 1.0, 1.0)

# 4.Création de sphère
bpy.ops.mesh.primitive_ico_sphere_add(location=(0, 0, 1), radius = 0.5, subdivisions=5 )
bpy.context.object.data.materials.append(mat1) #Matériel(rouge)La désignation

# 5.Création d'assiettes plates
bpy.ops.mesh.primitive_cube_add(location=(0, -0.5, 0), size=2.5)
bpy.ops.transform.resize(value=(2.0,2.0,0.05)) #Transformez la forme(Double dans la direction X, double dans la direction Y, 0 dans la direction de l'épaisseur.05 fois)
bpy.context.object.data.materials.append(mat2) #Matériel(Bleu)La désignation

sample6.png

4.4 Création d'un maillage 1

mesh1.py


import bpy

#Supprimer l'élément existant
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

#Création de données de sommet
verts = [[-2.0, -2.0, 0.0], [-2.0, 2.0,  0.0], [2.0, 2.0,  0.0] , [2.0, -2.0,  0.0], [2.0, -2.0, 4.0] , [2.0, 2.0, 4.0]  ]
#Création de données de surface
faces = [[0,1,2,3], [2,3,4,5]]

msh = bpy.data.meshes.new("cubemesh") #Déclaration des données de maillage
msh.from_pydata(verts, [], faces) #Créez un maillage avec des coordonnées de sommet et des informations sur les sommets de chaque face
obj = bpy.data.objects.new("cube", msh) #Créer un objet avec des données de maillage
bpy.context.scene.collection.objects.link(obj) #Placer des objets dans la scène

sample7.png

4.5 Créer un maillage 2

mesh2.py


import bpy
import math

#Supprimer l'élément existant
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

#Créer des sommets
verts = []
for i in range(0,21):
    x = 2 *math.pi / 20 * i
    verts.append([x, -1, math.sin(x)])

for i in range(0,21):
    x = 2 * math.pi / 20 * i
    verts.append([x,  1, math.sin(x)])

#Création de données de surface
faces = []
for i in range(0,20):
    faces.append([i, i+1, i+22, i+21])

msh = bpy.data.meshes.new("sinmesh") 
msh.from_pydata(verts, [], faces) 
obj = bpy.data.objects.new("sin", msh) 
bpy.context.scene.collection.objects.link(obj) 

sample8.png

5. Enfin

Blender est également un freeware open source, donc ce n'est pas mal pour la modélisation. Le changement de 2.7 à 2.8 était choquant, alors j'ai décidé de ne plus aller plus loin dans Blender.

Recommended Posts

Faire fonctionner Blender avec Python
Utiliser Kinesis avec Python
Exécutez Blender avec python
Utiliser Excel avec Python (1)
Utiliser Excel avec Python (2)
Exploitez Excel avec Python open pyxl
Exploitez TwitterBot avec Lambda, Python
[Note] Faites fonctionner MongoDB avec Python
[Python] [SQLite3] Exploiter SQLite avec Python (basique)
Faites fonctionner l'imprimante de reçus avec python
Essayez d'exploiter Facebook avec Python
Exécutez mruby avec Python ou Blender
Faites fonctionner les appareils électroménagers ECHONET Lite avec Python
Démarrez avec Python avec Blender
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Extrusion Python Extrude de Blender 2.9
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Faire fonctionner l'alimentation smartlife avec python (de-IFTTT)
[GCP] Exploitez Google Cloud Storage avec Python
[Pyto] Faites fonctionner le Taptic Engine de l'iPhone avec Python
[Python] Utiliser automatiquement le navigateur avec Selenium
Faites fonctionner des appareils électroménagers avec Python et IRKit
[Blender x Python] Commençons avec Blender Python !!
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Exploitez Filemaker depuis Python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python