Forum: Poser 11 / Poser Pro 11 OFFICIAL Technical


Subject: Body Part Control Handle Parenting Query

primorge opened this issue on Jan 14, 2024 ยท 4 posts


primorge posted Sun, 28 January 2024 at 10:22 PM

Solved with a bit of experimenting.

First I saved out a copy of my figure to the library. I took it into MorphManager and stripped out all the morphs and controllers. The reason I did this is because the figure has hundreds of dials at this point, which has a tendency to crash Poser when trying to leave the set up room. I also saved out a pmd inject including all the dials in my WIP version of the figure. The injection managed to copy all of the various controllers (scale, translation, posing, morphs, JCMs, etc) and dial groupings successfully and reload everything working.

With the stripped copy of the figure I went into the set up room and added a ghost bone as a child of the head. I added weight maps to all the rotation channels and the smooth scale channel (as replace) and with the weight brush set to subtract erased all the weights that would influence the head actor from the bone. This bone will be the actor for the eye gizmo. Shown in orange here...


I then imported a slightly flattened Torus obj as a prop to serve as the control gizmo, appropriately aligned. I converted this to a control prop with the eye control bone as the object to control, manually dragged and dropped the torus onto the eye controller actor in the hierarchy as the parent. These two steps cause the torus prop to rotate the control ghost bone when grabbed with a manipulation tool in scene.

I set up rotation limits on the ghost bone to match some eye controller dials limits I had already established, these dials are shown here...

Now, I want the torus gizmo, when I grab it, to rotate the eyes to their pre-defined limits set by those dials, and also only have the torus rotate the ghost bone to those same limits as set up in the control dials... so that the torus prop which influences its parent, the ghost bone, doesn't go flying all over the place and matches the eye rotations exactly, and vice versa.

By going through the chain of dependencies set up with above dials I determined that the controller dials rotate the eyes explicitly to values of yRotate ( side-side) +20/-25 degrees, xRotate (up-down) +20/-20 degrees...

So I select the ghost bone and set limits on it's rotations for the y and x axis correspondingly...

Then I set up keyed dependencies in each of those rotation dials in the ghost bone, for instance...

xRotate, edit dependency, start teaching, -20 in the master parameter, 1 in the driven value of the sub master LeftEye+Lid LookUp-Down. 0 in the Master, 0 in the Sub, etc for the negative values, rinse and repeat.

The result, a working eye gizmo that when manipulated rotates the eyes simultaneously, activates the lid morphs correspondingly, and only rotates the ghost bone within the limits of those driven dials ( and the gizmo control prop follows suit). It's a simple matter to set up a couple of control props for the individual actors, the control of both at once was the goal.

I set up little animation, I tried doing a screen capture with the cursor "live" but that resulted in a ridiculously large video file, so I just set each movement of the manipulation tool to a key frame and used photoshop from the image sequence files for gif...


Saving the figure to the library of course embeds the prop geometries into the cr2, fortunately I have a script that deletes the geometry therein and repoints to obj path reference in Geometries which does the trick.

Finally, my intention in doing this was actually to create some grabber gizmos for smooth translations drivers for breasts and buttocks bones, the eyes were just the proof of concept... but that's another story.