Mysterious Viewport Translation After Re-Load
See the attached picture.
In this chain of parented huts and bridges, there is a place where the hut does not line up with the bridge. The hut has been X-Translated 68.19.
This X-Translation is mysterious for several reasons.
1. There is no record of it in the Properties tab or the Joint Editor.
2. It only appears in the scene after the scene is closed and then re-loaded. Or, rather, after I turn off Daz Studio and then re-load Daz Studio and re-load the scene.
3. It only happens for parented chains containing 2 or more bridges in which at least one of the bridges is posed to bend left or right.
My best guess is that the hut is inheriting the X-Translation from some other component in the chain of parented things, and that it inherits it without registering it in the Properties tab or Joint Editor, and only inherits it on a re-loading of the scene.
There are other nodes from which the translation can be so inherited. By my design, when a bend pose is applied to a bridge, several center points do get X-Translated 68.19 (half of them 68.19, half of them -68.19; with the sign swapping depending on whether bending left or right).
But I stress yet again: EVERY node in the ENTIRE parented chain shows exactly the translation values it should in the Properties tab, and exactly the right Center and End Pint values it should in the Joint Editor. No values present in the Properties tab or Joint Editor corroborates the X-Translation of the hut shown in the viewport.
Properties tab and Joint Editor say the hut is in the right place. Viewport shows the hut in the wrong place.
To diagnose this problem, I need to explain more about the structure of these huts and bridges.
They are a kit to be assembled by means of parenting them together.
Load a hut. Load a bridge and parent it to the hut. Load a second hut and parent it the empty end of the bridge. And so on.
The huts are a simple Figure/Prop/Asset with a morph to adjust the height of the red pole under it.
The bridge, however, is complex. It is a Scene Subset containing a Figure/Prop/Asset with a null parented to it. The Figure/Prop/Asset is a rigged, parented chain of segments that execute the left or right bending poses. The null is parented to the last child segment of the Figure/Asset/Prop. The null is needed to make parenting a hut to the child end of the bridge easy. The null floats out beyond the tip of child end of the bridge, right where the centerpoint of a hut would need to be when it gets parented to the bridge. Parenting a hut to this null, and setting all the hut’s Translation values to zero, places the hut right where it needs to be.
In my attached picture, you can see this null in the Scene tab, labled as “Parent Hut to this & Zero the X, Y and Z Trans Values”.
A tricky thing about this null: the X-position of the null needs to be shifted during the left or right bend poses. This is because the null is parented to the last child segment of the bridge (called “End B”), which has it’s centerpoint X-Translated during those poses, and thus the null inherits this X-translation, screwing up the X-position of it’s child hut. To keep the null in the right place, I added a sub-component to the pose controller to X-shift the null back to the correct place.
This means: The Figure/Prop/Asset part of the bridge has a pose controller that adjusts the X-position of a null that is parented to Figure/Prop/Asset. The Figure/Prop/Asset is otherwise connected to the null only by way of both being included in a Scene Subset.
When I first tried this, I was worried that it might not work, that the pose controller would fail to work on a node that was not strictly a part of the Figure/Prop/Asset, but merely parented to it. But it did work. So I went with it.
But maybe it only worked in that limited first trial. Maybe it screws things up when there’s 2 or more bridges in the same parented chain, wherein the pose controller of one bridge may execute on all the nulls parented to all bridges in the chain, adding or subtracting extra 68.19 X-Translations to the “wrong” nulls. Maybe so. But why screw things up this way only AFTER re-loading the scene? Prior to re-loading, each bridge’s bend-controller only adjust the X-position of the null for that bridge.
If you are curious why I tried this “parented null” approach in the first place, here’s why: Because making a rigid follow node on the Figure/Asset/Prop was a more immediate disaster. Having made such a node and putting it’s centerpoint out where the center of the parented hut should be, my bend-pose controller proceeded to tilt any hut parented to the node in on the X-axis while bending the bridge. Bizarro.
So, does anyone have more of a clue what causes my problem and how to fix it?