Setting Proxy Points and Animation work flow

Hello Bongo experts-
I need some expert advice & help understanding how proxy points work and the best strategy/work flow for animating a fairly complicated set of movements.

I am using Rhino 5SR14 64bit, Vray 2.0 and Bongo 2.0.

I am animating a high-performance 2 man foiling sailboat going through a gybe. The animation involves turning the boat through 180degrees, moving the 2 sails from one side of the boat to the other, having the rigging & lines controlling the sails follow the sail from one side to the other, and having the 2 crew members move from one side to the other.

The boat with sails, rigging, crew move along a predefined path with a camera moving along a similar path and speed, using a camera to path constraint with a proxy point in the center of the boat as the target to object constraint.

My model is very detailed with over 500 components and probably 20 objects that will be moving as part of the above animation sequence. Most of the objects like the sails and 2 people are meshes.

I understand the use of proxy points but have run in to the following issues:
1- Once I have set up a proxy point, it seems like my animation model is locked in. After adding keyframes along the timeline to set the boats position/turning angle and the movement of the mesh sails, I realized that my proxy point was in the wrong location and the camera was pointed too low.
1A- I could not figure out how to move the defined proxy point so I tried to add a new one and make the existing proxy point a child (and thus the entire children of 500 components grand children). This proved to be very difficult as I had to move the model to the center 0, 0, 0 origin in order to get the new proxy point to be in the center of the model. Can I move an existing proxy point without moving the model to the center origin? Is there a Bongo command to do this? Will it mess up my existing keyframes?
1B- If I include the proxy point along with the model, I had to pick seemingly bizarre points in order for the final point to be in the right place. Not sure where the offset is coming from?
1C- If I don’t select the proxy point and just select all of the parts of the model, I can easily pick the proxy in the center of the model but this seem to leave parts of the model off in space and I can’t get all the components in to their proper locations. I have not found away around this.
1D- Do I need to remove the initial proxy point and start over to get around this? Is there a Bongo command to remove a proxy point? Or do I simply select the point and delete from the model? Will doing this destroy my current animation or mess up my existing keyframes?
2- Adding components to an existing model that is already animated. As described above, adding parts to the model after a proxy point has been set is causing problems. What is the best strategy for doing this? Is it possible?
3- Changes to the model with the animate mode on or off?
3A- I assume that when adding to the model that is already animated, I turn off animate mode and any changes I make will apply to all of the existing animation. I assume that for this to work the new pieces need to be added to the existing proxy point. Is this assumption correct? Am I asking for trouble if I make ANY changes to the model after I have started animation?
3B- if I add key frames in animate mode and move one of the meshes, I often find that some other key frames get messed up and the same objects have moved seemingly in random ways. Again, I am assuming that animate mode needs to be on if I want the object to be animated and that what I edit in the key frame is treated as the literal location of each object and should not affect the location of the same objects in another key frame (I.e. movements are not relative to other key frames)?
4- Is it easier to define constraints for one moving object relative to another object (the lines attached to the moving sails) or just move all the objects around in each key frame? What will yield the best results or least headaches?

Thanks for any and all help. I would really appreciate advice on the general work flow that folks use when trying to do fairly involved animation with a lot of moving parts. If I am already half way through the animation process, what is the best technique for making changes to the existing, partially animated model??

Thanks,
Chet Douglas
Inspiredezigns LLC

1- Things getting slow (seemingly freezing Rhino) is probably caused by the amount of animated objects you have in the model. The use of a proxy is only recommended for a small number of multiple object transforms, because every linked object is treated as animated hence demanding CPU attention.
For your complex comprehensive model it is much better to combine every collaborative object (hull, keel, deck, mast, …) into a Block using Rhino’s Block command. A Block instance is treated by Bongo as being one single object, given only one single pivot. The pivot is by default situated at the Block’s base point, but can easily be relocated by using the BongoMovePivot command. As you probably know the pivot is used as a reference by the Simple constraints like “To Path” and “Look Along”
1A- A proxy point is indeed parent to the objects concerned. When a parent is moved or rotated by a Rhino command (outside animation mode) the children move/rotate along. Children on the other hand can be relocated relative to their parent. So truly it is difficult to reposition a proxy relative to its children. There is no specific Bongo command to do so. You can however relocate the proxy’s pivot hence influencing the behavior of Simple constraints. None of this will mess up any keyframes – the keyframe-data are relative to the pivot’s home position (i.e. the position defined outside animation mode).
1B- and 1C- I don’t get the picture of the situation you describe.
1D Yes, a proxy can simply be deleted. Deleting an object however will delete all of its keyframes. Previous to deleting the animation data can eventually be save (BongoSaveEntityToFile command) and the restored on a new object (BongoLoadEntityFromFile command).
2- and 3- Adding components nor making changes shouldn’t cause trouble or random moves, unless when the model is ‘overloaded’ with animated objects and the ‘powers’ of your computer fail to keep track. I suggest you have a try using Blocks. If you keep having the same problems please report back.
4- I do not understand “define constraints for one moving object relative to another object”. Could you show a sample image?

If you like you can send me your model (luc@mcneel.com) so I can take a look and make more specific suggestions.

Hi Luc!
Thanks for the quick response. I appreciate your time for your thorough explanations. I will continue explore the issues in light of your suggestions and see if I can get past these first round of issues and get you a model that demonstrates the issues.

I want to immediately look in to moving to blocks. Some further questions regarding their use:
5- If I organize the model in to blocks, each with their own pivot, do I then make all of those pivot points children of a single parent proxy point?
6- during the course of the time line objects within some of the blocks will need to be animated. If one of the blocks is the two crew, part way through the turn they will need to move to the other side of the boat. Will using blocks make this animation more difficult? Do I need to explode the block in order to do the animation?
7- is it ok that the “crew” block will move to the other side of the “hull” block? Anything I should be aware of when organizing the blocks? The two crew will move differently in the animation. Should they be separate blocks?
8- I have sails for the left side of the hull and right side and turn layers on or off with key frames so when the boat is halfway thru the turn I turn off the one sail layer and turn on the other. I did this originally to allow me to copy the mesh changes for the sails at each key frame for the first half of the turn and use the same meshes ( on the opposite side of the boat) for the second half of the turn. Should I use separate blocks for right and left sides? Should I not bother with right and left sides and just have one set of meshes for the sails that I manipulate throughout the whole animation?

I have learned a huge amount in the animation work I have already done and based on your feedback I am going to start over with the animation based on blocks. I think I have way too many key frames and will also take this opportunity to use some simple constraints based on all of your instructional videos. This will simplify the animation significantly. When I get to the next set of issues I will drop you the model with the next set of specific issues.

Your help and direction are greatly appreciated!
Thanks,
Chet

A example is worth a thousand words: Chet.3dm (596.2 KB)

Elements of a Block cannot be animated separately. Bongo treats the entire Block as being 1 object. So only objects that stick together (like being glued or nailed) should be merged into a Block. When one crew-member moves differently from the other it should be a separate Block. If the figure is just 1 mesh there is no need to Block it.

In the sample I used 3 blocks:

  1. The ship containing the hull, deck, cabin and mast.
  2. The boom and gaff (including line).
  3. The man containing body, head and legs.

The boom/gaff as well as the man are both made child of the ship. The sail on its turn is child of the boom/gaff block. This way they all move together when the ship is “Simple constrained” to the path. Boom/gaff can rotate on demand (taking the sail along) and the man can move freely over the deck. There is absolutely no need for any proxy.

A Block is only used to combine various parts (probably with various material properties) into a whole. I gave the various elements in the sample various display colors to illustrate. Since the sail in my sample is only one object (a surface) there is obviously no need to ‘Block’ it.

About the sail: I used morphing to make it flip. The switch-technique midways (left/right) you describe sounds OK to me. It will probably make things more manageable when the movements of the sail are rather complex.

Good luck,
Luc

Hi Luc.
I can’t thank you enough for putting a model together to demonstrate the use of blocking. I will start working with your sample immediately and let you know what further questions i might have. The fact that you are able to move these objects freely within the model using blocks and no proxy points is exciting since I feel both of those areas were causing issues for me, and hindering my ability to focus on the animation.
I really appreciate the help and am truly grateful to you for taking the time to set me in the right direction.
Thanks again!
Chet

My pleasure.

Hi Luc,
Your basic ship animation model was very useful and I have learned the basics of using Blocks to subdivide my complex model in to a much smaller set of objects and have completely removed the need for a proxy point. Being able to set up separate pivot points for each Block has been very useful. I now better understand the parent child relationships of the blocks and how I set this up outside of the animation and Bongo maintains that relationship throughout the animation.

I am now to the point where I have the boat sailing around the track, turning the rudders and tiller arms connect to them, letting the sails out as the boat turns downwind, all working.

My next challenge is the rigging and pulleys need to let out rope as the boom moves out from the centerline of the boat. Changing the length of the rope in one key frame changed the rope in all of the other key frames and I don’t see an easy way to fix that with simply key frame movements. So I need to chose something more advanced to make this work.

So I am now experimenting with an IK constraint very similar to your “crane.3dm” model you posted last fall to help someone with their model crane animation. The segment of rope from the wall to the tip of the moving crane is very similar to the fixed center in the boat out to the end of the boom which moves as the sails are moved.

I’ll let you know how it goes!
Thanks again for the fantastic help!
Chet

1 Like

Thanks for keeping us posted. Good to hear you got on the right track with the aid of some simple examples.

When your final animation is finished I hope you will post a video on our website http://bongo.rhino3d.com/
Keep up experimenting and don’t hesitate to ask for help when it gets out of controle.
Luc

Hi Luc,
I have enclosed a very simple of model of what I am trying to model. I have a boom that swings to the side over time. Attached to the boom is a sheet that is suppose to be attached to the hull. So both ends of the sheet are constrained but the boom end moves and the sheet stretches and the angles on both ends of the sheet need to rotate in 3 dimensions. I have the boom end working ok and the sheet stretches out correctly in one dimension but, for the life of me, I cant figure out how to get the hull end of the sheet to remain fixed to Object8. I am sure there is a very simple explanation and an equally simple fix to my model. Can you help me? Or provide the clues I need to fix it…

Thanks for your help!
Chet

boom.3dm (380.1 KB)

You misjudged the use of an IK-constraint. The IK-solver computes the necessary transformations of all telescopes, hinges or rubberbands higher up in the IK chain, but never downwards. In my tutorial http://bongo.rhino3d.com/video/whys-of-ik I used the metaphor of a snake for an IK-chain. The constraints (a essential element of an IK-chain) is never at his head.

But I see you enigma. Both ends of the sheet have to be attached to the system! Anyway the primary attachment must be done by making the sheet child of an element of the whole. There are 2 options: either ‘attach’ it (make it child of) the “hull”, or make it child of the “boom”.
The pivot of the sheet has to be moved to either end in order to make the position of the attachment correct.
The other end of the sheet must be marked by an auxiliary point being child it (in your model either Object 3 or Object 8).
image
This auxiliary end (junior in the chain) can then be a ‘constraint’:
– to the “boom” via “boom-pt” (when the sheet is child of the hull).
– to the “hull” via “hull-pt” (when the sheet is child of the boom).

In order to make the Scaling (rubberband) work properly the pivot of the sheet must be aligned with the center axis of the sheet. You can use the BongoOrientPivot command to do so.
image
Hence the sheet can be made a universal joint rotation X and Y and scaling Z.
image

In boom001.3dm (327.5 KB) you see the hull-attachment.
boom002.3dm (296.9 KB) shows the boom-attach variation.
I would personally prefer the boom variant because a fluid elegant chain is formed when the boom is child of the hull (which in your model is necessary, I assume).
imageboom001 image boom002

Keep on rocking.
Luc

Hi Luc!
Fantastic models. The main logic I was not understanding was that I had to put the pivot for the sheet at the end opposite the point constraint and align the pivot axis correctly along the length of the sheet. I had started with your IK tutorial and understood that the head could not be a constraint but as you pointed out, the “enigma” for my problem was a two headed snake with constraints on both heads (at opposite ends).

Regarding both models you sent, the hull object is the parent of all of the other objects, but ends up moving backwards (to the left) on the x axis as the boom swings out, instead of moving forward (to the right). In my real model, the hull is constrained to looking down a path over time. Will that additional constraint prevent the hull from sliding backwards as the boom moves out??? I didn’t see a quick fix for constraining the hull…?

I think this is the last hurdle for me to overcome to get this part of the animation worked out. Next will be animating the two crew meshes!

Thanks again for your instrumental guidance!
Chet

One small correction to my last reply:

Correction: Actually, I am hoping the hull object will remain stationary and not move backwards or forwards as the boom swings out.

In the models I was only moving the hull about - without even thinking of back or forth - merely to illustrate that the hull would be the head of the hierarchical chain. You can move the hull anyway you like (a simple constraint LookAlong is to be considered a ‘move’) without any effect on the IK mechanism boom/sheet/hull (apart from them moving along). Conversely the swinging of the boom does not have any effect on the position of the hull.

Thanks. I started with boom002.3dm and added a path and a look along path constraint for the hull and the animation works beautifully.

Now I am struggling to copy the same boom002.3dm IK chain in to my real model. I can add the following:
-hull pt constraint
-sheet pt constraint to hull pt
-boom pt constraint to mainsail object (mainsail is child of hull)

The model looks ok at this point.
If I start animating, the hull end works correctly but the boom end of the sheet does not follow the boat and I realize my parent child relationship looks like this:

Hull
Mainsail
Hull pt
Boom pt
Sheet
Sheet pt

Since the boom pt is not a child of the hull or mainsail it stays stationary as the boat sails away, stretching out the sheet a long way! So now I select the boom pt and select its parent as mainsail to get the following hierarchy:

Hull
Mainsail
Boom pt
Sheet
Sheet pt
Hull pt

But as soon as I do this, the boom pt and end of the sheet separate from each other and no matter how I drag them around I can’t get the IK chain linked together again. Driving me crazy. I’ll try some more experiments after some sleep and see if I can get it to work. Is there a way I could upload my model if I continue to struggle?

Thanks as always!
Chet

Indeed reorganizing an existing chain can induce frustration (if not craziness). When an object is reassigned to a different level it takes along all of its descendants (children, grandchildren etc…).

My personal approach is:

  • disable IK in order to prevent objects going insane image
  • unravel the entire chain by dragging (in the Animation manager) each and every object to the single Animated Object level.
    image
  • reconstruct the desired chain (by dragging in the A.M.)
  • enable IK

It’s hard to figure out what could be wrong with the chain-hierarchies you describe. It would be better if you could make a screenshot of the Animation Manager (like I posted earlier) to give an structured image – you can use Windows Snipping Tool.
But surely a copy of your model would help a lot to. You can mail it to me directly luc@mcneel.com or if the size exceeds the maximum you can use http://www.rhino3d.com/upload and put me luc@mcneel.com in as the recipient.

And hey, take care to get enough sleep – ‘mens sana in corpore sano’ remember :smiley: .
Luc

So I spent an incredibly frustrating day with my model trying to get 2 constraints and the sheet universal joint to work, but no luck. I try to position the boom end of the sheet extrusion in the right place and the other end of the sheet jumps wildly to some other place way on the other side of the model. Move the hull pt object to its correct location and the sheet to hull object shoots off to some other location. I tried disabling IK and setting up the objects and hierarchy and then re-enabling IK but see the same issues. I also tried adding each component in the IK chain from scratch with unique names but see similar chaos.

I feel like there is something very fundamental about this that I don’t understand. Is it possible to pay you for consultation time and show you what I am doing using Webex or Skype??? I suspect if you saw what I was doing in real time you could correct my work flow in minutes!

I will put my broken model back together and upload it to you. Perhaps you can fix the model and I can reverse engineer what you did to make it a true teachable moment. If I can’t figure out how you fixed it or continue to fight with it, perhaps we could somehow share a consulting session? I would gladly pay to figure this out!

Thanks,
Chet

Maybe you are plagued by the “SnapIntoPlace” option of both BongoSelectParent and BongoSelectChildren commands. When the option is marked ‘Yes’ any current parental transform will be applied to the (new) child.
An example:
image
In this model the cube is rotated Z=33° via a keyframe at tick e.g. 20
image
Here the sphere is made child of the cube with ‘SnapIntoPlace:Yes’. It appears to be moved (because the timelineslider is still at tick 20,
image
but the base position of the sphere (with cube rotation Z=0°) is actually unaltered.
image
Here the sphere is made child with ‘SnapIntoPlace:No’. It doesn’t seem moved, but actually it is.
image
Its home-base is altered as though a Rhino Rotate command Z=-45° with the center of the cube as center of rotation is executed. This move is definitive; even when you ‘unchild’ the sphere is still rotated.

The tricky part is that the SnapIntoPlace-option is also active when you drag objects in the Animation Manager. The state (Yes or No) is such as it was set when the command was last used. Moreover BongoSelectParent and BongoSelectChild ‘remember’ there own (possibly different) state.

The easiest way to deal with this it to work on an chain (IK or not) in a situation where all the elements are in there base situation (“home-base” is my term). Preferably I try to keep the transform data of all objects null at tick zero, and edit the hierarchical structure with the timelineslider positioned at tick zero.
image
In the boom002.3dm model (posted above) the boom is rotated Z=12.6457405° at tick zero which makes it hard to cope with the SnapIntoPlace option.

I’ll gladly take a look at your workflow (regardless the 9 hours’ time gap between us) free of charge. We could use TeamViewer. Let’s make an appointment - you have my e-mail address.
Luc

HI Luc!
Thanks for the heads up regarding the snap in place feature. This would explain the crazy phenomena of objects snapping to other locations as I set up my IK chain. In general I should already be following your recommendations by having the time slider at frame 0, animation off and focused on setting up the initial IK chain with no key frames driving the chain. But I will keep your recommendations in mind as I continue working on the animation.

I will get you the model and then will take you up on your offer to have a joint debug/work flow session, if you are not able to decipher what I am doing wrong.

Thanks as always,
Chet

Hi Luc!
I have uploaded my model and sent you an email with all of the details of the specific IK chain I am trying to set up.
Thank you for your help on this!
Chet

Wanted to update the bongo community on the latest challenges for animating my sailing craft.
-Luc has provided an updated model that helped me complete one of the IK chains for the first sheet of the boat’s rigging.
-I had a few key learning moments from study of Luc’s updated model including forgetting which end was driving the IK chain. Once I flipped my thinking & logic it started to work! Will publish key learnings soon.
-I have now taken these key learnings and completed the main sail rigging with 8 sheets that now move as the boom moves in the animation frames. I have added key frames for the first half of the gybe sequence, moving the main sail and boom as the boat turns. So cool seeing it all work!
-Now working on the front jib which is a different set of constraints and slightly more complicated chain, similar to Luc’s crane model. I am building a simple model of my intended Bongo animation, a work flow which I highly encourage when trying to work out the animation by focusing on the basic chain without the complexities of the full blown model.

Will update everyone with my key learnings soon! Eventually will publish the resulting animation too!
Thanks!
Chet

4 Likes