Thu, Nov 28, 8:04 AM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 27 5:12 pm)



Subject: Smart Prop question.. fairly technical, but any help is appreciated.


Stepdad ( ) posted Sun, 23 September 2007 at 11:03 AM · edited Sun, 24 November 2024 at 3:51 PM

Greetings..

I'm currently working on a set of props and they utilize posers smart prop feature - however I've run into a bit of a snag and I'm wondering if perhaps anyone else has had experience with this or knows of a workaround.  I'm not adverse to editing the .pp2 files directly.

That having been said, here's my problem.

As far as I can determine, when a smart prop is loaded, it is automatically parented to whatever figure or prop that has the same internal name in poser that the smart prop has listed in the .pp2 file under the smartparent directive.  

Now, if your smartprop is parented to another prop, and you have more than one of these props in a scene, when loaded from the library the smart prop will always attach itself to the first prop that matches the internal name, regardless of whether you have the second prop selected or not.

For example, if you had a prop called "Tree" and a smart prop called "leaves" that added itself to tree, if you have 2 trees in your scene when you load "leaves" from your library it will always attach itself to the first tree it finds, even if you have the 2nd tree selected when loading the smartprop leaves from the library.

I would like to be able to load the smartprop "leaves" for each tree in the scene and have it attach itself accordingly, however as of yet I've been unable to find a way to do this using the smartprop feature.

Has anyone else run into this problem and if so have you found a successful workaround?


SamTherapy ( ) posted Sun, 23 September 2007 at 11:23 AM

Sort of.

I'm not an expert at this but there's a way around it, provided you don't mind saving several versions of the things.

For example, you could save the props Tree and Leaves together and they will load in together next time you select them.  You could also save the bare tree, then the leaves only.

That's not exactly the solution you wanted but it's a workaround.

Coppula eam se non posit acceptera jocularum.

My Store

My Gallery


ockham ( ) posted Sun, 23 September 2007 at 1:54 PM

Python could help with this, but only if you're willing to do the loading through
the script.  For a large number of trees, this batch-process would be worth the trouble;
for one or two, probably not worth it.  (The batch process would have an added
advantage: you could introduce some randomness of size and orientation
in each set of leaves.)

The "obvious" way would be to run the script from the leaves PP2, but 
as far as I know a PP2 can't carry a "pythonStartupScript" command.
(In that case, if it were possible, the script would simply get the currently 
selected figure and force the leaves to be parented to the Trunk of that figure.)

If you set up the leaves as a CR2, they could run a "pythonStartupScript",
but there could be a tricky problem with timing, because the newly loaded
CR2 would become the currently selected figure.

My python page
My ShareCG freebies


Letterworks ( ) posted Sun, 23 September 2007 at 2:54 PM

stepdad, 
Here's something you might try, it's worked for me, but it involves hacking the pp2 file. First you have to give your parent an individual name, like OakTree or what ever. Then pose your smart prop and save it as usual. 

Now open the .pp2 file and locate the "smart parent" command line you'll probably see something like "smartparent prop:1" (I'm not positive of the convention for a prop parented to a prop so I'm guessing here). Replace this witl "smartparent OakTree" or simialr and resave the pp2.
In the case of a smart prop parented to a figuer you'll see somthing for example like "smartparent rHand:1" change the ":1" to the figure name with no number, an examplewould be "smartparent rHand:Victoria4".

when loading the files in Poser load the Parent object first then the smart prop, then the second parent object and the smart prop for it, etc.

I pickup the idea of using figure names from this site, where it's explained better than I can:

http://www.rbtwhiz.com/rbtwhiz_ERC.html#CT

Seems if you leave the number off of the name Poser will add it in the order it;s loaded, at least internally. 

mike


adp001 ( ) posted Sun, 23 September 2007 at 6:41 PM

Editing the pp2 is required. But insert

smartprop $CURRENT

insteed of the props name.




Letterworks ( ) posted Mon, 24 September 2007 at 3:50 PM

adp001

When you say replace the prop's name in the cr2 do you mean replace it at the "name" line in the prop file, or to replace it at the "smartparent" line? For example in the file frament below would you change the line "name Body" or the line "smartparent Part:1"? Thanks for the clarification.

mike

actor BODY:#
{
name BODY
on
bend 1
dynamicsLock 1
hidden 0
addToMenu 1
castsShadow 1
includeInDepthCue 1
useZBuffer 1
smartparent Part: 1


adp001 ( ) posted Mon, 24 September 2007 at 4:15 PM

Sorry. "smartparent", not "smartprop".

actor BODY:#
{
name BODY
on
bend 1
dynamicsLock 1
hidden 0
addToMenu 1
castsShadow 1
includeInDepthCue 1
useZBuffer 1
smartparent $CURRENT




Letterworks ( ) posted Mon, 24 September 2007 at 5:10 PM

Great, I thought that was what you meant but wanted to be sure! Thanks

mike


Stepdad ( ) posted Tue, 25 September 2007 at 3:01 AM

Quote - stepdad, 
Here's something you might try, it's worked for me, but it involves hacking the pp2 file. First you have to give your parent an individual name, like OakTree or what ever. Then pose your smart prop and save it as usual. 

Now open the .pp2 file and locate the "smart parent" command line you'll probably see something like "smartparent prop:1" (I'm not positive of the convention for a prop parented to a prop so I'm guessing here). Replace this witl "smartparent OakTree" or simialr and resave the pp2.
In the case of a smart prop parented to a figuer you'll see somthing for example like "smartparent rHand:1" change the ":1" to the figure name with no number, an examplewould be "smartparent rHand:Victoria4".

when loading the files in Poser load the Parent object first then the smart prop, then the second parent object and the smart prop for it, etc.

I pickup the idea of using figure names from this site, where it's explained better than I can:

http://www.rbtwhiz.com/rbtwhiz_ERC.html#CT

Seems if you leave the number off of the name Poser will add it in the order it;s loaded, at least internally. 

mike

 

Great suggestion, unfortunately the figure (in my example trees) can't be given a unique name in that fashion - I can't really go to in depth on the explanation as to why this is without discussing to many details of the project, something I've promised not to do.. but  just suffice to say that while this workaround would certainly work sadly it won't work for the application I have in mind.

I do appreciate you taking time to make the suggestion however, any and all help is greatly appreciated.


Stepdad ( ) posted Tue, 25 September 2007 at 3:02 AM

Quote - Editing the pp2 is required. But insert

smartprop $CURRENT

insteed of the props name.

 

Interesting.. I'll have to give that a try - but I think it should probably be 

smartparent $CURRENT

if I remember my syntax correctly.  Certainly worth a shot though, I'll see if that does the trick.


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.