primorge opened this issue on Jan 14, 2024 ยท 4 posts
primorge posted Sun, 14 January 2024 at 9:03 AM
Hello,
I'm curious whether it is possible to create a master control prop that will control 2 body part handles to manipulate both simultaneously.
For instance; the left and right body parts each have their own control prop ( parented to and driving the respective actors) which control the rotations independently. It isn't possible, as far as I can tell, to add an additional prop that manipulates both. Each control prop can only have one actor to manipulate, and any controller cannot have more than one parent.
I'm not adverse to doing complex dependencies or some cr2 editing but it just doesn't seem like it's feasible from my experiments unless I'm just missing some leap of logic.
Thanks.
Ps... can a control prop also drive translations, say, via dependencies? For instance map driven Smooth translations of an actor via direct manipulation?
Thanks
nerd posted Sun, 14 January 2024 at 5:25 PM Forum Moderator
Yes, yes, yes and sure thing. The eye controls on LaFemme 2 control both eyes. The face controls include rotation, scale and translation. It's just a question of how many dependencies you're willing to wire up. The only "no" is that no, a prop can't have multiple parents.
If you look at LaFemme2's eye controller you'll see how it moves both eyes. It's attached to it's own ghost bone that drives the dependencies in both eyes.
Look at the controls for the Metacarpals for an example of how ghost bones can control real joints.
primorge posted Sun, 14 January 2024 at 6:51 PM
nerd posted at 5:25 PM Sun, 14 January 2024 - #4480377
Ahhhhhh. The rigging has long been done. I don't want to add any additional bones because it tends to cause a peculiar reordering of vertices or something that causes spikey artifacts in pre existing morphs... or maybe that was clumsy iteration saving on my part. In any case, a very unpleasant surprise that I had to deal with. I'm just too far into the morphing stages to have to go back again and stamp out bugs, reload morph targets, and re set up dependencies in FBMs for corrections.Yes, yes, yes and sure thing. The eye controls on LaFemme 2 control both eyes. The face controls include rotation, scale and translation. It's just a question of how many dependencies you're willing to wire up. The only "no" is that no, a prop can't have multiple parents.
If you look at LaFemme2's eye controller you'll see how it moves both eyes. It's attached to it's own ghost bone that drives the dependencies in both eyes.
Look at the controls for the Metacarpals for an example of how ghost bones can control real joints.
I figured there was a way with standard control props, which are less invasive than adding more ghost bones after the fact. Not a big deal really. I don't have LF2 but I did take a look at Chocolate's Haru and 3D Universe's Skye and they have a similar ghost bones driven simultaneous eye controller set up... Really something that should be planned from the get go I guess. Dials will suffice, maybe on the next figure.
Thanks again, Charles.
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.