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

    MSPhysics tests and questions

    Scheduled Pinned Locked Moved Plugins
    104 Posts 21 Posters 44.7k 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.
    • F Offline
      faust07
      last edited by

      Hi Robint
      Put this script into your baseplate (copy the 3 lines, select the plate, open MSP UI, select "Script", paste the lines into the Script window, run MSP):

      onTouch { |toucher, position, normal|
      MSPhysics::Simulation.reset
      }

      and the simulation stops "onTouch".

      1 Reply Last reply Reply Quote 0
      • robintR Offline
        robint
        last edited by

        @faust07 said:

        Hi Robint
        Put this script into your baseplate (copy the 3 lines, select the plate, open MSP UI, select "Script", paste the lines into the Script window, run MSP):

        onTouch { |toucher, position, normal|
        MSPhysics::Simulation.reset
        }

        and the simulation stops "onTouch".

        Hi Faust, thanx for the tip, but not quite there yeet

        the simulation resets and I lose all the time/frame data at the bottom of screen - which is what I need for this to be useful.

        I tried .pause and .stop but they dont exist

        Is there something else I could try?

        As one door closes another one slams in your face

        1 Reply Last reply Reply Quote 0
        • robintR Offline
          robint
          last edited by

          Hi Faust

          Through the Ruby Code editor, I found a start_timer and stop_timer function

          Would this help?

          Say put start at the top to activate when staring sim,

          then stop_timer after the reset action line

          then display timer?

          sorry my newbie attempts at script (do you hav any recommendations on the best way to learn script for MSP - there's so much flack out there its hard to know where to start)

          Cheers

          Robin

          As one door closes another one slams in your face

          1 Reply Last reply Reply Quote 0
          • F Offline
            faust07
            last edited by

            Hi Robin,
            have tested to find a solution to pause simulation per script, but have nothing found until now.
            I'm a script newbie too. For my purposes I look into scripts of models from the experts at 3D-Warehouse (AntonS & PituPhysics) or ask them in Anton's main MSP post.

            1 Reply Last reply Reply Quote 0
            • robintR Offline
              robint
              last edited by

              Well we are both struggling, blind leading the blind

              FYI this timer thing is fundamental to simulating physical systems (mass speed acceleration)

              The on touch is a good start, just need to time the sequence and display result on reset

              opens up a whole new way of simulating mechanical systems

              as fundamental say as a thermometer is to tell you the temperature - if you see my point

              so I must perservere. If I get a result I will post it you

              Cheers

              Robin

              As one door closes another one slams in your face

              1 Reply Last reply Reply Quote 0
              • robintR Offline
                robint
                last edited by

                A bing moment has occured β˜€

                when I # out the reset line, I just had a ontouch line only and it outputs to screen what might be some sort of final velocity m/s on impact (according to the script info)

                pls see model

                Now I cant yet correlate that to the calc velocity which should be 14m/s on impact from 10m
                it comes out at 58 and varies with the UI sim setting of Newton update rate (currently 10)

                also from dropping from 5m gives 33 (should be 9.9m/s and is 1/sqr2 - .707) whereas 33/58 is ca.57

                maybe some dynamic friction in play?

                Is this a worthwhile line of enquiry?

                Cheers

                Robin

                ps the ball is in anton's examples funny little thing - and something for gamers pool table maybe?


                falling block.skp

                As one door closes another one slams in your face

                1 Reply Last reply Reply Quote 0
                • A Offline
                  Anton_S
                  last edited by

                  Yes, the final velocity should be 14 m/s, and it is 14 m/s.

                  Your script in the model you posted, just outputs the frame:

                  onTouch { |toucher, position, normal, force, speed|
                    simulation.log_line("onTouch #{frame}")
                  }
                  

                  That explains why you get unrelated results.

                  To output the final velocity, you should change the code to output the speed:

                  onTouch { |toucher, position, normal, force, speed|
                    simulation.log_line("onTouch #{speed}")
                  }
                  

                  And besides, setting the linear damping of the falling box to zero will make the final velocity even more right because this will eliminate the dissipative force.

                  1 Reply Last reply Reply Quote 0
                  • robintR Offline
                    robint
                    last edited by

                    Thank you so much Anton, I was just about to post an apology for a stoopid boy Pike moment (no smilie for Duh 😳 )

                    but I read the second line and it outputs frame to screen, what a numpty

                    You gave me some other scrip that outputs velocity, strange to note that the cube reaches a terminal velocity ca 2m/s ca halfway down - intriguing. Is there something in there that simulates viscosity?

                    onUpdate {

                    Get current velocity

                    cv = this.get_velocity

                    Output it in the note

                    note = sprintf("Velocity: (%.3f, %.3f, %.3f)", cv.x, cv.y, cv.z)
                    simulation.display_note(note)
                    }

                    Cheers

                    Robin

                    As one door closes another one slams in your face

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      Anton_S
                      last edited by

                      Yes, the viscosity is simulated by the linear damping. To remove the linear damping, select the desired group, open MSPhysics UI, activate the Properties tab, and set Linear Damping to 0.00. This should alter the height of terminal velocity.

                      If you meant something else, like water or buoyancy, you can add a buoyancy plane by navigating to (Menu)Extensions->MSPhysics->Create Buoyancy Plane. Although the liquid is not simulated. It's just the buoyancy force that is applied.

                      1 Reply Last reply Reply Quote 0
                      • robintR Offline
                        robint
                        last edited by

                        Hi Anton

                        Just when I thought you cracked it with speed, something strange happens

                        When dropping the block from 10m = ok = 14m/s as per calc (see model)

                        Move the block down to 5m => nonesense answer like 0.07... (should be 9.9m/s)

                        Yet move block to other elevations like 8.5m or 2.5m , seems to work ok (but I haven't checked the result against calcs (12.9, 7)

                        So I am completely stumped πŸ˜’

                        BTW sometimes the block appears to penetrate the baseplate and slowly return to zero, could this be the reason?

                        Thats ruined my day

                        Cheers

                        Robin


                        falling block2.skp

                        As one door closes another one slams in your face

                        1 Reply Last reply Reply Quote 0
                        • robintR Offline
                          robint
                          last edited by

                          Maybe uncovered a nasty bug? Anton

                          Here's a suggestion from your speed indicator

                          onUpdate {

                          Get current velocity

                          cv = this.get_velocity

                          Output it in the note

                          note = sprintf("Velocity: (%.3f)", cv.z)
                          simulation.display_note(note)
                          }

                          When it runs, on collision it displays 0.00 as expected, the block has stopped but we lost the terminal velocity

                          Could we say put an IF loop in the output velocity to note, only iff velocity <say .5m/s, then it should go to zero when the block stops (assuming no bounce)

                          Just a thought, maybe a simpler approach? from a ruby newby

                          Cheers

                          Robin

                          As one door closes another one slams in your face

                          1 Reply Last reply Reply Quote 0
                          • robintR Offline
                            robint
                            last edited by

                            Sorry, Im getting tired

                            I meant it should retain the highest last value in note when the block stops

                            Apologies

                            Robin

                            As one door closes another one slams in your face

                            1 Reply Last reply Reply Quote 0
                            • A Offline
                              Anton_S
                              last edited by

                              It's all cool πŸ˜„

                              Here is the code for viewing maximum velocity.

                              onStart {
                                @max_vz = 0
                              }
                              
                              onUpdate {
                                v = this.get_velocity
                                if v.z.abs > @max_vz
                                  @max_vz = v.z.abs
                                  simulation.display_note(sprintf("Max Speed %.3f m/s", @max_vz))
                                end
                              }
                              

                              And yes, the speed indicator in onTouch may not always work right, which is the problem of the physics engine that my wrapper is using.

                              1 Reply Last reply Reply Quote 0
                              • robintR Offline
                                robint
                                last edited by

                                Hi Anton

                                Installed your script, works a treat and pretty accurate 😎

                                However I have meddled and got stuck, I cant find a way to print another result on a new line, tried everything, puts, print (can't find sprintf in docs either)

                                As you see I want to print elapsed time as well and it works but overwrite the Max Speed result on the same line

                                I feel really dumb getting stuck on this trivial matter, pls help 😒

                                BTW would I be right in saying that MSP script is a subset of official Ruby 2.0 and some elements like puts and print (they dont do anything on screen or riase an error)are left out?

                                Cheers

                                Robin


                                falling block3.skp

                                As one door closes another one slams in your face

                                1 Reply Last reply Reply Quote 0
                                • A Offline
                                  Anton_S
                                  last edited by

                                  Here:

                                  onStart {
                                    @max_vz = 0
                                  }
                                  
                                  onUpdate {
                                    v = this.get_velocity
                                    if v.z.abs > @max_vz
                                      @max_vz = v.z.abs
                                      simulation.display_note(sprintf("Max Speed %.3f m/s\nElapsed Time; %.2f s", @max_vz, world.time))
                                    end
                                  }
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • robintR Offline
                                    robint
                                    last edited by

                                    Anton, ooh that is nice

                                    from little acorns, great oaks grow

                                    So now we have a timer as well

                                    Maybe add

                                    add the x.y.z distance travelled

                                    and then I can perhaps simulate a cannon firing a cannon ball at a target

                                    and with a bit of wind and air friction, elementary gunnery for the Napoleonic War

                                    I will of course present my models to you for the consideration of others in the interest of MSP

                                    Cheers, many thanks
                                    Robin


                                    falling block4.skp

                                    As one door closes another one slams in your face

                                    1 Reply Last reply Reply Quote 0
                                    • robintR Offline
                                      robint
                                      last edited by

                                      Hi Anton

                                      Just seen your Turret thingy, blown away by it
                                      30 pages of code - I might as well try and become a brain surgeon!

                                      Link Preview Image
                                      3D Warehouse

                                      3D Warehouse is a website of searchable, pre-made 3D models that works seamlessly with SketchUp.

                                      favicon

                                      (3dwarehouse.sketchup.com)

                                      Very skilful

                                      Robin

                                      As one door closes another one slams in your face

                                      1 Reply Last reply Reply Quote 0
                                      • gillesG Offline
                                        gilles
                                        last edited by

                                        Just playing with basics,
                                        Screw-MSP.gif
                                        brought me to some questions:

                                        When you at the screws,
                                        -one is static mesh and is collision shape fits perfectly.

                                        • to achieve the same collision shape for the mobil oneI had to it with several components.

                                        Any reason the soft isn't able to calculate the same collision shape but not static?

                                        To make those movements running well I used a workaround.

                                        For rotation we have hinge, motor, servo.
                                        For translation we have slider, piston, why not a linear motor?
                                        For translation + rotation we have corkscrew, why not motor + linear motor , servo + piston, servo + linear motor , linear motor + piston?
                                        For curve we have curvy slider and curvy piston, why not a curvy motor and curvy piston?

                                        Nota bene: just curiosity here, no request.


                                        Vis MSPhysic.skp

                                        " c'est curieux chez les marins ce besoin de faire des phrases "

                                        1 Reply Last reply Reply Quote 0
                                        • robintR Offline
                                          robint
                                          last edited by

                                          At last

                                          Terminal velocity
                                          Time
                                          Distance

                                          Now the basis of my cannon project

                                          Anton has made a sophisticated urret thingy available on 3D warehouse/msphysics

                                          but I want to make a simpler model for a gunner with inputs for
                                          horiz angle
                                          Azimuth
                                          muzzle velocity
                                          Range (from a range finder measurement of a distant target placed at random)
                                          Air density (from Bar pres, RH and temp)
                                          Air friction ?

                                          output > distance landed from target (eg a forward spotter)

                                          Simplistic stuff for a Napoleonic gunnery officer

                                          Maybe a moving target next (eg tank)

                                          On the 7th day god made Robin


                                          falling block6.skp

                                          As one door closes another one slams in your face

                                          1 Reply Last reply Reply Quote 0
                                          • F Offline
                                            faust07
                                            last edited by

                                            Hi Anton, after extensive tests with the fairly complex ice stage model, I can report that everything works very well.
                                            I just had to reverse some curves and exchange the programmed Curvy Piston Joint for the Orca. The calculation of the transformed emitter objects seems to work more precisely.
                                            This costs a little more time for the simulation, but the viewport problems no longer occur.
                                            That's great! Thank you very much!
                                            I have extended the simulation around a rain with middle large hailstones and it works.
                                            And for the future the integration of the good old SketchyPhysics fracture/split function and a kind of soft or flexible surfaces would be great...
                                            πŸ‘


                                            NewYear-Test_07.gif


                                            frame_000196.jpg

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

                                            Advertisement