Fri, Jan 3, 10:28 AM CST

Renderosity Forums / Poser 11 / Poser Pro 11 OFFICIAL Technical



Welcome to the Poser 11 / Poser Pro 11 OFFICIAL Technical Forum

Forum Moderators: nerd

Poser 11 / Poser Pro 11 OFFICIAL Technical F.A.Q (Last Updated: 2024 Dec 30 12:17 pm)

banner

Welcome to the Poser Forums! Need help with these versions, advice on upgrading? Etc...you've arrived at the right place!


Looking for Poser Tutorials? Find those HERE



Subject: Is there a way to mirror a morph?


RAMWorks ( ) posted Wed, 07 July 2021 at 9:28 AM · edited Fri, 03 January 2025 at 10:24 AM

So I'm still working away at my new pack for Dusk and L'Homme. There is a necklace, I made a nice fly off to the left for some movement options, no way to really recreate that for the right exactly so it would be nice to know if there is a way to properly mirror that morph for the right fly off. I've tried the Mirror option in the Morph Tool panel (where I created the morph) but all that does is mirror the necklace as a whole so that looks really messed up when that's used LOL I have Content Mirror but that mirrors the entire prop and inverts the UV's from my findings so that's def not what I'm after.

There is a script I used to use all the time in DS that does this. Too bad that Poser doesn't have something similar!

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


bwldrd ( ) posted Wed, 07 July 2021 at 10:52 AM

Go to ockham's bungalow and get his morph mirror script. The rest that I know of were commercial and now unavailable.

--------------------------------------------------------------------------------

Consider me insane if you wish, but is your reality any better?


RAMWorks ( ) posted Wed, 07 July 2021 at 1:11 PM

Thank you very very much! Lots of really good scripts on this page! WOOT 😁

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


RAMWorks ( ) posted Sat, 10 July 2021 at 10:49 AM

So as it turns out this script literally mirrors the entire necklace so if the morph is active then the entire necklace is morphed so that it's stretched from the left side to the right! Not what I'm after. I've asked in the Blender community to see if it's possible in that program. ALL of the scripts I've found for Poser do basically what I've described above. It's too bad there wasn't a built in feature like that in Poser similar to mirror pose options but since this is a prop and not a figure there are no such options available. :sad:

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


bwldrd ( ) posted Sat, 10 July 2021 at 2:34 PM · edited Sat, 10 July 2021 at 2:34 PM

Are you setting the original morph back to 0 before you try usning the mirrored morph?

I'm guessing that the necklace is a single OBJ? That why the mirroring is moving the whole necklace.

You can try MASA's MTMirror, goto Download & Other tools on the side menu at the MASA Poser++. Though it would require a bit more work, with you needing to have both the base and morphed item as OBJ.

--------------------------------------------------------------------------------

Consider me insane if you wish, but is your reality any better?


RAMWorks ( ) posted Sat, 10 July 2021 at 4:21 PM

Yes, have that.

Found out there is a mirror tool in ZBrush but it basically does what the MASA does, it sort of turns the necklace inside out to mirror the morph. There are high end packages out there that can mirror morphs and don't need them to be symmetrical to work successfully!

Discovered that Jordi and Emma (they have a large store at DAZ3D) are the heads of the "Artistic Squad" found on ArtStation and Jordi and I have been going back and forth about this.

Be nice if SOMEONE could make a plugin or script for either ZB or Blender or better yet Poser to mirror a morph over to the other side without all this hassle. I'd pay good money for that!

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


adp001 ( ) posted Tue, 13 July 2021 at 1:40 PM

I'm a bit late, but maybe you want to try this:

from __future__ import print_function, division
import numpy as NP
import wx
import poser

SCENE = poser.Scene()
prop = SCENE.CurrentActor()

with wx.TextEntryDialog(None, "Insert morphname to process:",
                        caption="Morph Mirror for prop: " + prop.Name()) as dialog:
    if dialog.ShowModal() == wx.ID_OK:
        morphname = dialog.GetValue()
        morphparmA = prop.Parameter(morphname)
        if morphparmA:
            other_morphname = morphname + "_new"
            numv = prop.Geometry().NumVertices()
            morphdata = NP.array([morphparmA.MorphTargetDelta(idx) for idx in range(numv)])
            morphdata[:, 0] *= -1.0

            morphparmB = prop.Parameter(other_morphname)
            if not morphparmB:
                prop.SpawnTarget(other_morphname)
                morphparmB = prop.Parameter(other_morphname)

            for idx, v in enumerate(morphdata):
                morphparmB.SetMorphTargetDelta(idx, *v)

            morphparmA.SetValue(0)
            morphparmB.SetValue(1)
            SCENE.DrawAll()
            print("Done")
        else:
            print("Morph unknown:", morphname)
    else:
        print("Aborted.")

The script will ask for a morph created in the currently selected prop/actor. If the given morphname is found a new morph is created with the same name extended with "_new".

I hope it is what you are looking for.




adp001 ( ) posted Tue, 13 July 2021 at 1:57 PM

Forgotten to mention: Should work with most Poser versions.




RAMWorks ( ) posted Tue, 13 July 2021 at 4:01 PM

Interesting. SO just select the code and save as a PZ2 or is this a Python script?

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


primorge ( ) posted Tue, 13 July 2021 at 4:50 PM

"There is a necklace, I made a nice fly off to the left for some movement options, no way to really recreate that for the right exactly"

Hi RamWolff... Not to step on any toes here but why didn't you just create a fly off to the right morph? it needn't be identical for something like a necklace move morph. Then you would have 2 movement morphs, one to the left and one to the right that you could slave to one controller dial with, say Swing-Right as value 1 and Swing-Left as value -1. Besides this is how a lot of hair props do it, also an identical movement morph for both directions might appear odd in animations. Maybe I'm just not understanding what your post is saying. Anyway I've been using the method above quite a bit for creating flesh movement morphs and JCMs for an old free toon figure called Sera that I've been polishing here and there and things look pretty good in animations. Unfortunately forum doesn't allow gifs seems like.

Anyway, something to consider for movement morphs...

bsparms.png


primorge ( ) posted Tue, 13 July 2021 at 4:52 PM

Content Advisory! This message contains nudity

Render 2-1.png


primorge ( ) posted Tue, 13 July 2021 at 4:52 PM

Content Advisory! This message contains nudity

Render 1.png


primorge ( ) posted Tue, 13 July 2021 at 5:06 PM · edited Tue, 13 July 2021 at 5:08 PM

Also. If your interested in precise left to right movements a modeler like blender with traditional movement gizmos and numeric entry and proportional fall off gives identical results in left to right deformations, as long as the geometry is symmetrical. Numeric precision. Something else to consider.


primorge ( ) posted Tue, 13 July 2021 at 5:24 PM

Now that I think of it ADP's python probably couldn't get any more precise as far as mirroring. So thanks for that script. Is it only compatible Poser 12?


adp001 ( ) posted Tue, 13 July 2021 at 6:46 PM

RAMWolff posted at 6:45PM Tue, 13 July 2021 - #4423099

Interesting. SO just select the code and save as a PZ2 or is this a Python script?

It's a Python script. Save it into a textfile with extension ".py".




adp001 ( ) posted Tue, 13 July 2021 at 6:49 PM

primorge posted at 6:47PM Tue, 13 July 2021 - #4423121

Now that I think of it ADP's python probably couldn't get any more precise as far as mirroring. So thanks for that script. Is it only compatible Poser 12?

Should work with any Poser version.

The script creates a second morph with all X deltas inverted (-0.04 becomes 0.04 and vice versa). The prop must not be symetrical for this.




primorge ( ) posted Tue, 13 July 2021 at 6:56 PM

adp001 posted at 6:51PM Tue, 13 July 2021 - #4423131

primorge posted at 6:47PM Tue, 13 July 2021 - #4423121

Now that I think of it ADP's python probably couldn't get any more precise as far as mirroring. So thanks for that script. Is it only compatible Poser 12?

Should work with any Poser version.

The script creates a second morph with all X deltas inverted (-0.04 becomes 0.04 and vice versa). The prop must not be symetrical for this.

Figured it recalculated the deltas, that's why I said that. Literally can't get more precise than that. So it works on asymmetrical things too, kind of like... a tangent mirror.

Thanks ADP


adp001 ( ) posted Tue, 13 July 2021 at 7:14 PM

RAMWolff posted at 7:00PM Tue, 13 July 2021 - #4423099

Interesting. SO just select the code and save as a PZ2 or is this a Python script?

To use the script, select your neclace and start the script via [Poser Main Menu]File ->Run Python Script.

A dialog asks for a morphname. Enter it (the one you did already) and press ok. A new morph will be created (old morphname extended with "_new").




primorge ( ) posted Tue, 13 July 2021 at 7:21 PM

Will this only work on a prop?


adp001 ( ) posted Tue, 13 July 2021 at 7:24 PM · edited Tue, 13 July 2021 at 7:26 PM

primorge posted at 7:24PM Tue, 13 July 2021 - #4423136

Will this only work on a prop?

Works on any actor with geometry and deltas ("real" morph). Not Value Parameters.




primorge ( ) posted Tue, 13 July 2021 at 7:30 PM

In other words can this be used on a body part? For example, in the above swing morphs on Sera's chest you have to manually create each direction. Simply dialing a single direction morph in the negative values doesn't work properly to achieve the translated identical effect. Hope I'm making sense.


primorge ( ) posted Tue, 13 July 2021 at 7:43 PM

I'll test it now.


adp001 ( ) posted Tue, 13 July 2021 at 7:56 PM

primorge posted at 7:55PM Tue, 13 July 2021 - #4423138

In other words can this be used on a body part? For example, in the above swing morphs on Sera's chest you have to manually create each direction. Simply dialing a single direction morph in the negative values doesn't work properly to achieve the translated identical effect. Hope I'm making sense.

A negative value negates Y and Z too. The script negates only X.




primorge ( ) posted Tue, 13 July 2021 at 7:57 PM

Invalid syntax error


adp001 ( ) posted Tue, 13 July 2021 at 8:02 PM

Want something to play with? Replace:

morphdata[:, 0] *= -1.0

with

morphdata[:, 1] *= -1.0

for morphs "waving" in Y direction instead of X.




adp001 ( ) posted Tue, 13 July 2021 at 8:03 PM

primorge posted at 8:03PM Tue, 13 July 2021 - #4423142

Invalid syntax error

????

Did it say the line number?




adp001 ( ) posted Tue, 13 July 2021 at 8:09 PM

Poser 11 or 12?

If P12, maybe you have tabs and spaces mixed up. Python 3 doesn't like this.

I checked again (with P11). Works fine.




primorge ( ) posted Tue, 13 July 2021 at 8:11 PM

Just this

2021-07-13 (4) copy.png


primorge ( ) posted Tue, 13 July 2021 at 8:13 PM

Poser 11. Let me try recopying it


adp001 ( ) posted Tue, 13 July 2021 at 8:17 PM

Line 36 is an empty line :) (the last line in the file)




adp001 ( ) posted Tue, 13 July 2021 at 8:20 PM · edited Tue, 13 July 2021 at 8:23 PM

Just remove anything after "print(Aborted.)". Make sure the last line is just a linefeed.




primorge ( ) posted Tue, 13 July 2021 at 8:21 PM

It works pretty good. But yes just on the x. It's useful, thanks man.


adp001 ( ) posted Tue, 13 July 2021 at 8:25 PM

primorge posted at 8:24PM Tue, 13 July 2021 - #4423151

It works pretty good. But yes just on the x. It's useful, thanks man.

Fine.




RAMWorks ( ) posted Tue, 13 July 2021 at 9:32 PM

WOW, you go away for a couple of hours and the thread explodes. Thanks for all the advice folks. OK, it's a Python. Thank you. I'll play with it for sure. You guys are great!

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


RAMWorks ( ) posted Thu, 15 July 2021 at 9:48 AM

Just got a second to test this out. OMG. IT WORKS! HAPPY HAPPY BOI HERE! THANK YOU!

Poser 11 for all my content creation stuff for now.

---Wolff On The Prowl---

My Store is HERE

My Freebies are HERE  


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.