• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

FSXA Sliding joints? [Workaround inside]

Heretic

Resource contributor
Messages
6,830
Country
germany
Sliding joints? [Workaround inside, now illustrated]

Well, this isn't exactly a cry for help than a "been wondering" issue.

Has anyone of you ever had success with assigning sliding joints in gMax/Max?

In his jetway animation tutorial, Adrian Woods mentioned that upon assigning limits to a sliding bone joint, gMax did some, well....weird things to the skinned mesh of the bone. He also mentioned that you have to guess in terms of setting those limits for the sliding motion.

- Edit: The passage I'm referring to starts at about 9 minutes 10 seconds into the video. The video can be found here in the Wiki.

When watching the video, I laughed this weird behaviour off as a pure gMax limitation/quirk...until, of course, I ran into it in Max 9 myself. :rolleyes: :o

I needed to animate a hydraulic cylinder (tied into a bigger animation and tilted down 10° or so; this basically hindered a stock "keyframe by keyframe approach) and spent quite a while trying to figure out this "sliding joint" issue. Sure, I could have done everything with trial and error and wait for the export to FSX to see if the whole thing worked, but I wanted an instant, verifyable result in Max9.

There was a tutorial for MSTS(?) which revolved around animating without using Inverse Kinematics and which proved to be the solution to my problem.
The key thing is usage of the "Look At" constraint (which is avaiable in both gMax and 3DS Max).

So here's how it works...

You've got your hydraulic cylinder, which (just using ASCII signs) looks like this:



O======------o

Two halves, left and right.

Now create two pairs of bones, each with their parent loacted at the head of the resopective side of the rod.



_O======------o
1222222224444443

The "1" and "2"s designate the two bones on the left with the parent bone being "1". The bones on the right are "3" and "4" with "3" as a parent. The repeated use of numbers designates the length of the bones, although I think that this isn't relevant.

Anyways, in order to make the "Look At" Constraint work properly, you need to create two dummies. Sadly, for dependancy reasons, you can't simply have the two child bones "look at" each other so you'll need at least one dummy to work around this. I found that working with two dummies on each end, however gives better results. So create two dummies on each end of the cylinder (good results can be achieved if the pivot point of each half is set accurately to the middle; the dummies can then be properly aligned), like this:



_O======------o
1222222224444443
_D____________D
Yeah, you guessed it..."D" is for dummy.

The next step is simply linking the "2" (child) bone to the right dummy with a "Look At" Constraint ("Animation" menu -> "Constraints" -> "Look At" in Max 9) and doing the same with the "3" bone and the left dummy.



_O======------o
1222222224444443
_D____________D

Almost done now.
Skin your mesh now if you haven't done so yet.
If you move either bone "1" or bone "3" laterally you will see that your cylinder will work as intended.



However, if your hydraulic cylinder is part of a more complex animation and subject to movement while retracting and extending, fixed dummies as reference points could prove a bit hindering.



So as a last step, simply link the dummies to their next parent bones, say the left dummy gets linked to bone "1", the right one to bone "3".
The end result should look like this:



_O======------o
1222222224444443
_d____________d
(The lower case "d" indicates that the dummies are children to their parent bones now.)
This ensures optimal movement of the cylinder in every situation.



I know this is a slightly complicated workaround for a simple matter, but as I said: I wanted viewable results in Max, even if this is at the expense of performance (one more bone than normally needed).

Like last time, in case you guys find it helpful, I'll submit this to the Wiki - of course with real screenshots instead of ASCII art. :D

- Edit: After thinking twice, this isn't good or important enough for a Wiki article. The ASCII art stays as well for further clarification (or something like that).


Despite this workaround I'm still wondering if there's a way to make sliding joints display properly in (g)Max.
 
Last edited:
Back
Top