sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    [Plugin] triangulateFaces.rb v1.2 20101120

    Scheduled Pinned Locked Moved Plugins
    97 Posts 21 Posters 109.1k Views 21 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • TIGT Online
      TIG Moderator
      last edited by

      @cphillips said:

      @tig said:

      @cphillips said:

      I needed the triangulation to prepare a model for export.

      Thanks for incorporating it into your script TIG! Why is it that back facing UV's didn't work?

      There is only a method to 'place material textures on a face' - and that assumes a 'front_face' - there's no 'back_face' method...

      Do you mean position_material? It takes a bool for front or back material

      http://code.google.com/apis/sketchup/docs/ourdoc/face.html#position_material

      Duh! 😳 I'll adjust the code and re-post...

      TIG

      1 Reply Last reply Reply Quote 0
      • TIGT Online
        TIG Moderator
        last edited by

        There's something afoot... What I posted before worked - on keeping the front face texture mapping but not on the back_face... Now when I try it it fails to map both faces ? Any ideas - CPhillips's idea worked fine in tests but now seems to fail...

        TIG

        1 Reply Last reply Reply Quote 0
        • C Offline
          CPhillips
          last edited by

          Post the code and I'll have a look. It might be the face.mesh(1). I think you need to use a different number when you want back uv's as well.

          1 Reply Last reply Reply Quote 0
          • honoluludesktopH Offline
            honoluludesktop
            last edited by

            Hi TIG, Any way to convert this kind of mesh into its component triangles?


            Drapery05.skp

            1 Reply Last reply Reply Quote 0
            • TIGT Online
              TIG Moderator
              last edited by

              @honoluludesktop said:

              Hi TIG, Any way to convert this kind of mesh into its component triangles?

              I wrote an example script a few weeks ago to do something like this... http://forums.sketchucation.com/viewtopic.php?p=186068#p186068 ❓

              TIG

              1 Reply Last reply Reply Quote 0
              • honoluludesktopH Offline
                honoluludesktop
                last edited by

                TIG, Thanks for the link, it works. Now I can make small edits to the (mesh?).

                1 Reply Last reply Reply Quote 0
                • jeff hammondJ Offline
                  jeff hammond
                  last edited by

                  @tig said:

                  Result: it triangulates a face... front Texture UVs are kept.

                  hey TIG,

                  if i run the script on this sphere, the UVs go haywire.
                  am i misunderstanding or misusing the script?
                  thanks

                  [edit] ok, wait.. i just read the rest of the thread and i guess this hasn't been sorted out ?


                  sorry about the size.. i guess i could of used a smaller texture πŸ™‚

                  dotdotdot

                  1 Reply Last reply Reply Quote 0
                  • TIGT Online
                    TIG Moderator
                    last edited by

                    @unknownuser said:

                    @tig said:

                    Result: it triangulates a face... front Texture UVs are kept.

                    hey TIG,

                    if i run the script on this sphere, the UVs go haywire.
                    am i misunderstanding or misusing the script?
                    thanks

                    [edit] ok, wait.. i just read the rest of the thread and i guess this hasn't been sorted out ?

                    It's broken... the UV mapping was CJP's but it still needs fixing...

                    TIG

                    1 Reply Last reply Reply Quote 0
                    • jeff hammondJ Offline
                      jeff hammond
                      last edited by

                      @tig said:

                      It's broken... the UV mapping was CJP's but it still needs fixing...

                      ah, ok..
                      too bad πŸ˜„

                      [fwiw - i can manually triangulate the sphere using and everything turns out ok.. i guess this script is doing something other than just drawing lines to cut quads in half?]

                      dotdotdot

                      1 Reply Last reply Reply Quote 0
                      • TIGT Online
                        TIG Moderator
                        last edited by

                        @unknownuser said:

                        @tig said:

                        It's broken... the UV mapping was CJP's but it still needs fixing...

                        ah, ok..
                        too bad πŸ˜„

                        [fwiw - i can manually triangulate the sphere using and everything turns out ok.. i guess this script is doing something other than just drawing lines to cut quads in half?]

                        It triangulates the quads and tries to fix the UV mapping - obviously very badly !!!! CJP help! ❗

                        TIG

                        1 Reply Last reply Reply Quote 0
                        • TIGT Online
                          TIG Moderator
                          last edited by

                          See this new script just for selected quad faces - it keeps UV mapping etc...
                          http://forums.sketchucation.com/viewtopic.php?p=201025#p201025

                          TIG

                          1 Reply Last reply Reply Quote 0
                          • thomthomT Offline
                            thomthom
                            last edited by

                            @tig said:

                            Known Issues: Back Materials are kept, but these Texture UVs cannot be re-used;
                            there's a Ruby Console warning message if this problem is found...
                            Solution: use the front faces only for textures IF you might be triangulating later.

                            Why is it that you can't preserve the UVs of the backfaces?

                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                            List of my plugins and link to the CookieWare fund

                            1 Reply Last reply Reply Quote 0
                            • TIGT Online
                              TIG Moderator
                              last edited by

                              We tried [CJP+me] but we couldn't get it to work - any ideas on fixing the whole issue of triangulation and keep UV mapping to front and back faces would be appreciated...

                              TIG

                              1 Reply Last reply Reply Quote 0
                              • thomthomT Offline
                                thomthom
                                last edited by

                                hm... looking at the code:

                                mesh=face.mesh(1)
                                This will give you a PolygonMesh with only the FrontUV.

                                mesh=face.mesh(3) will give you front and back.
                                but you need to change this as well: uvs=mesh.uvs(true) true will give you set of front UVs, false will give you back UVs if you specified that in the .mesh method.

                                I'm not quite sure I understand the purpose of this:
                                outmesh = Geom::PolygonMesh.new faces.each{|f|outmesh.add_polygon(verts[f[0].abs-1],verts[f[1].abs-1],verts[f[2].abs-1])}
                                Why create a new PolygonMesh? Rearranging the polygons?

                                Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                List of my plugins and link to the CookieWare fund

                                1 Reply Last reply Reply Quote 0
                                • TIGT Online
                                  TIG Moderator
                                  last edited by

                                  This was CJP's code...
                                  I've messed on with your ideas but can only get the front OR back UVs to work... how do I get both ? Here's the re-jigged code so far...

                                  def triangulateFace(face)
                                      mesh=face.mesh(3)
                                      verts=mesh.points
                                      ents=Sketchup.active_model.active_entities
                                      mat=face.material
                                      bac=face.back_material
                                      face.erase!
                                      grp=ents.add_group
                                      grp.entities.add_faces_from_mesh(mesh)
                                      grp.entities.each{|e|
                                          if e.class==Sketchup;;Edge
                                              e.smooth=false
                                              e.soft=false           
                                          elsif e.class==Sketchup;;Face
                                            uva=verts.index(e.vertices[0].position)
                                            uvb=verts.index(e.vertices[1].position)
                                            uvc=verts.index(e.vertices[2].position)
                                            if mat
                                              uvsF=mesh.uvs(true)
                                              e.position_material(mat, [verts[uva],uvsF[uva], verts[uvb],uvsF[uvb], verts[uvc],uvsF[uvc]], true)
                                            end#if
                                            if bac
                                              uvsB=mesh.uvs(false)
                                              e.position_material(bac,[verts[uva],uvsB[uva], verts[uvb],uvsB[uvb], verts[uvc],uvsB[uvc]], false)
                                            end#if
                                          end#if
                                      }
                                      grp.explode
                                  end#def
                                  

                                  TIG

                                  1 Reply Last reply Reply Quote 0
                                  • thomthomT Offline
                                    thomthom
                                    last edited by

                                    That bit of code seem to work.

                                    Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                    List of my plugins and link to the CookieWare fund

                                    1 Reply Last reply Reply Quote 0
                                    • TIGT Online
                                      TIG Moderator
                                      last edited by

                                      @thomthom said:

                                      That bit of code seem to work.

                                      It does work for the back_material but it doesn't map the front material's uvs...
                                      Try running it on a face with a hole in it and and materials front and back - both adjusted at angles/shear etc with Texture tool... Both materials are put back onto the now triangulated faces but the front material will be at its default settings...

                                      I can't see how to do it πŸ˜•

                                      TIG

                                      1 Reply Last reply Reply Quote 0
                                      • thomthomT Offline
                                        thomthom
                                        last edited by

                                        Holes and sheared textures seems fine.

                                        But, when I distort them, so the texture doesn't fit to a parallelogram, then it fails.
                                        And that's excatly the conversation I've been having with Whaat a couple of days ago. That in order to sample textures which are distorted you need four points. Which leads to the question of PolygonMeshes: what do you do then, because if you just sample the UV from each point in the polygon you only get tree samples.

                                        I wonder if PolygonMesh.uv_at(u,v) can be used though. The manual is not clear on this method. The description and example don't add up.

                                        Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                        List of my plugins and link to the CookieWare fund

                                        1 Reply Last reply Reply Quote 0
                                        • TIGT Online
                                          TIG Moderator
                                          last edited by

                                          See what you mean - I had a distorted front face that failed...
                                          if you have 4 ubs's how do we check ? πŸ˜•

                                          TIG

                                          1 Reply Last reply Reply Quote 0
                                          • TIGT Online
                                            TIG Moderator
                                            last edited by

                                            I have some thoughts... πŸ’­
                                            The original face's mesh has a number of points - 3 or more.
                                            A texture usually has 3 uvs 'points'.
                                            A distorted texture has 4 uvs 'points'.
                                            How do these uvs 'points' relate to the mesh points ? If you give them the equivalent 'index' then they'll work until index=3...
                                            A face made from the mesh always has 3 points, these relate to the mesh points in sets of 3 - but how do these tie back to the texture uvs 'points' ? The fourth one index=3 fails ???
                                            How do we make an array to place the material that has this fourth pair of a 3D point and a uvs 'point' ? It must reflect the 'extra point' somehow ??

                                            I shall sleep on it and see if the little-grey-cells come up with anything... ➑

                                            TIG

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 3 / 5
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement