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

    [Plugin Update] Ruby Console Pro with SketchTalk in Motion++

    Scheduled Pinned Locked Moved Plugins
    28 Posts 7 Posters 171.1k Views 7 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.
    • M Offline
      MartinRinehart
      last edited by

      New SketchTalk for controlling and animating the camera!

      There are six new methods, each with two forms but they are very regular. (Before you can use this you have to go buy a folding chair with the word "Director" stenciled in very large letters on the back.)

      Now, the things you need to know about the new functions. First, they all start with "c" for camera.

      Second, they continue with "e" for camera eye, "f" for camera field of view or "t" for camera target. Now you know four things: start with "c" and then specify "e" for eye, "f" for field of view or "t" for target.

      The fifth thing you need to know is that they each have an optional third letter "m" for movement. The cem() and ctm() functions move eye and target by a vector from their current location. The cfm() function adds the specified number of degrees to the current field of view. (Higher degrees==zoom out.)

      You set the eye with ce(), just once. From then on use cem(). Similarly, you set the field of view once with cf(). From then on you change it with cfm().

      The sixth, and last, thing you need to know is that they are like the move, scale and rotate methods. You provide a single value if you just want the thing to happen immediately. You append start and stop second specifications if you want it to be animated. (My personal most common mistake: forget to put 'go' in the script and wonder why nothing happens.)

      The first value for ce() is a Geom::Point3d object. That is too much trouble to type, however. Just use a [r,g,b] array. Ditto for ct(). Ditto for the Geom::Vector3d you want for cem() and ctm().

      Here's a sample. Yes, its way over the top, but it's still a sample.

      
      n
      ct [0,0,0]
      
      cf   35
      cfm  35,  2, 14
      cfm -35, 14, 30
      
      ce  [  100,  100,  0]
      cem [    0,    0, 50],  0,  2 #  100,  100
      cem [    0, -100, 0 ],  2,  5 #  100,    0
      cem [    0, -100, 0 ],  5,  8 #  100, -100
      cem [ -100,    0, 0 ],  8, 11 #    0, -100
      cem [ -100,    0, 0 ], 11, 14 # -100, -100
      cem [    0,  100, 0 ], 14, 17 # -100,    0
      cem [    0,  100, 0 ], 17, 20 # -100,  100
      cem [  100,    0, 0 ], 20, 23 #    0,  100
      cem [  100,    0, 0 ], 23, 30 #  100,  100
      
      box o, [20,20,0], 10
      box1 = g 'box1'
      m box1, [20,20,30], 2, 20
      s box1, [0,0,0], 2, 2, 2, 5, 20
      q box1, [0,0,0], 'gb', 360, 5, 20
      m box1, [-20,-20,-30], 20, 30
      s box1, [0,0,0], 0.5, 0.5, 0.5, 20, 32
      none
      
      box o, [-20,-20,0], 10
      box2 = g 'box2'
      m box2, [-20,-20,30], 4, 20
      q box2, [0,0,0], 'rb', 360, 5, 18
      m box2, [40,40,-20], 25, 30
      none
      
      box o, [-20,20,0], 10
      box3 = g 'box3'
      m box3, [-20,20,30], 8, 20
      m box3, [40,-20,-10], 23, 27
      q box3, [0,0,0], 'rb', 360, 20, 23
      none
      
      box o, [20,-20,0], 10
      box4 = g 'box4'
      m box4, [20,-20,30], 12, 20
      m box4, [-20,40,0], 20, 23
      q box4, [0,0,0], 'gb', 360, 20, 25
      
      all
      
      go
      
      

      We start with a 35 degree (default if you haven't changed it) field of view. We zoom out to 70, then back in to 35.

      The eye takes a clockwise tour around the origin in a big square, from 100,100 to -100,-100. If you think this is easy, try it without copying my code.

      Good luck!

      Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

      1 Reply Last reply Reply Quote 0
      • D Offline
        driven
        last edited by

        EDIT: this is what happens when you DON"T swap out the NEW version at top of page, it's all working now

        %(#FF0080)[n # nil
        ct [0,0,0] # #<NoMethodError: undefined method `ct' for Ruby_Console_Pro:Module>

        cf 35 # #<NoMethodError: undefined method cf' for Ruby_Console_Pro:Module> cfm 35, 2, 14 # #<NoMethodError: undefined method cfm' for Ruby_Console_Pro:Module>
        cfm -35, 14, 30 # #<NoMethodError: undefined method `cfm' for Ruby_Console_Pro:Module>

        ce [ 100, 100, 0] # #<NoMethodError: undefined method ce' for Ruby_Console_Pro:Module> cem [ 0, 0, 50], 0, 2 # 100, 100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module>
        cem [ 0, -100, 0 ], 2, 5 # 100, 0 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module> cem [ 0, -100, 0 ], 5, 8 # 100, -100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module>
        cem [ -100, 0, 0 ], 8, 11 # 0, -100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module> cem [ -100, 0, 0 ], 11, 14 # -100, -100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module>
        cem [ 0, 100, 0 ], 14, 17 # -100, 0 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module> cem [ 0, 100, 0 ], 17, 20 # -100, 100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module>
        cem [ 100, 0, 0 ], 20, 23 # 0, 100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module> cem [ 100, 0, 0 ], 23, 30 # 100, 100 # #<NoMethodError: undefined method cem' for Ruby_Console_Pro:Module>]

        I'll look closer later, but for now... yesterday's bit ran, but no new camera moves, do I need to require SketchTalk?

        john

        learn from the mistakes of others, you may not live long enough to make them all yourself...

        1 Reply Last reply Reply Quote 0
        • D Offline
          driven
          last edited by

          Hi Martin,

          I did a quick[ish] hi-poly test 1.5 million edges and it slowed down to 01:27.8 min and was pulling 92-96% on single core of CPU, but ran quite smoothly after the component switch settled down. It certainly looks cool animating grassy blocks...
          a furred replacement hot-swapped at start-up

          I know should do it in code, but it's just quick trick to test hi-poly performance

          john

          learn from the mistakes of others, you may not live long enough to make them all yourself...

          1 Reply Last reply Reply Quote 0
          • M Offline
            mptak
            last edited by

            I so love what you are doing!!!!! How do we get this into the hands of kids so they concurrently learn both their math and animation...Perhaps so they can control undersea vehicles and tophats under the ocean!

            1 Reply Last reply Reply Quote 0
            • M Offline
              MartinRinehart
              last edited by

              @driven said:

              I did a quick[ish] hi-poly test 1.5 million edges and it slowed down to 01:27.8 min

              Take it easy! Your conductor's probably becoming neurotic because he can't get the job done.

              Seriously, its good to find the limits. We could actually model the lawn, showing it grow. Would have to do something more clever than modeling each blade separately.

              @mptak said:

              I so love what you are doing!!!!! How do we get this into the hands of kids ...

              Hmmm. Good thought. First, though, a little controller thingie and we've got a really nice walk-through capability for the architects.

              Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

              1 Reply Last reply Reply Quote 0
              • M Offline
                MartinRinehart
                last edited by

                Video Player now included in very early stage. It pauses and resumes play.

                It seems to argue with the timing software. I'll look into that tomorrow. I think what's needed now is a tutorial for creating walkthroughs.

                Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

                1 Reply Last reply Reply Quote 0
                • D Offline
                  driven
                  last edited by

                  @martinrinehart said:

                  Video Player now included in very early stage. It pauses and resumes play.

                  It seems to argue with the timing software. I'll look into that tomorrow. I think what's needed now is a tutorial for creating walkthroughs.

                  pause and resume work, no < << ; >> > [but you didn't say there was..]

                  the padding 'trick' doesn't work, had to redo as simply padding: 10px

                  great work, keep it coming

                  john

                  learn from the mistakes of others, you may not live long enough to make them all yourself...

                  1 Reply Last reply Reply Quote 0
                  • M Offline
                    MartinRinehart
                    last edited by

                    @driven said:

                    @martinrinehart said:

                    Video Player now included in very early stage. It pauses and resumes play.

                    pause and resume work, no < << ; >> > [but you didn't say there was..]
                    john

                    Start/End should be cake. Back, For'd? Hmmm. Timing tho is more worrisome. Did three tests, none of them using pause/resume: 22, 32 and 40 sec. (All should have been 32.)

                    Does Video Player look OK on Mac? Had to play tricks to get it to look right in MSIE.

                    Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      driven
                      last edited by

                      @martinrinehart said:

                      Did three tests, none of them using pause/resume: 22, 32 and 40 sec. (All should have been 32.)

                      the current, 'select all' file is running at 13.5 sec from pressing play until end without using pause, what are you timing?
                      EDIT: Sometimes, I get 35>37 sec if I re-run 'without' (me) deleting the existing 4 boxes (from a previous run) other times the same thing still runs fast... It is the camera move file, but the non cam version runs at 13.5ish as well

                      @unknownuser said:

                      Does Video Player look OK on Mac? Had to play tricks to get it to look right in MSIE.

                      Where is the WD container generated/sized? I was going to see if I could restrict it to the button block size or add some Mac only features as an experiment, but I can't find where you hid it...

                      bit plain, but adequate

                      learn from the mistakes of others, you may not live long enough to make them all yourself...

                      1 Reply Last reply Reply Quote 0
                      • M Offline
                        MartinRinehart
                        last edited by

                        Timing: 3 tests ranging from 31+ to just under 33 for a 32 second model. (Stupid me: was setting start time at go. Now setting it, correctly, when you click to start.)

                        @driven said:

                        Where is the WD container generated/sized?

                        In the Conductor initialize() method, sketch_talk_motion_classes.rb, line 217. Then position fiddled in video_player.html in the <body> tag. This is what I want:

                        video_player.jpg

                        Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          driven
                          last edited by

                          @martinrinehart said:

                          This is what I want:

                          although this probably isn't what you want, I've been using it to try making a MSIE/Safari controller just using text (no images)

                          I think it looks quite good, but when trying to load from RCPro in PC SU, I kept getting bugsplats, which I put down to me and windows or the ruby,,,

                          however, when I returned to OSX SU and tried to load from RCPro it also crashed...

                          after a restart I loaded it with Ruby Console Editor (which I partly wrote it in) and it works fine.

                          I then went back to PC SU and ran it from Ruby Console...

                          There are other PC issues with the file , but it does load from Ruby Console and not RCPro...

                          might be good for bug testing... if you want to have a look, I'll PM the file...

                          three states in one image, click green to go, red to pausehow do you, add shadows, get rid of scrollbars, contorl the box size, and , and, and.....
                          EDIT: Similar but different, not as nice in IE, now to try PC/SU again....ahhhhh
                          got it similar in IE using same script for both browsers

                          john

                          learn from the mistakes of others, you may not live long enough to make them all yourself...

                          1 Reply Last reply Reply Quote 0
                          • M Offline
                            MartinRinehart
                            last edited by

                            Cool!

                            <body scroll=no> MSIE only and should never be used (unless you are locked into MSIE, as we are).

                            {overflow: hidden;} This is another one you almost never want to use, but, in the case at hand ...

                            Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

                            1 Reply Last reply Reply Quote 0
                            • D Offline
                              driven
                              last edited by

                              dlg.show_modal
                              @martinrinehart said:

                              Cool!

                              <body scroll=no> MSIE only and should never be used (unless you are locked into MSIE, as we are).

                              {overflow: hidden;} This is another one you almost never want to use, but, in the case at hand ...

                              Hi Martin, I finally got it to work, still not functioning, just the WD bit using shadowed/glow fonts, which you can change colours around in code (not done yet), i.e on action, on hover, etc... I'll PM the file...

                              dlg.show()

                              learn from the mistakes of others, you may not live long enough to make them all yourself...

                              1 Reply Last reply Reply Quote 0
                              • M Offline
                                MartinRinehart
                                last edited by

                                UL'd minor bug fix version, 6/14.

                                Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

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

                                  Hello Martin,

                                  This seems to be very interesting but somehow i don't really understand what it is for.
                                  I suppose en environment in which you can easily code animations in Sketchup?

                                  Thx for helping me out here

                                  (btw the airshow is great)

                                  1 Reply Last reply Reply Quote 0
                                  • J Offline
                                    jessejames
                                    last edited by

                                    @martinrinehart said:

                                    Ruby Console Pro

                                    Magnificent Martin! simply Magnificent!

                                    This console is exactly what i have been lamenting about since i first used SketchUp! Had SketchUp included a GUI kit i would of created something like this myself! However i bow to you!

                                    Any who, i had a few questions/suggestions for improvement...

                                    1. Can you combine the input and output windows into one window. Preferably with the output window at the bottom. I have no idea if things like "sizable panes" are available for user customization of the sizes? However even with no customization it would be a nice alternative to have both in one window.

                                    2. I noticed pressing tab does not insert a tab char into the text area, it just does the usual "tabbing" of focus though the widgets. Can this be overridden to insert a tab? I don't care about losing the "tabbing" ability!

                                    PS: oh and i did also have a problem with the buttons being cut off at the top (like a previous poster had mentioned). However I played around with the padding values and was able to rectify it. I am using Vista+SU7+Chrome. So just an FYI.

                                    Thanks again Martin!

                                    Always sleep with a loaded gun under your pillow!

                                    1 Reply Last reply Reply Quote 0
                                    • M Offline
                                      MartinRinehart
                                      last edited by

                                      @jessejames said:

                                      @martinrinehart said:

                                      Ruby Console Pro

                                      1. Can you combine the input and output windows into one window.

                                      2. I noticed pressing tab does not insert a tab char into the text area, it just does the usual "tabbing" of focus though the widgets. Can this be overridden to insert a tab?

                                      Missed this post. Sorry.

                                      1. Yes, but don't want to. Arrange them how you like. They come up as you left them, next time.

                                      2. Textareas are lame. Wish we had better. Many times I've enthusiastically started on a serious editor/ide, only to run into some insurmountable textarea roadblock.

                                      Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

                                      1 Reply Last reply Reply Quote 0
                                      • M Offline
                                        MartinRinehart
                                        last edited by

                                        @unknownuser said:

                                        For the still-ruby-challenged,...

                                        Start with Chapter 11 and continue through Chapter 17. You'll become Ruby-literate. It's not hard.

                                        @unknownuser said:

                                        1. what about using q to do rotations in an arbitrary direction not defined by the planes?

                                        All my rotate stuff allows you to specify a plane ('rg', 'rb' or 'gb') or an axis. See my Leaning Tower of Pisa in the doc.

                                        @unknownuser said:

                                        1. I've got an existing model with several groups that need to move around in a related, but not quite identical, way.

                                        That's where ruby literacy has to come in. Alternatively, some brilliant insight that shows me how to create a generic solution to things that move in a related but non-identical way. Brilliant insights are always welcome.

                                        Martin

                                        Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

                                        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