Mon, Nov 18, 12:27 AM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 17 8:56 pm)



Subject: Making symetrical hair in Poser?


Gurichi ( ) posted Sun, 26 August 2007 at 11:55 AM · edited Thu, 15 August 2024 at 5:53 AM

Hi, I was wondering if it's possible in the Poser 6 hair room to make half of the hair you're making (like bangs), then copy and flip it to make the other half? Because I made pretty cool bangs on one side of a Hiro model's head, and I want it on the other half as well so it'd be symetrical... Is this possible some way? Thanks in advance!


Cage ( ) posted Sun, 26 August 2007 at 1:02 PM

Hypothetically, a Python script should be able to mirror selected hairs, if there isn't a built-in tool for this (I know there's no such tool in Poser 5).  I don't think any such script currently exists, however....

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Gurichi ( ) posted Sun, 26 August 2007 at 7:19 PM

Quote - Hypothetically, a Python script should be able to mirror selected hairs, if there isn't a built-in tool for this (I know there's no such tool in Poser 5).  I don't think any such script currently exists, however....

It's a shame I don't know anything about Python Script then.. :( Thanks for trying though..


Cage ( ) posted Mon, 27 August 2007 at 12:53 AM

It wouldn't be a terribly difficult script, although there is one key limitation that would complicate things.  PoserPython wouldn't be able to create a new group for the hairs it would add.  So it would either have to work from a user-defined symmetrical hair group in the OBJ or it would have to append the new hairs to the same group used by the side which is being mirrored.

I'd kind of hoped someone would jump in and say there is a pre-existing tool or script.  If there isn't, I'll try to tinker with the idea and see if I can develop anything for Python.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Gurichi ( ) posted Mon, 27 August 2007 at 6:11 AM

Quote - It wouldn't be a terribly difficult script, although there is one key limitation that would complicate things.  PoserPython wouldn't be able to create a new group for the hairs it would add.  So it would either have to work from a user-defined symmetrical hair group in the OBJ or it would have to append the new hairs to the same group used by the side which is being mirrored.

I'd kind of hoped someone would jump in and say there is a pre-existing tool or script.  If there isn't, I'll try to tinker with the idea and see if I can develop anything for Python.

It'd be fine if it was in the same group, I wouldn't mind that at all!

That'd be awesome if you'd do that! :D


Cage ( ) posted Mon, 27 August 2007 at 11:28 PM

Okay, I think I can do this, but not in the way I'd expected.  There will be some necessary limitations and/or complications.

PoserPython can't use its normal geometry creation methods for this, for two reasons.

  1. The normal PoserPython geometry creation/alteration routines, using Numeric arrays, will only create closed polygons. PoserPython can manipulate hair geometry, but it treats each hair as a polygon.  In the .obj/geomCustom listings, each hair is listed as a line, not a polygon (with an "l" line instead of an "f" line).  PoserPython can't create line geometry, it seems.

  2. Poser won't allow dynamic hair geometry line/poly count to be increased.  It can be decreased, but I didn't test to see what effect that might have once a hair dynamics simulation is run.  I tested this with both the PoserPython geometry methods and geometry insertion poses, and in both cases Poser simply ignored the change if it involved any increase in hair count.

I think I can do this, however, by creating a new .hr2 file which contains the new geometry.  My tests so far suggest that this should work.  But there are some complications.

  1. As far as I can tell, "show populated" should not be in use when the script is run.  We want to work with only the guide hairs.  I may be wrong about this, but I think PoserPython considers the populated hairs as part of the geometry if show populated is active.  I'll test to verify.
     

  2. Any existing .dyn dynamics run for the hair prop will be invalidated once the geometry is changed.  It's probably best not to try this with hair for which dynamics have been run.  I'll see if I can simply strip the .dyn path reference from the altered .hr2 file, but I don't know whether Poser will tolerate that.

  3. The styling tools actually alter the hair geometry and the effects of these can be mirrored effectively, but the dials (such as pull down, pull side, etc.) are listed in the .hr2 file as part of the dynamics settings and will therefore be applied globally to a new prop with altered geometry.  In the case of pull side, at least, this could affect the symmetry if these dials have been used in the styling process.  So it's probably best not to use them to style a hair prop which is to be mirrored.  I may be able to "bake" these settings into both sides of the altered geometry by using WorldVertex instead of Vertex positions when I export the new geometry.  If this works, the values for the dials should be zeroed in the altered .hr2.  I haven't yet tested to see if this idea will work, however.

So it should work, basically, but the results may be less than perfect.  :(  The script will basically delete the selected hair prop and create and load a replacement.  With any luck, I should have a first version together tomorrow.

A completely different approach might be tried, and it might be better.  If the user creates the hairs on both sides in separate groups, then styles one side, a script could easily transfer the shaping for one side to the other.  The complications so far all have to do with trying to add new geometry.  Re-shaping existing hairs shouldn't pose such problems.  Perhaps I'll try this idea, as well.  Making this work would depend on the order of the hair polygons/lines.  I'll have to see how the ordering of these works out.  It's possible that a symmetrical parent object which isn't mirrored might have its own vertices in an order which would generate incompatible hair props with different polygon orders....

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Tue, 28 August 2007 at 10:18 PM

Hmm.  More complications.  Patching in a new geometry seems to work, until you try to render or activate "show populated".  The altered hair simply doesn't respond, and renders invisible.  So the premise of adding geometry looks like it won't work at all.

I can think of one more possibility.  If the user creates two symmetrical hair groups, build from a mirrored skullcap prop, and styles one side, the styling can be set as a morph target for both sides.  That should result in hair elements which are symetrically styled, but there are potential complications in this, too, primarily connected to the question of whether the polygon orders of the two hair props can be consistently expected to be compatible enough to figure out how to set the morphs correctly for both.

Still working on it.

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Gurichi ( ) posted Wed, 29 August 2007 at 6:26 AM

Quote - Hmm.  More complications.  Patching in a new geometry seems to work, until you try to render or activate "show populated".  The altered hair simply doesn't respond, and renders invisible.  So the premise of adding geometry looks like it won't work at all.

I can think of one more possibility.  If the user creates two symmetrical hair groups, build from a mirrored skullcap prop, and styles one side, the styling can be set as a morph target for both sides.  That should result in hair elements which are symetrically styled, but there are potential complications in this, too, primarily connected to the question of whether the polygon orders of the two hair props can be consistently expected to be compatible enough to figure out how to set the morphs correctly for both.

Still working on it.

Hmmm...

The only problem I can think of fr that second possiblility is that.. I don't have a skullcap for the Hiro model... Would you have to use a skullcap?


Cage ( ) posted Wed, 29 August 2007 at 3:36 PM

You wouldn't have to use a skullcap, but when trying to transfer these morphs, the order of the hair polygons will be important, to be able to be sure of an orderly transfer between the correct hairs.  As far as I can tell, the order of the hair polygons results from the order of the parent object's vertices (possibly polygons - at any rate, the orders of the two seem to be linked).  So it will presumably be important that the base/parent object not only have symmetry, but mirrored symmetry.  Presumably Hiro's head would have this.

I'll have to experiment with this idea, however.  I didn't expect any of the problems with the other things I've tried.  Poser gives its dynamic hair meshes special attention of some sort, which is interfering with any effort to alter them.  That may be true in this case, too.  We'll have to see....

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Cage ( ) posted Fri, 31 August 2007 at 3:15 PM

Okay, I tested the basics of the morphing idea, and it works so far.  I need to work out a method to force proper correlation of hairs/polygons in the two hair objects and a few other things.  Not the way I would have preferred to do this, but it may be the only way possible.  :(

===========================sigline======================================================

Cage can be an opinionated jerk who posts without thinking.  He apologizes for this.  He's honestly not trying to be a turkeyhead.

Cage had some freebies, compatible with Poser 11 and below.  His Python scripts were saved at archive.org, along with the rest of the Morphography site, where they were hosted.


Gurichi ( ) posted Fri, 31 August 2007 at 9:20 PM

Quote - Okay, I tested the basics of the morphing idea, and it works so far.  I need to work out a method to force proper correlation of hairs/polygons in the two hair objects and a few other things.  Not the way I would have preferred to do this, but it may be the only way possible.  :(

Well it's good that it's working so far, and thanks again for going through all this trouble!


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.