Connexion
Menu Principal
Recherche
Menu secondaire
Image Aléatoire
Publicité
|
|
csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
coucou les cocus ah non, pardon bonjour sur une base de données de 3 lignes et 4 colonnes je n'obtiens que la ligne 3 à l'écran (pas les deux premières) où ai-je faux ? import bpy, csv
def event_text(event):
bpy.ops.object.text_add()
ob = bpy.context.object
curve = ob.data
curve.body = "%s"%event
bpy.context.active_object.location=(float(lat),float(lon),float(date))
file = '\\Users\essai.csv'
with open( file ) as csvfile:
rdr = csv.reader( csvfile )
for row in rdr:
lat, lon, date, event = row[0], row[1], row[2], row[3]
print(lat, lon, date, event)
event_text(event)
Contribution le : 05/03/2021 15:15
|
|
|
Re: csv>python>blender |
|
OverdOzed 
Inscrit: 16/01/2011 17:05
De Le plus grand terrier du monde ! Et le plus high-tech.
Post(s): 4081
|
Bonjour, Le print est hors de la boucle, donc tu n'as que le résultat final, donc la dernière ligne. Au fait, petite astuce pour gagner du temps à l'écriture: lat, lon, date, event = row[0], row[1], row[2], row[3]
Si tu as exactement 4 colonnes dans ta ligne, tu peux remplacer ça ↑ par ça: lat, lon, date, event = row
C'est équivalent, mais moins pénible à écrire :)
Contribution le : 06/03/2021 13:44
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
merci @lapineige ! évidemment, les alinéas... merci ! ps : je ne suis pas certain de ne pas devoir rajouter des colonnes à l'avenir
Contribution le : 08/03/2021 08:49
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
bon, je progresse, mais j'ai toujours des difficultés pour intégrer dans la boucle : quand je fais la def camera(): je ne dois pas intégrer la création de caméra dans la boucle, sinon, j'aurai autant de camera que de lignes... import bpy, csv
from math import pi #useful for text and camera rotation_euler
def event_text(event):
bpy.ops.object.text_add()
ob = bpy.context.object
curve = ob.data
curve.body = "%s"%event
bpy.context.active_object.location=(float(x),float(y),float(z))
bpy.context.active_object.rotation_euler=(pi*90/180,0,0)
def camera_frames():
camera1 = bpy.data.cameras.new("Camera 1")
camera1.type = 'ORTHO'
camera1.lens = 18
camera_obj1 = bpy.data.objects.new("Camera 1", camera1)
camera_obj1.location = (x, y, z)
camera_obj1.rotation_euler = (pi*90/180, 0, 0)
scn.collection.objects.link(camera_obj1)
#define scene
scn = bpy.context.scene
#extraire les donnees du fichier csv :
file = '\\Users\essai.csv'
with open( file ) as csvfile:
rdr = csv.reader( csvfile )
for row in rdr:
x, y, z, event = row[0], row[1], row[2], row[3]
print(x, y, z, event)
#creer les blocs textes
event_text(event)
camera_frames
#pour la camera :
#dans un fichier csv organisé comme ceci :
#ligne 0 : x,y,z (cette ligne n'existe pas)
#ligne 1 : 1,2,3 (ou x1, y1, z1)
#ligne 2 : 2,4,6 (ou x2, y2, z2)
#ligne 3 : 3,9,12 (ou x3, y3, z3)
#creer la camera
#extraire les coordonnees x,y,z du fichier csv
#pour chaque ligne du fichier csv :
#1-une frame de début
#2-rester 5 secondes (soit 5*24 = 120 frames) au même endroit
#3-une frame de fin
#4-et environ 3 secondes pour déplacer la caméra jusqu'au point suivant (soit 3*24 = 72 frames)
#je suppose que Blender fera automatiquement le déplacement en courbe de Bézier, mais c'est un moindre problème.
# et on recommence en 1
#placer la camera aux coordonnées de la ligne 1 : (x1)-3, (y1)-3, (z1)
#ajouter une keyframe à la frame 0 pour la ligne 1
#laisser la camera au même endroit 5 secondes (1*5*24 = 120)
#déplacer la camera aux coordonnees de la ligne 2 (x2)-3, (y2)-3, (z2)
#placer la camera devant les coordonnées de la ligne 2 : (x2)-3, (y2)-3, (z2)
#etc.
#enregistrer les images en .avi
#je vois bien qu'il y a une itération : 2 keyframes, une de début et une de fin à chaque ligne du fichier csv,
#mais je ne sais pas comment l'intégrer dans la boucle...
Merci à vous !
Contribution le : 08/03/2021 14:44
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
Bon, voici où j'en suis... mais dans les frames rendues, je n'observe pas le déplacement et blender fige je suppose que je dois définir une frame de début et une frame de fin import bpy, csv from math import pi #useful for text and camera rotation_euler
mat= Material.New('newMat') mat.rgbCol = [t1,t2,t3]
def event_text(event): bpy.ops.object.text_add() ob = bpy.context.object curve = ob.data curve.body = "%s"%event bpy.ops.material.new() bpy.context.active_object.location=(float(x),float(y),float(z)) bpy.context.active_object.rotation_euler=(pi*90/180,0,0) ob.setMaterials([mat]) ob.activeMaterial bpy.context.scene.render.filepath = '\\Users\essai.avi' bpy.ops.render.render(animation=True)
#define scene scn = bpy.context.scene
#extraire les donnees du fichier csv :
file = '\\Users\essai.csv' # create the first camera cam1 = bpy.data.cameras.new("Camera 1") cam1.lens = 18
# create the first camera object cam_obj1 = bpy.data.objects.new("Camera 1", cam1) cam_obj1.rotation_euler = (pi*90/180, 0, 0) scn.collection.objects.link(cam_obj1)
with open( file, 'r' ) as f: reader = csv.reader(f, delimiter=',') for row in reader: x, y, z, event = row[0], row[1], row[2], row[3] cam_obj1.location = (float(x),float(y)-3,float(z)) print (row) print (reader.line_num) #creer les blocs textes event_text(event)
Contribution le : 09/03/2021 10:37
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
Bonjour J'aurais encore besoin d'aide Après avoir essayé beaucoup de combines et eu quelques résultats mais peu probants Quelle est la meilleure méthode, dans mon cas, pour enregistrer ma séquence en .avi ? En vous remerciant d'avance import bpy
import csv
from math import pi #useful for text and camera rotation_euler
def event_text(event):
bpy.ops.object.text_add()
ob = bpy.context.object
curve = ob.data
curve.body = "%s"%event
bpy.ops.material.new()
bpy.context.active_object.location=(float(x),float(y),float(z))
bpy.context.active_object.rotation_euler=(pi*90/180,0,0)
#define scene
scn = bpy.context.scene
# create the first camera
cam1 = bpy.data.cameras.new("Camera 1")
cam1.lens = 18
# create the first camera object
cam_obj1 = bpy.data.objects.new("Camera 1", cam1)
cam_obj1.rotation_euler = (pi*90/180, 0, 0)
scn.collection.objects.link(cam_obj1)
#extract datas from csv file :
file = '\essai.csv'
#make the loop
with open( file, 'r' ) as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
x, y, z, event = row[0], row[1], row[2], row[3]
cam_obj1.location = (float(x),float(y)-3,float(z))
cam_obj1.keyframe_insert(data_path=("location"), frame=((reader.line_num)-1)*120)
cam_obj1.keyframe_insert(data_path=("location"), frame=((reader.line_num)-1)*120+120)
print (reader.line_num)
#creer les blocs textes
event_text(event)
#render
Contribution le : 10/03/2021 09:56
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
Pliz ?
Contribution le : 11/03/2021 14:55
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
j'y suis finalement parvenu apparemment, le type de fichier devait être "AVI_RAW" ce qui donne : import bpy
import csv
from math import pi #useful for text and camera rotation_euler
#create material
material_basic = bpy.data.materials.new(name= "Basic")
material_basic.use_nodes = True
principled_node = material_basic.node_tree.nodes.get('Principled BSDF')
principled_node.inputs[17].default_value = (1,1,1,1)
def event_text(event):
bpy.ops.object.text_add()
ob = bpy.context.object
curve = ob.data
curve.body = "%s"%event
bpy.context.active_object.location=(float(x),float(y),float(z))
bpy.context.active_object.rotation_euler=(pi*90/180,0,0)
bpy.context.active_object.data.materials.append(material_basic)
#define scene
scn = bpy.context.scene
# create the first camera
cam1 = bpy.data.cameras.new("Camera 1")
cam1.lens = 18
# create the first camera object
cam_obj1 = bpy.data.objects.new("Camera 1", cam1)
cam_obj1.rotation_euler = (pi*90/180, 0, 0)
scn.collection.objects.link(cam_obj1)
scn.camera = cam_obj1
#extract datas from csv file :
file = '\\Users\essai.csv'
#make the loop
with open( file, 'r' ) as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
x, y, z, event = row[0], row[1], row[2], row[3]
cam_obj1.location = (float(x),float(y)-3,float(z))
cam_obj1.keyframe_insert(data_path=("location"), frame=((reader.line_num)-1)*120)
cam_obj1.keyframe_insert(data_path=("location"), frame=((reader.line_num)-1)*120+120)
print (reader.line_num)
#creer les blocs textes
event_text(event)
#render
bpy.context.scene.render.filepath = '\\Users\essai'
bpy.context.scene.render.image_settings.file_format = "AVI_RAW"
bpy.ops.render.render(animation = True)
Contribution le : 18/03/2021 11:15
|
|
|
Re: csv>python>blender |
|
Fou Furieux du Clan 
Inscrit: 17/07/2018 08:26
Post(s): 110
|
Bonjour à tous Toujours à propos du script ci-dessus, sauriez-vous comment ramener un texte trop long à la ligne ? et que python reconnaissent les textes (en UTF-8, il me semble), de façon à ne pas avoir î à la place d'un é, par exemple. Merci !
Contribution le : 18/11/2021 18:46
|
|
|
Sujets récemment répondus |
|
Forums |
Sujets |
Réponses |
Lus |
Dernières contributions |
Hors Sujet !! |
Buy (10 Pieces) Optoma - HZ39HDR 1080p Laser Projector with High Dynamic Range $9,990 |
0 |
7 |
Aujourd'hui 15:46:55 emailychang01  |
The Blender Clan 'tchat |
Avenir du blender clan [1][2][3]...[44] |
435 |
63380 |
Aujourd'hui 08:21:07 Redstar  |
Hors Sujet !! |
Buy (50 Pieces) Samsung Galaxy Tab S8+ 12.4-inch display Original Wi-Fi 256GB $27,500 |
0 |
26 |
Hier 14:13:51 emailychang01  |
Hors Sujet !! |
Buy (20 Pieces) New Sony PlayStation 5 Console – Horizon Forbidden West Bundle $8,000 |
0 |
50 |
15/08 14:53:07 emailychang01  |
Hors Sujet !! |
Buy (30 Pcs) Dell - Inspiron 2-in-1 16-Inch 512GB SSD $25,47 |
0 |
50 |
14/08 19:10:12 emailychang01  |
Hors Sujet !! |
les tutos de Moonboots [1][2][3]...[31] |
301 |
44534 |
14/08 13:41:53 moonboots  |
Hors Sujet !! |
Buy (100 Pcs) Sunpak 22 Bi-Color Ring Light Vlogging $10,900 |
0 |
69 |
13/08 16:17:37 emailychang01  |
Hors Sujet !! |
Buy (50 Pieces) Cambridge Audio - G2 Mini Portable Bluetooth Speaker - Black $5,950 |
0 |
88 |
12/08 15:43:03 emailychang01  |
Hors Sujet !! |
Buy (50 Pieces) New Samsung Galaxy Z Fold4 256GB Unlocked $64,950 Website: www.brianelectronics.com |
0 |
2164 |
11/08 14:19:42 emailychang01  |
Hors Sujet !! |
Buy (50 Pieces) Apple iPad Pro 11-Inches 2021 2TB Wifi + Cellular $84,950 |
0 |
109 |
10/08 16:07:53 emailychang01  |
Hors Sujet !! |
Buy (50 Pieces) New Original Unlocked Apple iPhone 13 5G 512GB $34,950 |
0 |
150 |
09/08 14:54:39 emailychang01  |
Questions & Réponses |
Problème alpha sur le rendu |
3 |
209 |
09/08 13:27:37 debutant  |
Hors Sujet !! |
Buy (30 Pieces) LG - 55-inch Class C2 Series OLED evo 4K UHD Smart webOS TV (2022) $44,970 |
0 |
140 |
08/08 13:58:45 emailychang01  |
Hors Sujet !! |
Buy(30 Pcs) Package Fujifilm-X-S10 Mirrorless Camera $30,570 Website: www.brianelectronics.com |
0 |
151 |
07/08 15:23:19 emailychang01  |
Hors Sujet !! |
Buy (10 Pieces) Sony - FE 70-200mm F2.8 GM OSS II Full-Frame Telephoto Zoom G Master Lens $24,990 |
1 |
83696 |
06/08 17:16:33 moonboots  |
The Blender Clan 'tchat |
Enfin ! depuis 20 ans :) |
2 |
303 |
06/08 15:06:57 stefff285  |
Hors Sujet !! |
Buy(50 Pcs) Optoma CinemaX P2 Home Theater Projector $94,950 Website: www.brianelectronics.com |
0 |
23041 |
05/08 15:34:27 emailychang01  |
Hors Sujet !! |
Buy (50 Pieces) Samsung Galaxy Tab S8+ 8GB 12.4-inch display Original Wi-Fi Only 128GB $22,500 |
0 |
18458 |
04/08 16:14:48 emailychang01  |
Hors Sujet !! |
Buy(50 Pcs) Mac Studio (2022) M1 Ultra 64GB 1TB SSD $174,950 |
0 |
271 |
03/08 17:10:34 emailychang01  |
Questions & Réponses |
problème sur la texture voulue |
3 |
434 |
03/08 01:56:09 meltingman  |
|
|
Qui est en ligne
143 utilisateur(s) en ligne (dont 88 sur Forums) Membre(s): 0 Invité(s): 143 plus... Nouveaux membres
Dernier Ajout
Evènements à venir
|