Blender Italia Forum Coding Supporto Python allineare faccia al piano XY via python

Taggato: ,

  • Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 4 mesi fa da neptunus.
Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Autore
    Post
  • neptunus
    Partecipante
    • Blenderista
    • Post sul Forum 9
    @neptunus
    #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.

     

     

     

     

     

    BAdmin
    Amministratore del forum
      @badmin
      #864384

      @mugnozzo

      BAdmin
      Amministratore del forum
        @badmin
        #864386

        Ho spostato la discussione sotto Coding > supporto Pithon

        neptunus
        Partecipante
        • Blenderista
        • Post sul Forum 9
        @neptunus
        #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?

         

        Harvester
        Moderatore
        @harvester
        #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.

        neptunus
        Partecipante
        • Blenderista
        • Post sul Forum 9
        @neptunus
        #864452

        Vi chiedo scusa, non mi ero reso conto. Ho riscritto tutto il codice da zero e adesso sembra funzionare.

        Grazie.

      Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
      • Devi essere connesso per rispondere a questo topic.