• Welcome to the Community Forums at HiveWire 3D! Please note that the user name you choose for our forum will be displayed to the public. Our store was closed as January 4, 2021. You can find HiveWire 3D and Lisa's Botanicals products, as well as many of our Contributing Artists, at Renderosity. This thread lists where many are now selling their products. Renderosity is generously putting products which were purchased at HiveWire 3D and are now sold at their store into customer accounts by gifting them. This is not an overnight process so please be patient, if you have already emailed them about this. If you have NOT emailed them, please see the 2nd post in this thread for instructions on what you need to do

seahorse for Harry

Cliff Bowman

Adventurous
It's a lot harder to work with things when you don't have the actual files to try things out. There's almost always "a way", but sometimes it can take fiddling about with it for a while to find that way - and then a bit longer to find a better way ;)

As far as I'm concerned the helpfulness of the community is the main thing. We'll get there, sooner or later, for any value of "there".

Cheers,

Cliff
 

FreyrStrongart

Brilliant
Contributing Artist
Well, thanks for all those helpful replies. Tonight I am too buggered but tomorrow I will tack that tail on that horse! And switching to a different filename for the second tail should work too? I might be able to figure out where I have to switch the names if it works like that.
 
I think I got the path figured out for the tail with no flippers so I inserted it in the 'scene.LoadLibraryFigure() function in these sample lines.
And again you will need to replace 'HarryFishTail' with the scene name of the tail.

def loadFishTail():
scene.LoadLibraryFigure("\Runtime\libraries\character\HiveWire 3D Animals\
HiveWireHorse\FreyrStrongart\FS_Seahorse\FS_Tail_no_flippers.cr2")
fishTail=scene.Figure("HarryFishTail")
return fishTail

...

In case Poser doesn't find the fishtailJoin actor, you will need to use the 'internal name' of the parent body part of the tail.
When you look at the properties list of the parent body part it will show the internal name.
So you will need to replace "hip" in this line of code with that name.

fishtailJoin=FishTail.ActorByInternalName("hip")

...

Then if you name the no fin script GraftFishTail2.py you will want to also name a copy of the GraftFishTail.pp2 file 'GraftFishTail2.ppy' and change the last call in the file as shown below.
}
}
doc

{

addActor GraftFishTail2
}

runPythonScript "\Runtime\Python\poserScripts\StrongArt\SeaHorse\GraftFishTail2.py"

}


Sure hope I haven't gotten mixed up here.
If there's a problem then just post the screen shots again.
That works pretty good to help me see what's going on.
 

FreyrStrongart

Brilliant
Contributing Artist
:D Fantastic job! It basically worked...(it did ask me to tell it which figure actually coincided with the filename, which would be a bit difficult for a normal user, so they would really need to read the ReadMe carefully :p). There is just one snag :(( since I didn't take into account where the hip facegroup finished I am missing one row of faces :((. However, the principle is sound! The bones and everything is there, so it did work.
Unfortunately since I have frontflippers who need to be grafted in the same way but do not at all coincide with the facegroup of the bone I can't use it there at all. I would need to be able to define the facegroup that needs to disappear like in DAZ to make this work with the geometry I have now. Naturally, now that I am aware of that limitation I might create further add-ons with the bone facegroups in mind. But it does limit how one can use this. Also, to make this really customer friendly I would have to be able to save the whole thing as click and go. Naturally I can save a whole set of assembled figures, that's not that much of a problem :p.

screenshot.JPG
 
...(it did ask me to tell it which figure actually coincided with the filename
Well there's a strange note.
I didn't put any kind of prompt widget in the script so where is that coming from?
That script and it's associated prop are just test versions of what should be a little further developed.
The idea is to emulate the Geo-Grafting Tool that DAZ has. So you have similar functioning figures in Poser.
I don't have DS 'cause trying to use them both would be too confusing for me.
Something that seems odd now is that gap.
If there is an overlap in DS, as it appears, then I wonder why it's not there in Poser.
Could be because what the script is doing is just making body parts invisible instead of setting visibility on a polygon level.
Don't know if that can be done with Poser Python, but I should look into it.
Or, as you mention, you could have an extra row of polys.
But that means making changes in the modeling tool just for a Poser version.

So now that test is OK, maybe I can develop it further.
But I need to know more, like, what the body parts of the fish figures are named.
I can now copy the list of items from the screen shots you posted, and also figure out the paths based on what I put in my previous post.
Did that path, as I put it in the scene.LoadLibraryFigure() function work as is?
Knowing that will help.
Also, if it's not too much trouble to add to the geometry that would help but I will look at the possibility of hiding only part of the pelvis.
Not likely but that would make it more like the Geo-Grafting Tool.
 
Also, to make this really customer friendly I would have to be able to save the whole thing as click and go. Naturally I can save a whole set of assembled figures, that's not that much of a problem
A custom prop, much like the one include with the GraftFishTail Kit, can call a Python script that gets as many fish figures as needed to complete the set, and make any combination of Harry's body parts invisible.
Now that I can see what all is there from the library shot I could look at further development with that in mind.
 
It's a lot harder to work with things when you don't have the actual files to try things out. There's almost always "a way", but sometimes it can take fiddling about with it for a while to find that way - and then a bit longer to find a better way ;)

As far as I'm concerned the helpfulness of the community is the main thing. We'll get there, sooner or later, for any value of "there".

Cheers,

Cliff

If you have any more ideas for all this I would be pleased to see them.
And thanks again for your help.
 

Cliff Bowman

Adventurous
If you have any more ideas for all this I would be pleased to see them.
And thanks again for your help.
Hrm.. I must admit (typing from my tablet) that I haven't actually looked at your code apart from line 17 (indicated by the error message) but I am mentally looking at the 'split' strip between horse and fishtail and thinking about the unshown fin geometry and wondering how best to go about solving those issues.

If using any of the existing horse geometry would be useful I'd have thought a chat with Chris might be useful.

As for welding meshes together - yeah that OUGHT to be possible too... but they're the kind of things I'd probably want to actually try rather than do 'by remote' - you're doing an incredible job without having the files to toy with!

I wonder occasionally whether it might be easier to 'INJect' the tail into the horse or the horse into the tail... Some creators (not me) have done some pretty amazing frankensteining without even a single line of Python.

Cheers,

Cliff
 

FreyrStrongart

Brilliant
Contributing Artist
Well there's a strange note.
I didn't put any kind of prompt widget in the script so where is that coming from?
That script and it's associated prop are just test versions of what should be a little further developed.
The idea is to emulate the Geo-Grafting Tool that DAZ has. So you have similar functioning figures in Poser.
I don't have DS 'cause trying to use them both would be too confusing for me.
Something that seems odd now is that gap.
If there is an overlap in DS, as it appears, then I wonder why it's not there in Poser.
Could be because what the script is doing is just making body parts invisible instead of setting visibility on a polygon level.
Don't know if that can be done with Poser Python, but I should look into it.
Or, as you mention, you could have an extra row of polys.
But that means making changes in the modeling tool just for a Poser version.

So now that test is OK, maybe I can develop it further.
But I need to know more, like, what the body parts of the fish figures are named.
I can now copy the list of items from the screen shots you posted, and also figure out the paths based on what I put in my previous post.
Did that path, as I put it in the scene.LoadLibraryFigure() function work as is?
Knowing that will help.
Also, if it's not too much trouble to add to the geometry that would help but I will look at the possibility of hiding only part of the pelvis.
Not likely but that would make it more like the Geo-Grafting Tool.

I haven't changed anything in the code except for the figurename. Haven't tried out the second fishtail, as the gap in the figure means I cannot use it at the moment since I REALLY don't want to add a row more to the geometry because that would mean going back to all the mats and reworking them... NOT gonna happen :p. And if your script should have a similar functionality as the geografting in DAZ then it should be possible that one can define a facegroup which is supposed to disappear. I am not sure if that is possible, as defining facegroups via the tool would probably mean to mess up the weightmapping... or maybe not? I don't know poser well enough yet to understand how things work here but I know I got a lot of problems whenn rigging because the faces weren't in the right groups for the bones. But DAZ works with facegroups outside of the facegroups assigned to bones for the geografting.
 
One thing that I have since thought of is just to reassign the row of polys from the hip to the abdomen.
I could do that. Then see if that messes up the weight maps.
But here is something to try as another test.
Right near the end of the GraftFishTail.py file is this line:
harryHip.SetVisible(0)

Change the zero to a one so it says this:
harryHip.SetVisible(1)

And if you would, please, post a screen shot of what that looks like.
The set of polys for the hip is shaped funny so it might look weird.
If it doesn't blend well then I could experiment with re-grouping some polys from hip to abdomen.
 

LisaB

HW3D Vice President & Queen Bee
Staff member
Co-Founder
Great stuff happening in here, folks. Good to see! Looking forward to the final product.
 

FreyrStrongart

Brilliant
Contributing Artist
One thing that I have since thought of is just to reassign the row of polys from the hip to the abdomen.
I could do that. Then see if that messes up the weight maps.
But here is something to try as another test.
Right near the end of the GraftFishTail.py file is this line:
harryHip.SetVisible(0)

Change the zero to a one so it says this:
harryHip.SetVisible(1)

And if you would, please, post a screen shot of what that looks like.
The set of polys for the hip is shaped funny so it might look weird.
If it doesn't blend well then I could experiment with re-grouping some polys from hip to abdomen.

Unfortunately keeping the hip visible doesn't give good results as the mesh flares out to the side. Initially I just turned off the different horsebody bones and leaving the hip on looks terrible. I tried to work with opacity so I might take a look at how it works in that case. But I suspect very much that it won't give me better results than with the simple conforming.
 
I wonder occasionally whether it might be easier to 'INJect' the tail into the horse or the horse into the tail... Some creators (not me) have done some pretty amazing frankensteining without even a single line of Python.
Yeah, I know what this would be.. GMF
Genetically Modified Figures

Well, the idea of re-grouping polys from one body part to another is not going to work out.
Mainly because of the weight maps.
I tried it and the re-grouped parts poke out when Harry bends or turns, etc.

So now I can see that for this to work it would involve the dreaded ... GROUP EDITOR ... OH NO!
This keeps getting closer and closer to the Geo-Grafting tool.
It really needs to be interactive. Is that the right term? Yeah, I think so.
With the group editor it is possible to hide sections on the polygon level.
And as this develops it is going to turn into an actual TOOL!

What then? Is some wiz like Bowman gonna make a user interface for it?
Well, if it's just implemented with magical props that hold the poly hiding info in 'Custom Data' and start up a script then it's not so different from what I've already done.

So, Freyr, are you ready to get a handle on the group editor?
 

Cliff Bowman

Adventurous
No! Not... the grope editor!

Bergmein eh? Do we suspect that out there somewhere there's an ancestral mountain that I technically own?

Cheers,

Cliff

P.S. please no - no interface design! Arg....
 

FreyrStrongart

Brilliant
Contributing Artist
Yeah, I know what this would be.. GMF
Genetically Modified Figures

Well, the idea of re-grouping polys from one body part to another is not going to work out.
Mainly because of the weight maps.
I tried it and the re-grouped parts poke out when Harry bends or turns, etc.

So now I can see that for this to work it would involve the dreaded ... GROUP EDITOR ... OH NO!
This keeps getting closer and closer to the Geo-Grafting tool.
It really needs to be interactive. Is that the right term? Yeah, I think so.
With the group editor it is possible to hide sections on the polygon level.
And as this develops it is going to turn into an actual TOOL!

What then? Is some wiz like Bowman gonna make a user interface for it?
Well, if it's just implemented with magical props that hold the poly hiding info in 'Custom Data' and start up a script then it's not so different from what I've already done.

So, Freyr, are you ready to get a handle on the group editor?
ROFL. That sounds dire but since I have no idea what you are talking about I'm not sure what I should be afraid off. I think I did work with the group editor, and I find that thing clunky... and very easy to make mistakes with it as it needs just a slip of the brush to assign polys to a new group... you delet them and then have to find out where you stole them. It would be so much better if that thing had a save button!
 

Cliff Bowman

Adventurous
ROFL. That sounds dire but since I have no idea what you are talking about I'm not sure what I should be afraid off. I think I did work with the group editor, and I find that thing clunky... and very easy to make mistakes with it as it needs just a slip of the brush to assign polys to a new group... you delet them and then have to find out where you stole them. It would be so much better if that thing had a save button!

Best Display Styles in the world for using the Group Editor are "Hidden Line" and "Wireframe". Wireframe makes it SO much easier to spot and get rid of those hidden "extra polys" that you caught somehow, by accident.

Cheers,

Cliff
 
Yeah, the clunkiness of it is the main problem.
Also that the documentation is so vague.
You don't need to 'save' the work you're doing 'cause it's always being saved.
I guess you could say it's dynamic.
SO! Here's what I'm thinking.
First, for the body parts that need only part of them hidden you would get the hidden polys selected and then make a new group for them and call it 'hidden'.
Take Harry's hip for example.
In the main workspace body parts list you would select hip, which is likely at the top of the list.
Or maybe you can select it in the hierarchy panel.
Then in the group editor you would use the list to also select hip.
Then you see that all the polys for the hip are already selected.
Choose the pen tool and select the '-' sign for removing polys from the selection and deselect the ones you want to keep visible.
So what's left selected are the ones you want to hide, and you click 'New Group' and name it 'hidden'.
You can do this procedure for each body part that is used for 'blending', like was probably done for the Geo-Graft tool.
Those 'hidden' groups will just stay.
So what my tool does with those is make arrays of their index numbers, body part by body part and save them as custom data
in the magical prop.

AND THEN... you would select the root/parent body part of each section of poor abused Harry that you want to be invisible,
and set 'visible' in the properties panel to 0.
And my tool would save a list of those and the magic prop would look for those invisible body parts and use them each, one by one in the little loop that hides all their children .

So the magical prop, when it is used to put the Seahorse together would find those 'hidden' polygons by their indices, and assign them to a new material called 'Hidden', and it would set all the nodes on that material so the polys wouldn't show in a render.
That would only mean black and zero diffuse, black and zero specular, and one for min and max transparency.
Easier than saving and loading a material, so you wouldn't need to create the 'Hidden' material when using the tool.

But the tool is probably going to be just a script that you run once you have all those things done.
And probably it would be best for all the desired Seahorse parts to be loaded so the tool would just save all the information it needs to so that the Magic Prop can be a one click you're done solution to any of the Seahorse configurations.

So naturally each one would need a clever market name because each one would likely be a separate product.
All depends on how you would want it.
 
Last edited:

NapalmArsenal

Distinguished
Contributing Artist
I think it's looking pretty good guys!! =) and you're very close to having it look as it should. =) Keep going its so incredibly AWESOME!! =) More testing on the Daz version will be done soon!! =)
 

FreyrStrongart

Brilliant
Contributing Artist
Yeah, the clunkiness of it is the main problem.
Also that the documentation is so vague.
You don't need to 'save' the work you're doing 'cause it's always being saved.
I guess you could say it's dynamic.
SO! Here's what I'm thinking.
First, for the body parts that need only part of them hidden you would get the hidden polys selected and then make a new group for them and call it 'hidden'.
Take Harry's hip for example.
In the main workspace body parts list you would select hip, which is likely at the top of the list.
Or maybe you can select it in the hierarchy panel.
Then in the group editor you would use the list to also select hip.
Then you see that all the polys for the hip are already selected.
Choose the pen tool and select the '-' sign for removing polys from the selection and deselect the ones you want to keep visible.
So what's left selected are the ones you want to hide, and you click 'New Group' and name it 'hidden'.
You can do this procedure for each body part that is used for 'blending', like was probably done for the Geo-Graft tool.
Those 'hidden' groups will just stay.
So what my tool does with those is make arrays of their index numbers, body part by body part and save them as custom data
in the magical prop.

AND THEN... you would select the root/parent body part of each section of poor abused Harry that you want to be invisible,
and set 'visible' in the properties panel to 0.
And my tool would save a list of those and the magic prop would look for those invisible body parts and use them each, one by one in the little loop that hides all their children .

So the magical prop, when it is used to put the Seahorse together would find those 'hidden' polygons by their indices, and assign them to a new material called 'Hidden', and it would set all the nodes on that material so the polys wouldn't show in a render.
That would only mean black and zero diffuse, black and zero specular, and one for min and max transparency.
Easier than saving and loading a material, so you wouldn't need to create the 'Hidden' material when using the tool.

But the tool is probably going to be just a script that you run once you have all those things done.
And probably it would be best for all the desired Seahorse parts to be loaded so the tool would just save all the information it needs to so that the Magic Prop can be a one click you're done solution to any of the Seahorse configurations.

So naturally each one would need a clever market name because each one would likely be a separate product.
All depends on how you would want it.

Wow.. I understood almost everything here :D. .. except for the last paragraph. I thought it might be possible to assemble the whole figures so you'd have two figures for the different tails. The customer can then add the other elements as desired. Or would it be impossible to distribute an assembled figure, because the new figure basically steals the Harry geometry which would mean... ooops... no go?
 
Top