MSPhysics 1.0.3 (16 October 2017)
-
I'm hoping for advice on how to improve a model that attempts to simulate a thin flat flexible cable that is coiled or wrapped within a hollow rotating drum. Despite hours and hours of experiments, I cannot avoid SketchUp crashing (bugsplat) after about 2 to 2.5 rotations of the drum. I'm using MSphysics 1.0.2 with SketchUp Pro 2017.3.
[Update on Wednesday morning: As an experiment I changed the collision shape of the cable strips (see below) from compound to box, and that often avoids the crash. Sometimes the simulation even lives long enough to run 7 rotations clockwise and then 7 rotations counter-clockwise. Gravity can be enabled at about 1/300 time steps and higher, even.]
Here is a copy of the model file:
Viking Lander for SSAA FCC Animation Bare.skpAnd an image of the general arrangement:
The model is scaled up 10x from some actual hardware I am trying to simulate (scaled in the hope of avoiding numerical issues in the simulation caused by the very thin cable). The cable (in the model) is about 30 inches wide and 0.1 inch thick. I have modeled the cable as a series of about 250 thin strips hinged to one another. One end of the cable is anchored to a hinge on a stationary hub (set to be static, tinted green in the above image) at the center of the drum. The other end of the cable is anchored to a hinge that is on the wall of the hollow gray drum. In its initial configuration the cable wraps three times around the stationary hub. The goal is to drive a motor to rotate the drum clockwise six or so full rotations. The flexible cable is intended to gradually unwrap from around the stationary hub, accumulate loosely around the inner face of the drum after three or so rotations, and then re-wrap about three times around the stationary hub in the opposite direction from the initial conditions. There is one motor controller - click it to the left (-1) to rotate the drum in the clockwise direction.
I am not very fussy about the hinge joints between the individual cable segments; the goal is to represent a lightweight cable that can flex a fair amount, with a mild tendency to straighten. I have tried friction and both types of spring hinges, with all sorts of parameter settings. Some hinge types make the model explode (which is comical to watch). Others seem to more-or-less behave OK except the cable is not as flexible as I would like. And of course the crash of the software; I'm not sure what aspect of the physics simulation is causing that - hinges or collisions or what. I have disabled gravity and friction for all active bodies. I have tried various settings of continuous-collision and Update-Timestep; the simulation usually survives longer (in simulated time) with higher time steps (e.g., 1/240, 1/480 etc.).
Both the cylindrical stationary hub and the hollow drum are modeled as a set of solid groups or components, with the individual pieces being convex. (The stationary hub's segments have some concavity due to two small raised flanges. I'm not sure if this is causing trouble. I used MSphysics feature to show collision wireframes, and what is rendered looks OK to me. I could delete those flanges.) There are also three thin curvy bend-guards to prevent the flexible cable from being bent too tightly at either end. Those guards are also modeled as a set of convex elements.
As a plus I would also like to eliminate the narrow visual gaps between adjacent cable strips (which seemed necessary to avoid corners of adjacent strips colliding and thus preventing joint bends). However, the main goal is to avoid the software from crashing as the simulation executes.
-
Hello TDahl,
First of all, very professional work here, in a sence of understanding how to use the plugin despite the lack of documentation on it. Great job!
I'm not sure what is causing the crash. I think that the physics engine has a limit on how much joints it can control at once. I will look into this bugsplat issue when I find the time.
Meanwhile, there are a couple of things you can do to improve behavior of cable and performance:
- Because you are relying on a small timestep (1/300), reducing solver model, to 4 iterations for example, would improve the performance by a good factor. Solver model basically controls the stability of joints. If your timestep is small, reducing solver model would alter the stability joints by an unnoticeable factor.
- Specificating the collision shape of "FCC Segment Instance" to Box should improve the performance as well. I assume you already did that for your the edited model, but in case you haven't, here is an easy way to do it for all of them: Because all your cable segments have the same name, you can assign a box shape to one of the segments and use the Assign Props to All with Name button, within the MSPhysics UI, to assign alike properties to all instances with the same name.
- Because all joints are flexible, you can simply rely on a Fixed joint, rather than Hinge. This would make the entire cable more stiff and of course improve performance.
I eddied your model, containing all the addressed suggestions and attached it below.
Also, if you change a joint within one of the wire segments, which also adds it to all other component instances, you can re-interconnect the segments with their joint by pasting this command into Ruby Console:
id = 646194 # Change this to desired joint ID. instance_name = 'FCC Segment Instance' # Change this to instance name ids = [id] Sketchup.active_model.start_operation('OP', true, false, false) Sketchup.active_model.entities.each { |e| if (e.is_a?(;;Sketchup;;ComponentInstance) || e.is_a?(Sketchup;;Group)) && e.name == instance_name e.set_attribute('MSPhysics Body', 'Connected Joints', ids) end } Sketchup.active_model.commit_operation
That's the code I used to interconnect the Fixed joints with their segments.
Once again, great work, TDahl!
Best regards,
Anton
-
Hi Anton, thank you for the compliment. Your extension and its physics engine are fantastic and (sometimes) maddening. One area I really do not understand is how the extension works for connecting joints. In some situations it behaves fine: I click on a joint which turns blue, I shift-click on a body which turns green, done. Repeat the same click and shift-click sequence on another joint and another body, done. That's great.
But other times, joints seem to auto-connect to surprising bodies, or change their connections when I attempt to re-connect different joints. I recall in older versions of the plugin there was some kind of connect-closest-joint feature which I cannot now locate in the GUI. I wonder if there is some remnant of that which activates under certain circumstances? Perhaps joint connections are troublesome when there are many joints and bodies in close proximity (which I am doing lately)? Here is a screen capture with a body selected, showing that dozens of joints have become connected to it:
The kind of maddening behavior I'm experiencing tonight is: I click a joint (turns blue), I shift-click a body (turns green). OK. Do that two or three times with nearby joint-body combinations. OK. Then as a sanity-check return to the first combination: click on the first joint, and automagically it is now connected to some other body or bodies, not the one I had set a few moments earlier.I must not understand how to operate the connect-joint GUI. I'm on a Mac with OS 10.12.6. When the joint connection tool is activated, the hint along the bottom of the SketchUp workspace window says to use CTRL, SHIFT, or both to connect/disconnect. The CTRL modifier causes a pop-up menu to appear with two choices, Disconnect all joints, and Exit. Is that expected? The SHIFT modifier does not always allow me to select the desired object, which I don't understand. In the following screen capture I cannot select the body which has a dashed-magenta outline:
In case it's hard to see, the dashed-magenta body is just below the green-outline body. I am trying to disconnect the selected (blue) joint from the green-outline body and connect it to the dashed-magenta outline body. Shift-clicking on the dashed-magenta body simply causes the dashed-magenta outline to appear and disappear, with each shift-click. The green-outline body remains green.Shift-clicking on the green body yields confusing results which would take a page to describe, so I will stop here for now. I really hope to understand how I can be in 100% total manual control of how joints and bodies connect. There must be some limitations in what can connect to what that are not apparent in the GUI. I realize that the dashed-magenta outlines represent potentially-connectable objects. Why are only some objects potentially connected, and not others? (Even for a set of objects that are all at top-level in the model hierarchy.)
By the way, thanks for the tip about using a fixed joint rather than a hinge. However, the fixed joint has behaviors that make me prefer the hinge joint for this application. The fixed joint results in a much floppier flexible simulated cable (at least on my computer) compared to a hinge/angular-spring), and I prefer the somewhat stiffer behavior with the hinge. Also, if the simulation lives long enough for 3 to 5 rotations with the fixed joint the cable strips eventually begin to tilt and oscillate sideways and eventually explode the model (which looks pretty cool but is not exactly the goal!).
-
TDahl,
Connect closest joints option is now a default functionality of joint connection tool. It's difficult to explain the behavior of a joint connection tool. That said, it needs a big overhaul. I will work on it after I finish with my other plugin.
Regards,
Anton -
Hello Anton
Can we made yet this sort of thing inside MSPhysics ?
-
Pilou, I think that light animation can easily be achieved with MSPhysics and TwilightRender/Skindigo/Kerkythea. Simply attach a lamp to a BallAndSocket joint, play simulation with record enabled, and then export to desired rendering format. Although in this video, a different approach is used, I'm certain that a rendering software would guarantee better results.
-
Thx for the answer!
-
Pilou,
I just made a demonstration of that in MSPhysics and free Twilight: https://drive.google.com/open?id=0B3qg8f4WrNdHZlp4NUd1N0FNXzg
Free Twilight also allows rendering in High+ mode and large resolutions. I used small resolution just to get it to render fast.
This can also be done with Kerkythea but in my opinion Twilight is a better rendering software. When I have time I will do a tutorial of how to set it all up. It shouldn't be to difficult though.
The model is attached below.
Regards,
Anton
-
Announcing version 1.0.3: http://www.rubydoc.info/github/AntonSynytsia/MSPhysics/file/RubyExtension/MSPhysics/CHANGELOG.md
@rick149 I added an option to hide/show selected entity as you requested.
@TDahl I improved the joint connection tool. Whenever you perform connection with alike instances, it will ask you whether to apply same connection to all instances, which will simplify the work you will have to do when dealing with chains or threads. I also improved the behavior of a Fixed joint. Now, if you use the version of your Viking Lander model that I posted, that contains Fixed joints, the wobbling of the segments should be significantly reduced. Edit: Also, if you change Fixed joint stiffness to 0.99, the wobbling would no longer be there.
-
Hi Anton.
I want to congratulate you for this awesome plugin. In your ToDo list you include Cloth (I think as a material) and Soft bodies, and user mesh collision. When do you think those functions will be ready?
-
Hi, pabloarias,
Cloth and soft bodies (on the ToDo list) is something that I might implement in the long-term. The physics engine that I use doesn't have a functional cloth/soft-body system yet.
Other than that, I am writing a separate cloth simulation plugin (with my own physics engine). I've been working on it for quite a while now and I am looking forward to finishing it as soon as I can.
Regards,
Anton -
@anton_s said:
Other than that, I am writing a separate cloth simulation plugin (with my own physics engine). I've been working on it for quite a while now and I am looking forward to finishing it as soon as I can.
Whohoo! If you need someone to test it just let me know.
-
@pixero said:
@anton_s said:
Other than that, I am writing a separate cloth simulation plugin (with my own physics engine). I've been working on it for quite a while now and I am looking forward to finishing it as soon as I can.
Whohoo! If you need someone to test it just let me know.
And I could be a tester for that plugin, too.
-
Hi,
I'm having a problem with joining a group to a motor joint. I have a complex object, a tank...
I drill down to one of the wheels and draw a motor joint at it's center. Next step is id like to join the motor joint to the wheel group. Once I select the joint connection tool and attempt to select the wheel group, the whole tank reappears, i.e. I am no longer in the wheel group so I cant attach the wheel and the motor joint....help....in other words...once I click the joint connection tool and move close to my isolated group the view switches to all the levels above it regrouped without me having access to the relevant group...ive attached the file I'm working on..
-
Will your cloth sim plugin be available from your Google Drive archive?
Also, I've been eagerly yet patiently waiting for cloth and fracture/split features and know you are just one guy so I totally respect and appreciate all that you do. -
@anton_s said:
... I just made a demonstration of that in MSPhysics and free Twilight: https://drive.google.com/open?id=0B3qg8f4WrNdHZlp4NUd1N0FNXzg
Free Twilight also allows rendering in High+ mode and large resolutions. I used small resolution just to get it to render fast....Hello Anton,
thank's for the answers (and sorry for my poor english !).Ok for the light with Twilight (render = image); but for the movie with Msphysics like your example ? How to make this video ?
Patrick
-
Gday
Can I control the order in which the sliders appear in the MSPhysics Control Panel?MSphysics is amazing.
This is an animated 3D model of my real homebuilt OKA 4WD truck modified as a go anywhere comfortable offroad motorhome. It has taken us to the isolated wilderness throughout Australia over the last few years: ...deserts, mountains, rivers and coast.
the model, thanks to MSPhysics is a true detailed representation of the truck with 4WD, steering and suspension that demonstate the capabilities of the real vehicle as a true earth cruiser well.
when i am finished I plan to put it all on an interactive website.
Thanks for the MSPhysics extension; ...with little doco, it has taken a lot to learn but learning all the different properties by suck it and see is better in the long run, especially after I found that once you know the various parts of the interface, they are very consistent and predictable.
When you get it right and learn its limits it is very stable makes animation and video production so easy and precise.
-
@Patrick: Twilight has an "Animation Editor" under "Twilight Render V2" in the extensions pull-down menu. There you can select quality, resolution, MSP Replay output etc. It could be helpful to test which scenes you include ore exclude into an animation in scene settings.
@rick149: great detailed model! Can't wait to see it in action.
-
Hi Anton,
Do you see a possibility that "non-collidable" set objects will be ignored by the Buoyancy Plane? -
Hi Anton, I'm hoping you may be able to diagnose an issue with recording MSphysics animations. With an evolved version of my model posted above containing a flat electrical cable that wraps around the interior of a hollow drum, SketchUp crashes (bug splat) when I click the Reset Simulation button after recording anything more than a few hundred to perhaps a thousand frames. My goal is to allow the simulation to run for about ten thousand frames (and then export 1920x1080 PNG frame files at a time scale of ~13, so that I end up with 700 to 800 actual PNG files). In order for the simulation to not encounter object penetration and collision problems the Update Timestep needs to be about 1/420 or smaller (which results in a large number of computed frames for a given real time sequence).
I would dearly love to be able to record a simulation where the drum (who's motor controller I activate manually right as the simulation starts) is allowed to rotate nearly 7 times, then the controller is set to zero and the simulation is allowed to settle for a bit. However, the MSphysics recorder seems to cause the extension and all of SketchUp to crash when resetting the simulation (clicking the "<<" button) after more than about 1/2 to 1 revolution of the drum.
I have tried SketchUp 2016.1 and 2017.3, with similar results. I am running this on an iMac with 32GB of memory. The SketchUp process grows to between 9GB and 10GB by the time seven rotations of the drum have occurred and 9700 to 10000 frames have been computed (and I'm ready to click the Reset "<<" button). The computer has sufficient memory to support this, though the simulation eventually runs quite slowly as the process expands memory bit by bit by bit, only doing a few frames every few seconds. My last run took about 2.5 hours of elapsed time to compute those seven rotations. That amount of compute time would be OK if the result was a usable recording.
By the way, a few weeks ago you had posted a revised version of my flexible cable model that uses fixed joints (between the ~250 cable segment objects) instead of hinges (as used in my versions of the model). I have tried that fixed-joint approach, but the resulting floppy behavior of the cable is not as appealing to me as the behavior that occurs with the hinge joints, so I prefer to use the hinges.
Advertisement