Community › Forum › Coding › Supporto Python › allineare faccia al piano XY via python Taggato: Python, rotation Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 1 anno, 6 mesi fa da neptunus. Stai visualizzando 6 post - dal 1 a 6 (di 6 totali) Autore Post neptunusPartecipante @neptunus 28 Febbraio 2022 alle 15:32 #864383 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. BAdminAmministratore del forum @badmin 28 Febbraio 2022 alle 19:56 #864384 @mugnozzo BAdminAmministratore del forum @badmin 28 Febbraio 2022 alle 19:57 #864386 Ho spostato la discussione sotto Coding > supporto Pithon neptunusPartecipante @neptunus 1 Marzo 2022 alle 9:46 #864422 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? HarvesterPartecipante @harvester 1 Marzo 2022 alle 17:28 #864441 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. neptunusPartecipante @neptunus 2 Marzo 2022 alle 12:43 #864452 Vi chiedo scusa, non mi ero reso conto. Ho riscritto tutto il codice da zero e adesso sembra funzionare. Grazie. 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