Fri, Dec 27, 2:55 PM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Dec 27 2:49 pm)



Subject: Prop/Morph/Dials/Pivot


Inception8 ( ) posted Thu, 28 May 2009 at 7:54 PM · edited Fri, 27 December 2024 at 2:49 PM

Ok.

I have an earring prop which I've adjusted the pivot point to the earlobe/top of the earring for V4.

I changed the rotation dials(renamed) for the prop.

I've loaded a morph into/through the prop for G4.

Is there perhaps a way to LOCK the pivot point so it moves with the prop to the new location for G4 so that when using the rotation dials it rotates from the new location of G4's ear lobe?

So how would I go about doing this? Any clues.

Either easy or hard way.


ockham ( ) posted Thu, 28 May 2009 at 9:16 PM

If you want separate fits for V4 and G4, I'd think the easy way is just to
have separate PP2 files.  Those files are very small, so they wouldn't
"weigh down" the installation.   The OBJ file is the heavy part.

Or am I misunderstanding the question?

My python page
My ShareCG freebies


Inception8 ( ) posted Thu, 28 May 2009 at 9:40 PM

Quote - If you want separate fits for V4 and G4, I'd think the easy way is just to
have separate PP2 files.  Those files are very small, so they wouldn't
"weigh down" the installation.   The OBJ file is the heavy part.

Or am I misunderstanding the question?

Hmmm. True. So rather than having a morph dial in the prop file to move the earring to the G4 ear location just have a separate PP2.

I guess I was trying too hard to kill two birds with one stone for ease of use.


markschum ( ) posted Thu, 28 May 2009 at 9:53 PM

You should be able to load the one prop and have a pose file to correct the positioning but thats two operations as opposed to loading a different prop.


ockham ( ) posted Thu, 28 May 2009 at 10:00 PM

The same would apply to the adjustable prop.  (Two actions needed.)

I can think of a Python way to make the process fully automatic, but it
would depend on the target figure having the right name, and it would
be fooled if the user had renamed his Vicky.

My python page
My ShareCG freebies


Inception8 ( ) posted Thu, 28 May 2009 at 10:11 PM

Quote - You should be able to load the one prop and have a pose file to correct the positioning but thats two operations as opposed to loading a different prop.

I know it probably sounds weird. And perhaps the way to do it is bone the prop.

In a 3d program (ie. 3dsmax) you can adjust the 'pivot' point of an object and that pivot point stays with the object no matter where it's moved to or at least it should unless u have to adjust it again if it's 'scale' changes but the pivot (axis) point still 'remains' with the object as it moves.

The idea is that the pivot point is 'following' the object as it's moved and scaling to G4 with the morph dial.


Inception8 ( ) posted Thu, 28 May 2009 at 10:24 PM

Quote - The same would apply to the adjustable prop.  (Two actions needed.)

I can think of a Python way to make the process fully automatic, but it
would depend on the target figure having the right name, and it would
be fooled if the user had renamed his Vicky.

Perhaps a better way to describe this...

The pivot (joint; joint editor)) point that you have initially set at the top of the earring prop where it meets the ear of V4 stays with the object as you turn (or enter 1 in the data entry field) the dial at the top of the earring when it meets G4's earlobe. The pivot point would move along with the prop's morph.

I guess what I might also be suggesting is there somewhere in the PP2 file that states the pivot point (JOINT) location when you load the prop. If so would there be a way to copy that so that the pivot (JOINT) parameter is also at the top of the morph 'earring' (object) so it keeps everything in one file for ease of use.

I hope that sounds right.


ockham ( ) posted Thu, 28 May 2009 at 10:47 PM

If you want to do it that way:  Locate the xOffsetA, yOffsetA, zOffsetA paragraphs
in the PP2 file.  Insert a bit of ERC code in each one that is 'slaved' to your morph.

Assuming the morph dial is named TheGirl4Fit, and assuming the earring is
named EarringLeft, the ERC code would look like this

            valueOpDeltaAdd
                NO_FIG
                EarringLeft
                TheGirl4Fit
            deltaAddDelta 1.000000

This paragraph would go immediately below the
            interpStyleLocked 0
line in each of those paragraphs.

And then you'll have the fun part: Finding the value of deltaAddDelta for
each of these.   The following might work: Take the xOffset value for Girl, subtract
the xOffset value for Vicky, and put this result after deltaAddDelta in the xOffset
paragraph.  Do a similar subtraction for Y and Z, and put those in the deltaAddDelta
for the respective paragraphs.  

This should then move the offsets from the Vickish values to the Girlish values
when your TheGirl4Fit morph dial goes to 1.

My python page
My ShareCG freebies


Inception8 ( ) posted Thu, 28 May 2009 at 11:43 PM

Quote - If you want to do it that way:  Locate the xOffsetA, yOffsetA, zOffsetA paragraphs
in the PP2 file.  Insert a bit of ERC code in each one that is 'slaved' to your morph.

Assuming the morph dial is named TheGirl4Fit, and assuming the earring is
named EarringLeft, the ERC code would look like this

            valueOpDeltaAdd
                NO_FIG
                EarringLeft
                TheGirl4Fit
            deltaAddDelta 1.000000

This paragraph would go immediately below the
            interpStyleLocked 0
line in each of those paragraphs.

And then you'll have the fun part: Finding the value of deltaAddDelta for
each of these.   The following might work: Take the xOffset value for Girl, subtract
the xOffset value for Vicky, and put this result after deltaAddDelta in the xOffset
paragraph.  Do a similar subtraction for Y and Z, and put those in the deltaAddDelta
for the respective paragraphs.  

This should then move the offsets from the Vickish values to the Girlish values
when your TheGirl4Fit morph dial goes to 1.

Argh. A little more involved than I thought, but that's the kind of thing I'm looking for. That's just beautiful.

Thankyou very much. Hopefully that will work.


lesbentley ( ) posted Fri, 29 May 2009 at 4:11 AM · edited Fri, 29 May 2009 at 4:14 AM

Quote - I guess what I might also be suggesting is there somewhere in the PP2 file that states the pivot point (JOINT) location when you load the prop. If so would there be a way to copy that so that the pivot (JOINT) parameter is also at the top of the morph 'earring' (object) so it keeps everything in one file for ease of use.

In a poser file, the pivot point is called the 'origin', and the 'origin' line has 3 values separated by spaces which define the x, y, and z, location of the origin respectively. The origin does move with the prop when it is translated. Your problem stems from the fact that you are NOT moving the prop  you are moving its mesh whilst leaving the prop itself in the same place. Morphs don't move props or actors, they move the vertices associated with the prop's geometry. This may sound like knit picking but it's important to an understanding how things work.

If I remember rightly, ockhams idea of using ERC in the OffsetA channels won't work.

The following assumes that the earrings are two separate objects (even if they are in the same pp2). If it where me, I would scrap the morph as a way to fit the earring to G4. Instead I would use ERC to change the translations of each earring so that they move into position on G4. This solves the problem of the origin as it will move with the prop. I will say more about how to do the ERC in my next post.


lesbentley ( ) posted Fri, 29 May 2009 at 6:09 AM · edited Fri, 29 May 2009 at 6:16 AM

file_431829.TXT

Here is how I would do it. First make sure Poser is set to use Poser Units in General Preferences.

Load G4, turn off IK, zero her in the Joint editor, make sure the translations and rotations of the BODY and hip are zero. Load the earrings.

Translate the right earring so that it is in the correct position relative to G4's ear. If necessary also use the rotate dials to get a good fit.

Note down the new values of any dials you have changed, e.g:

yRotate 20
xTran -0.010
yTran -0.064
zTran -0.027

Open the pp2 containing the right earring. Find the actor for the right earring. Place this slaving code in each channel  which you changed the dial value for:

                        valueOpDeltaAdd
                                _NO_FIG_
                                <span style="color:rgb(255,153,0);">NameOfActor</span>
                                FitG4
                        deltaAddDelta <span style="color:rgb(255,153,0);">#</span>

Replace "NameOfActor" in the above code with the internal name of the earring prop, e.g. "Ring_R". Now replact the "#" in the code for each channel with the value you noted down earlier for that channel. So that, for example, the translateX channel might look like this:

                translateX xTran
                        {
                        name xtran
                        initValue 0
                        hidden 0
                        forceLimits 0
                        min -100000
                        max 100000
                        trackingScale 0.001
                        keys
                                {
                                static  0
                                k  0  0
                                }
                        interpStyleLocked 0
<span style="color:rgb(255,153,0);">                 valueOpDeltaAdd<br></br>                           _NO_FIG_<br></br>                          Ring_R<br></br>                            FitG4<br></br>                     deltaAddDelta -0.010</span>
                        }

After setting the appropriate values in each block of slaving code, add this valueParm channel to the top of the channel stack: valueParm Fit_01 { name FitG4 initValue 0 hidden 0 forceLimits 1 min 0 max 1 trackingScale 1 keys { static 0 k 0 0 } interpStyleLocked 0 }

Do the same procedure for the left earring. With the left earring you have a choice. You can create a new valueParm channel for the left ear and slave the translate channels in the left ear to that, or you can slave the channels in the left ear to the valueParm channel in the right ear, so that you only have one dial to adjust to make the rings fit. If both rings are part of the same obj file, then instead of using xTran, you will have to use xScale to adjust the side-side position of the rings, slaving the xScale channel to the valueParm. Because a value of "100%" on the scale dial is equal to a value of "1.000" in the scale channel, you will need to move the decimal point two spaces to the left form the value you noted on the dial, when placing it in the 'deltaAddDelta' line of a scale channel.

Attached above is an example containing one earring. The smart prop is made to fit V4.2, the "Fit_Girl" dial makes it fit "The Girl", the original Girl, not G4 which I don't have. Drop the ".TXT" part of the file extension and save it to a props pallet.


lesbentley ( ) posted Fri, 29 May 2009 at 7:13 AM

Something went wrong with my last post and the "hidden 0" line in the valueParm channel ended up in the wrong place. It should have looked like this: valueParm Fit_01 { name FitG4 initValue 0 hidden 0 forceLimits 1 min 0 max 1 trackingScale 1 keys { static 0 k 0 0 } interpStyleLocked 0 }


Inception8 ( ) posted Fri, 29 May 2009 at 8:23 AM

Quote - > Quote - I guess what I might also be suggesting is there somewhere in the PP2 file that states the pivot point (JOINT) location when you load the prop. If so would there be a way to copy that so that the pivot (JOINT) parameter is also at the top of the morph 'earring' (object) so it keeps everything in one file for ease of use.

In a poser file, the pivot point is called the 'origin', and the 'origin' line has 3 values separated by spaces which define the x, y, and z, location of the origin respectively. The origin does move with the prop when it is translated. Your problem stems from the fact that you are NOT moving the prop  you are moving its mesh whilst leaving the prop itself in the same place. Morphs don't move props or actors, they move the vertices associated with the prop's geometry. This may sound like knit picking but it's important to an understanding how things work.

If I remember rightly, ockhams idea of using ERC in the OffsetA channels won't work.

The following assumes that the earrings are two separate objects (even if they are in the same pp2). If it where me, I would scrap the morph as a way to fit the earring to G4. Instead I would use ERC to change the translations of each earring so that they move into position on G4. This solves the problem of the origin as it will move with the prop. I will say more about how to do the ERC in my next post.

Wow man. I thank you very very much for going through all that trouble of explaining and giving examples of what to do. Very very very eye opening indeed.

I understand what you're saying.

But this defeats the purpose of what the morph dial is intending to be in the PP2 file for either the left or right earring in question. For example you've added the G4 and Aiko morph dials to move them to a new location relevant to both head's earlobes for the sake of both convenience and not having extra PP2 files for G4 and Aiko (depending on how many items you've created they would begin to add up). Keeping it simple.

Basically I suppose for the added convenience to the user for having those dials present in the PP2 file is that you're just going to have to open the Joint Editor window and move the joint to the new location for either earring.


ockham ( ) posted Fri, 29 May 2009 at 11:45 AM

Les is right about ERC not working on offsets.  Now I remember trying it
before, and failing.  It's one of those peculiarities of Poser ....  the offsets
can't be keyframed, so they can't be controlled by ERC.  The regular
xtran, ytran, and ztran can be controlled that way, but those won't move
the pivot point and thus won't allow the earring to swing properly.

It comes back to the start: your best choice is separate prop files for each figure.

My python page
My ShareCG freebies


svdl ( ) posted Fri, 29 May 2009 at 12:09 PM

Actually, having an ERC dial controlling the xTran, yTran and zTran of the earring (possibly scaling too) fits the purpose of having one prop with fit "morphs" perfectly, much better than a morph does.
First of all, the joint moves as you intend, in a user friendly way.
Second, ERC code is far less memory consuming than morph deltas.
Third, creating extra ERC channels for e.g. Jessi or Victoria 3 is a breeze, so your earrings become more versatile, without becoming memory-heavy.

The pen is mightier than the sword. But if you literally want to have some impact, use a typewriter

My gallery   My freestuff


Inception8 ( ) posted Fri, 29 May 2009 at 5:18 PM

Quote - Actually, having an ERC dial controlling the xTran, yTran and zTran of the earring (possibly scaling too) fits the purpose of having one prop with fit "morphs" perfectly, much better than a morph does.
First of all, the joint moves as you intend, in a user friendly way.
Second, ERC code is far less memory consuming than morph deltas.
Third, creating extra ERC channels for e.g. Jessi or Victoria 3 is a breeze, so your earrings become more versatile, without becoming memory-heavy.

Is there a program that would make this job more, shall I say, productive, if you know what I mean?

Although I did follow JCH's tutorial on removing OBJ data from prop files (to cut down the size of the PP2 file and reference the object)  fairly easily, this whole thing sounds alot more complicated for my brain at the moment.


lesbentley ( ) posted Fri, 29 May 2009 at 7:43 PM · edited Fri, 29 May 2009 at 7:56 PM

Quote - Basically I suppose for the added convenience to the user for having those dials present in the PP2 file is that you're just going to have to open the Joint Editor window and move the joint to the new location for either earring.

I think you are missing the basic point here. If you move the earring via translations, as opposed to morphs, the user does not need to "move the joint to the new location" because the 'origin' (center of rotation/joint) stays in the same place relative to the prop. In the example attachment, the centre of rotation is in the center of the prop when the prop is parented to V4.2. It is still in the center of the prop after the Fit_Girl dial is used to fit the ring to The Girl.

Really the center of rotation should be at the top edge of the prop, not the center, but that is just a detail that I forgot to fill in, because I was illustrating the ERC code, not the correct position of the joint center. If the joint center had been at the top of the ring when it was parented to V4, it would still have been at the top of the ring after the dial was used to position it on The Girl. The whole point is that a positioning morph is worse than useless in these situations. Scrap it. You don't need it. Position the rings with the translation channels as described in my previous post. The user does not need to change the joint center, because it stays in the same place relative to the prop, as long as you don't use a morph to move the prop. Try out the example I posted, and see for yourself.

Quote - Is there a program that would make this job more, shall I say, productive, if you know what I mean?

For a small and simple thing like this, I find a good text editor, like "EditPad Lite" quite sufficient. For larger files that would require a lot of scrolling in a text editor I use the free "CR2Builder". There may be other tools out there that you could use, but I do most of my editing in the ones mentioned. Dimention3D's "Poser Power Tools" and "Poser File Editor", and PhilC's "Poser Tool Box", and Ajax's "EasyPose Underground" are probably worth looking into, but I don't use these myself.


Inception8 ( ) posted Fri, 29 May 2009 at 8:03 PM

Quote - > Quote - Basically I suppose for the added convenience to the user for having those dials present in the PP2 file is that you're just going to have to open the Joint Editor window and move the joint to the new location for either earring.

I think you are missing the basic point here. If you move the earring via translations, as opposed to morphs, the user does not need to "move the joint to the new location" because the 'origin' (center of rotation/joint) stays in the same place relative to the prop. In the example attachment, the centre of rotation is in the center of the prop when the prop is parented to V4.2. It is still in the center of the prop after the Fit_Girl dial is used to fit the ring to The Girl.

Really the center of rotation should be at the top edge of the prop, not the center, but that is just a detail that I forgot to fill in, because I was illustrating the ERC code, not the correct position of the joint center. If the joint center had been at the top of the ring when it was parented to V4, it would still have been at the top of the ring after the dial was used to position it on The Girl. The whole point is that a positioning morph is worse than useless in these situations. Scrap it. You don't need it. Position the rings with the translation channels as described in my previous post. The user does not need to change the joint center, because it stays in the same place relative to the prop, as long as you don't use a morph to move the prop. Try out the example I posted, and see for yourself.

Quote - Is there a program that would make this job more, shall I say, productive, if you know what I mean?

For a small and simple thing like this, I find a good text editor, like "EditPad Lite" quite sufficient. For larger files that would require a lot of scrolling in a text editor I use the free "CR2Builder". There may be other tools out there that you could use, but I do most of my editing in the ones mentioned. Dimention3D's "Poser Power Tools" and "Poser File Editor", and PhilC's "Poser Tool Box", and Ajax's "EasyPose Underground" are probably worth looking into, but I don't use these myself.

Ok bro I think you've got me convinced. I'll give it a whirl and see how it goes but since you've gotten yourself involved you may have endure me bugging you a few times if I don't completely succeed somewhere in the process of doing so.

You ok with that? :0)

D.


lesbentley ( ) posted Fri, 29 May 2009 at 8:30 PM

Quote - You ok with that?

Sure am. Really it is better that way. It is hard to give a complete description, dotting every "i" and crossing every "t", but if you just ask on the points you are uncertain about, it saves me putting in a lot of detail that you may not need.

On the other hand, it is best (for me) if you can give as much detail as posible when you get stuck, or when something does not work corredtly. It saves me having to ask a lot of questions. Better for me, more work for you. ;)


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.