sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Projected Texture (and Google Earth)

    Scheduled Pinned Locked Moved Developers' Forum
    13 Posts 3 Posters 1.1k Views 3 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.
    • S Offline
      skavan
      last edited by

      Gaieus,

      Thanks for the comments. As you'll see from the code, I'm not re-creating the useless steps in the video - however simply loading an image DOES NOT work as the aspect ratio gets reset. Therefore, positioning and sizingthe map IS required. Hence the code. As for the terrain bit (where I'm stuck), yes - it can be done manually-but since I want to repeat this exercise 50+ times (I'm cutting a range of terrain from GE).

      So - how can one do your steps 3 and 4 programattically? I can't figure it out for the life of me!

      s.

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

        Reload a texture via Ruby?

        Before you replace the old texture - read and store the width and height of it.
        Then when you have loaded the new one - apply the width and height.

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

        1 Reply Last reply Reply Quote 0
        • S Offline
          skavan
          last edited by

          thomthom,

          ok - I'm sure I'm being very dense...but a couple of points/questions:

          1. How does one set the width and height of the texture in code? One can read texture.height and texture.width but not set them..and one only gets to SET texture.size....but that assumes the aspect ratio is the same as before. In this example, it's not...so the question is how does one set the width and height independently --- isn't it in the apply material position function?

          2. by way of explanation, google earth in injects the terrain with a 1" square texture size that is then stretched as needed EVEN though the image is say, 1600x1200. As soon as one reloads/loads an image, this aspect is changed to match the incming image and the "ASPECT LOCK" is lost. So when one reapplies the texture.size =1", what happens is width becomes 1" and height becomes 5/8" to maintain aspect ratio. Manually, it's easy - click OFF the aspect lock button in the texture window and enter the 1" value in the width...but how to do that in code?

          Thanks,

          s.

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

            Ah, yes: welcome to the SU API Manual - Don't trust it!

            Texture.size=
            http://code.google.com/apis/sketchup/docs/ourdoc/texture.html#size=

            Arguments:

            • Number size
            • Array(width, height) <- πŸ˜‰

            Example: Texture.size=[20,40]

            We got a looooong thread going with reports of missing and incorrect info in the manual: http://forums.sketchucation.com/viewtopic.php?f=180&t=17047

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

            1 Reply Last reply Reply Quote 0
            • S Offline
              skavan
              last edited by

              awesome! thanks so much -- you have no idea how many hours I spent - bloody manual!

              Anyway - one more, last part of the puzzle.

              Loading the image and then setting a new mat.texture.size = [1,1] works fine.
              The only thing is that the image isn't really a square aspect ratio and its applied size isn't really 1" x 1". It's actually a 4800x3600 image and an applied size of 4913' 5 1/4" and 3137' 8 1/2"!!! While the above 1x1 at aspect of 1 works...do you have any tips for how I then adjust the image so that its physically "right" even though its already visually "right"!

              Thanks.

              s.

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

                Not sure if I understand. You say it's visually right - it looks correct in SU? Then what is physically right?

                There's two things that affects how a material is applied to a face.

                The default size if the info in material.texture
                But if the user has positioned the material on the face, or you have used face.position_texture, then that also affects it.

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

                1 Reply Last reply Reply Quote 0
                • S Offline
                  skavan
                  last edited by

                  "visually right" = it looks good in sketchup..the texture is applied as it should be.

                  "physically wrong" = the size of the terrain is 4090' x 3250'. the texture size is 1"x1". The texture size has the wrong size and aspect ratio...but somehow sketchup knows how to transform this. Maybe I shouldn't worry about it since it's "visually right" - but it would be great for the physics to match the visual.

                  Best way of seeing this, if you have google earth, is to fire it up. click the Getr Current View in Sketchup and see the texture properties of the material that represents the ground terrain. it will say 1"x1", even though it's really not!

                  I'm guessing the trick is to use face.position_material -- and someshow pass in xyz and uv pairs -- but containing what is beyond me.

                  s.
                  Thanks again.

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

                    Since GE places the original texture there in 1" x 1" and you want to replace it with a different colour version, then it's best to just leave it like that. It works.
                    It's visually correct because it has been Positioned like that, which override the default Texture size. But if you afterwards meddle with the Texture size you will affect the positioned material.

                    But if you where creating a material from scratch, then you'd just calculate the aspect ratio of the texture's pixel size and use that for texture.size=

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

                    1 Reply Last reply Reply Quote 0
                    • GaieusG Offline
                      Gaieus
                      last edited by

                      Guys, I really don1t know coding - but totally without any texture positioning, I could simply reload the image in this file in less than a minute.
                      Now how you translate it into ruby code - is totally out of my knowledge


                      MyPlace.skp

                      Gai...

                      1 Reply Last reply Reply Quote 0
                      • S Offline
                        skavan
                        last edited by

                        Gaieus --

                        are you sure it reloaded with EXACTLY the same positioning. If so, it's a fluke.
                        IF you pull the terrain from Google Earth, take a color snapshot from google earth and load the color image into the texture...the texture size (tiling is wrong) as it shifts from a 1:1 to the aspect ration of the incoming image.

                        It only takes a few seconds, but one MUST reset the texture size.

                        If you are doing this for 50 pieces of a large terrain loaded from GE, tile by tile, then ruby saves a LOT of effort.

                        s,

                        1 Reply Last reply Reply Quote 0
                        • GaieusG Offline
                          Gaieus
                          last edited by

                          Well, I did indeed play around quite a lot to see what's happening when I am doing this. My approach was to reload the image and then go to top view and toggle undo/redo to see the difference between the B&W and the colour version.
                          To be honest, I didn1t see any difference so I basically trust the method - true that when I go quite close in my area, the imagery is not the best as well as in those rare cases when I use this technique (to paint some small scale, artificial terrain for GE), any subtle difference would be rather unnoticeable.

                          Gai...

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

                          Advertisement