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

    [REQ] Displacement ruby

    Scheduled Pinned Locked Moved Plugins
    32 Posts 14 Posters 4.6k Views 14 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.
    • I Offline
      ilay7k
      last edited by

      Dale, Highfield-map generator?
      maybe through ogl libs

      1 Reply Last reply Reply Quote 0
      • soloS Offline
        solo
        last edited by

        Ilay7k, for landscapes and terrains it would be an SU killer for sure, but for other purposes like if you remember Silvershadows method of doing a cobble stone sidewalk, this would be a snap.
        It can also be used for product modeling where only one or two surfaces needs a physical relief.

        How about this use?


        http://img413.imageshack.us/img413/5622/planeju8.jpg

        http://www.solos-art.com

        If you see a toilet in your dreams do not use it.

        1 Reply Last reply Reply Quote 0
        • soloS Offline
          solo
          last edited by

          As mentioned above, cobblestones or such mesh could be achieved using a simple bump image and if you have a seamles image like below then a small or low poly mesh can be generated which can be made into a component and tiled to form a cobble road as below without killing the model.

          The image:

          http://img214.imageshack.us/img214/6815/cobblebumpzg3.jpg

          The resulting mesh:

          http://img228.imageshack.us/img228/7590/cobbl1qpc3.jpg

          The mesh made into a component and tiled:

          http://img214.imageshack.us/img214/1857/cobbledisplacementkq5.jpg

          http://www.solos-art.com

          If you see a toilet in your dreams do not use it.

          1 Reply Last reply Reply Quote 0
          • P Offline
            princedragoncok
            last edited by

            Your examples are highly convincing solo. I'm all support for a displacement ruby. It seems you already have it however.. how did you create those models?

            1 Reply Last reply Reply Quote 0
            • soloS Offline
              solo
              last edited by

              I used a third party app, Vue 6 xstream and used the displacement feature, then baked it to polygons and exported it as .3ds.
              The workflow is a little tedious and was hoping that if we could apply a texture to a given surface then select the surface and have an option to 'turn to mesh' which would then through the miracle coding of someone like Whaat become a 3d mesh with an option to reduce the polys if neccesary (already a ruby)

              Just thoughts .... dreams.

              Another example.


              http://img296.imageshack.us/img296/6533/weavean9.jpg

              http://www.solos-art.com

              If you see a toilet in your dreams do not use it.

              1 Reply Last reply Reply Quote 0
              • tbdT Offline
                tbd
                last edited by

                @unknownuser said:

                getting the pixel (RGB) value from the texture at a given point. If anyone knows how do this, let me know.

                some ideas:

                1. convert texture to .raw and read it via ruby file commands (as I did it in 2004 Terolscript)

                2. direct image parsing - too complicated (several formats, compression)

                3. server based - image upload to server, converted to an Array and returned back to Ruby

                SketchUp Ruby Consultant | Podium 1.x developer
                http://plugins.ro

                1 Reply Last reply Reply Quote 0
                • plot-parisP Offline
                  plot-paris
                  last edited by

                  solo, let me tell you, that your illustrations are impressive. it makes perfectly clear, what you want to achieve with that script and what the benefits are.

                  I would love to have such a ruby.
                  like you said:

                  @solo said:

                  ...but for other purposes like if you remember Silvershadows method of doing a cobble stone sidewalk, this would be a snap.

                  this would really help to push realism of SketchUp models much further (towards "Silvershadow-realism"... 😄 )

                  1 Reply Last reply Reply Quote 0
                  • jujuJ Offline
                    juju
                    last edited by

                    OMG, I would SO pay for this, so long as it is not server based.

                    Save the Earth, it's the only planet with chocolate.

                    1 Reply Last reply Reply Quote 0
                    • K Offline
                      kwistenbiebel
                      last edited by

                      It's a nice idea.
                      However, I think current Sketchup will have difficulties with the polycount.

                      I rather see some advanced uv-mapping tools to get displacement maps on complexer surfaces so we can render displacement with the photoreal render engine of choice.

                      But I can understand a displacement2mesh plugin could be useful to people that want to see the displacement in their default Sketchup output.

                      1 Reply Last reply Reply Quote 0
                      • bigstickB Offline
                        bigstick
                        last edited by

                        What about Didier's heightfield generator script here:- http://www.crai.archi.fr/RubyLibraryDepot/Ruby/em_geo_page.htm
                        The documentation is here:- http://www.crai.archi.fr/RubyLibraryDepot/Ruby/Heightfield_gen.pdf

                        I tried it because I wanted to generate a rippled water plane, but couldn't get it to work at all. As they say however, "your mileage may vary".

                        1 Reply Last reply Reply Quote 0
                        • K Offline
                          kwistenbiebel
                          last edited by

                          I didn't know there was a ruby script like that.Thank you for the link Bigstick.

                          I just tried using Didiers script (heightfield.rb), but it doesn't do anything at all in my case.
                          I converted a greyscaled displacement .jpg texture to a Ascii .pgm pixel image in Xnview (as suggested in the tutorial) and tried to load it through the ruby. Maybe I am doing something wrong, but I couldn't get it to generate geometry out of it.

                          As the ruby was created in 2004, maybe it isn't adapted to sketchup 6?

                          1 Reply Last reply Reply Quote 0
                          • I Offline
                            ilay7k
                            last edited by

                            Didier, thank you
                            i have such problem with loading pgm(in skp 5):
                            i attach images

                            Format; P2 (PGM) Width; 828 x Height; 177 Greyscale; 256 levels.
                            Number of points; 16
                            Empty mesh initialized.
                            Mesh altitude range; 100.0
                            Patch Length X; 0.0476058993229746
                            Patch Width Y; 0.223693629205114
                            Altitude Step Z; 0.392156862745098
                            Create group; Yes
                            Destination layer; Layer0
                            Error; #<NoMethodError; undefined method `*' for nil;NilClass>
                            (eval);196;in `hf_create_points'
                            (eval);193;in `upto'
                            (eval);193;in `hf_create_points'
                            (eval);181;in `upto'
                            (eval);181;in `hf_create_points'
                            (eval);28;in `hf_gen'
                            (eval);324
                            (eval);324;in `call'
                            

                            anybodies know any kind console convertor bmp2ansipgm or raw?
                            add: i use total commander addition - image lister by ivory


                            contains test.PGM and test.bmp

                            1 Reply Last reply Reply Quote 0
                            • soloS Offline
                              solo
                              last edited by

                              Irfanview can do it, and it's a free app.

                              Link Preview Image
                              IrfanView - Official Homepage - One of the Most Popular Viewers Worldwide

                              IrfanView ... one of the most popular viewers worldwide.

                              favicon

                              (www.irfanview.com)

                              http://www.solos-art.com

                              If you see a toilet in your dreams do not use it.

                              1 Reply Last reply Reply Quote 0
                              • Didier BurD Offline
                                Didier Bur
                                last edited by

                                Hi,

                                @unknownuser said:

                                maybe it isn't adapted to sketchup 6?

                                it is not, you are right. But it could be (one line of code to change...)
                                I'm testing it right now. But it is sooooo sloooow !
                                This kind of feature requests a C++ prog IMHO.100x100 pixels -> 19600 faces, execution time: 2mn (!)

                                DB

                                1 Reply Last reply Reply Quote 0
                                • Didier BurD Offline
                                  Didier Bur
                                  last edited by

                                  Hi Ilayk,
                                  The error comes from that the options providers have changed from SU5 to SU6.
                                  If you decrypted the script, go to line 110:
                                  u = opt[3][2]
                                  and change it to:
                                  u = opt[0][2]

                                  That's all, it will work after that,

                                  DB

                                  1 Reply Last reply Reply Quote 0
                                  • I Offline
                                    ilay7k
                                    last edited by

                                    strange
                                    it's same(can't normally get size of mesh...)

                                    Format; P2 (PGM) Width; 1680 x Height; 1509 Greyscale; 256 levels.
                                    Number of points; 16
                                    Empty mesh initialized.
                                    Mesh altitude range; 100.0
                                    Patch Length X; 23.4485281358547
                                    Patch Width Y; 26.1074792706233
                                    Altitude Step Z; 0.392156862745098
                                    Create group; Yes
                                    Destination layer; Layer0
                                    Error; #<NoMethodError; undefined method `*' for nil;NilClass>
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;196;in `hf_create_points'
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;193;in `upto'
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;193;in `hf_create_points'
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;181;in `upto'
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;181;in `hf_create_points'
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;28;in `hf_gen'
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;324
                                    D;/Program Files/gsu6/Plugins/heightfield_gen.rb;324;in `call'
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • Didier BurD Offline
                                      Didier Bur
                                      last edited by

                                      Ok I forgot this one, line 190:

                                      def hf_create_points
                                      opt = Sketchup.active_model.options
                                      # u = opt[3][2] Version 5
                                      u = opt[0][2] # Version 6
                                      ...
                                      

                                      😳

                                      DB

                                      1 Reply Last reply Reply Quote 0
                                      • I Offline
                                        ilay7k
                                        last edited by

                                        again >>Empty mesh initialized. / when i load pgm
                                        and errors in opened console(same)
                                        i attach latest images
                                        i modify as you wrote/but it doesn't work


                                        Imagename1.rar

                                        1 Reply Last reply Reply Quote 0
                                        • K Offline
                                          kwistenbiebel
                                          last edited by

                                          Just checking to see if maybe the heightfield ruby got fixed so it works with SU6 now.
                                          I saw some pieces of code in this thread.
                                          Are we supposed to put those lines in the existing ruby file? ...and will it work?

                                          1 Reply Last reply Reply Quote 0
                                          • bigstickB Offline
                                            bigstick
                                            last edited by

                                            Didier, I'm happy to try to modify this script, but first I need to know how to decrypt it.
                                            Could you possibly give me some more information and I'll try it.

                                            Pity TBD is somewhat occupied just now, else I'm sure he would look at it 😉

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

                                            Advertisement