November 22nd at 10:31am
Smiley_Mikaël
Prompt pour la génération : Je suis entrain de travailler sur un projet de smiley en 3d. Je veux que la position, la rotation, et l'échelle de mes différent élément, soit contrôlé par un fichier texte, ou JSON en dehors d'un script. Comment je peux faire pour que Blender, lisent ce fichier externe, et puissent modifier les paramètres cités, automatiquement.
Script pour récupérer les informations :
import bpy import json
Hardcode the path to the JSON file
json_path = 'D:\Boulot\Art et design (étude)\Workshop\Workshop ia\your_file.json'
Read JSON file
with open(json_path, 'r') as f: data = json.load(f)
Modify objects
for obj_name, obj_data in data.items():
Check if object exists in the scene
if obj_name in bpy.context.scene.objects:
obj = bpy.context.scene.objects[obj_name]
obj.location = obj_data['location']
obj.rotation_euler = obj_data['rotation']
obj.scale = obj_data['scale']
Contenu du fichier JSON :
{ "ObjectName1": { "location": [x, y, z], "rotation": [x, y, z], "scale": [x, y, z] }, "ObjectName2": { "location": [x, y, z], "rotation": [x, y, z], "scale": [x, y, z] }, ... }
J’ai donc rempli le fichier JSON avec les 3 objet que j’ai dans ma scéne.
Contenu du fichier JSON :
{ "Face": { "location": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, "Oeil": { "location": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, "Bouche": { "location": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] } }
Essai de placement des objet par mistral :
prompt : Maintenant nouvelle exercice ! J'aimerais que le contenu du fichier JSON, tu le modifie pour me faire correctement le smiley. Car comme tu peux le voir, tous les éléments sont positione sur le point 0. J'ai trois élément, un objet pour le visage apellé "Face" d'un diamètre de 2 mètre. Un pour les yeux appelé "Oeil" constitué d'un ovale d'une Hauteur de 0.4m et de 0.1m de largeur. Mis en mirroir, ducoup la position de l'objet correspond à l'oeil gauche. et un pour la bouche appelé "Bouche3. Qui est un rectangle de de 1m de largeur et de 0.2 m de hauteur. essaye de me placer les élément correctement avec le fichier json pour faire le visage selon tes connaissances.
Résultat : { "Face": { "location": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, "Oeil": { "location": [-0.5, 0, 0.5], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, "Bouche": { "location": [0, -0.2, 0.5], "rotation": [0, 0, 0], "scale": [1, 1, 1] } }
Résultat final :
{
"Face": {
"location": [0, 0, 0],
"rotation": [0, 0, 0],
"scale": [1, 1, 1]
},
"Oeil": {
"location": [-0.5, 0.2, 0],
"rotation": [0, 0, 0],
"scale": [1, 1, 1]
},
"Bouche": {
"location": [0, -0.4, 0],
"rotation": [0, 0, 0],
"scale": [1, 1, 1]
}
}
Pour mettre en lien mon projet, je lui ai demandé de me générer un script qui permettrait de mettre des valeurs aléatoires dans la position de la bouche et des yeux sans que ce soit trop déformé.
Prompt : Génére moi un scripts dans blender qui permettrait de modifier la position des objets de manière aléatoire
import json import random
Generate random values for the location and scale of the objects
face_location = [0, 0, 0] face_scale = [1, 1, 1]
oeil_location = [-0.5 + random.uniform(-0.1, 0.1), 0.2 + random.uniform(-0.05, 0.05), 0] oeil_scale = [random.uniform(0.9, 1.1), random.uniform(0.9, 1.1), random.uniform(0.9, 1.1)]
bouche_location = [random.uniform(-0.1, 0.1), -0.4 + random.uniform(-0.05, 0.05), 0] bouche_scale = [random.uniform(0.9, 1.1), random.uniform(0.9, 1.1), random.uniform(0.9, 1.1)]
Create the JSON data
data = { "Face": { "location": face_location, "rotation": [0, 0, 0], "scale": face_scale }, "Oeil": { "location": oeil_location, "rotation": [0, 0, 0], "scale": oeil_scale }, "Bouche": { "location": bouche_location, "rotation": [0, 0, 0], "scale": bouche_scale } }
Write the JSON data to a file
with open('D:/Boulot/Art et design (étude)/Workshop/Workshop ia/your_file.json', 'w') as f: json.dump(data, f, indent=2)
print("JSON file generated successfully.")