Community › Forum › Coding › Supporto Python › allineare faccia al piano XY via python Ricerca per: Taggato: Python, rotation Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 2 anni, 11 mesi fa da neptunus. Stai visualizzando 6 post - dal 1 a 6 (di 6 totali) Autore Post 28 Febbraio 2022 alle 15:32 #864383 neptunusPartecipante @neptunus Buongiorno, ecco il mio problema, vorrei allineare una faccia di un oggetto(l’oggetto ha solo questa faccia) al piano xy, in maniera tale che tutti i vertici(3) abbiano la componente z uguale. Ho calcolato l’angolo con i seguneti comadi, considerando la normale alla faccia e al pinoxy: normale_xy=math.Vector([0,0,1]) angle=face.normal.angle(normale_xy) e poi provo a fare la rotazione con: bmesh.ops.rotate( bm1, verts=vertex cent=vmin.co, matrix=M.Matrix.Rotation(angle, 3, ‘Z’)) dove vmin è il vertice avente componente minore tra i 3 vertici, vertex i vertici del triangolo, e bm1 il mio bmesh. La rotazione avviene ma non ottengo il risultato atteso. Dove sbaglio? Grazie in anticipo. Effettuare il login per mettere i like 28 Febbraio 2022 alle 19:56 #864384 BAdminAmministratore del forum @blenderitalia @mugnozzo Effettuare il login per mettere i like 28 Febbraio 2022 alle 19:57 #864386 BAdminAmministratore del forum @blenderitalia Ho spostato la discussione sotto Coding > supporto Pithon Effettuare il login per mettere i like 1 Marzo 2022 alle 9:46 #864422 neptunusPartecipante @neptunus Aggiornamento: import bpy import bmesh import math import mathutils as M # Get the active mesh ob = bpy.data.objects[“figura”] ob.select_set(state=True) me=ob.data # Get a BMesh representation bm = bmesh.new() # create an empty BMesh bm.from_mesh(me) # fill it in from a Mesh #Get vertex vertex=bm.verts vertex.ensure_lookup_table() #Get edges edges=bm.edges edges.ensure_lookup_table() faces=bm.faces faces.ensure_lookup_table() face=faces[0] for v in vertex: print(v.co) normale_z=M.Vector([0,0,1]) angle_z=face.normal.angle(normale_z) print(angle_z) ob.rotation_euler=[0,0,angle_z] me.update() vertex=bm.verts vertex.ensure_lookup_table() for v in vertex: print(v.co) Visivamente, dla layout, l’oggeto ruota(devo verificare che è la rotazione che desidero), ma se vado a stampare le cordinate dei vertici utilizzando la classe BMesh vedo sempre gli stessi valori. Dove sbaglio? Effettuare il login per mettere i like 1 Marzo 2022 alle 17:28 #864441 HarvesterPartecipante @harvester Purtroppo, questo sistema di messaggistica sembra non tenere conto di cose come l’indentazione dei paragrafi che sono necessari in uno script in Python, quindi il tutto risulta alquanto “poco leggibile”. Ma non è colpa tua. Effettuare il login per mettere i like 2 Marzo 2022 alle 12:43 #864452 neptunusPartecipante @neptunus Vi chiedo scusa, non mi ero reso conto. Ho riscritto tutto il codice da zero e adesso sembra funzionare. Grazie. Effettuare il login per mettere i like Autore Post Stai visualizzando 6 post - dal 1 a 6 (di 6 totali) Devi essere connesso per rispondere a questo topic. Accesso Nome utente: Password: Mantienimi connesso Accesso