Tue, Apr 16, 4:09 PM CDT

Welcome to the Poser 12 - Feature Requests Forum

Forum Moderators: nerd

(Last Updated: 2023 Sep 06 11:53 am)

Would you like to tell the Poser 12 Development team something you would like to see added to Poser 12? Or a tool that already exist be improved upon? Tell us here!


PLEASE post a NEW thread for every item. Do not post on an on-going thread/conversation or your request will be missed!



Subject: Spawn Morphs Set Limits Set Interpolation To Linear Dialogue.


JAFO ( ) posted Thu, 01 September 2022 at 10:00 AM · edited Tue, 16 April 2024 at 11:49 AM

It would be great if when you spawn a morph the dialogue box would include a limits tab, preferably defaulting to min 0 and max 1. Would also be great if instead of "Morph" as default title "frame#' would be an option.

The reason for this request is that I do a shipload of cloth sims and the results are nearly always too hyper-active for my needs. I often add  key-frames  and spawn morphs at regular intervals (matching the character they're parented to) and delete the simulation. Its a real PITA to rename and set limits on several hundred morphs, as you may imagine. better still would be a script that does all this automatically....LOL.

Thanks for consideration.

I notice in the latest release you've eliminated the duplicate frames from saved renders when animating, YOU GUYS ARE AWESOME!!!.

Y'all have a great day.


JAFO ( ) posted Thu, 01 September 2022 at 10:25 AM

Oh BTW, what happened to the ability to spawn morphs on strand hair? I miss that.

Y'all have a great day.


RedPhantom ( ) posted Thu, 01 September 2022 at 11:44 AM
Forum Moderator

The ability to morph strand hair disappeared with poser 8. I was disappointed to lose that 


Available on Amazon for the Kindle E-Reader Monster of the North and The Shimmering Mage

Today I break my own personal record for the number of days for being alive.
Check out my store here or my free stuff here
I use Poser 13 and win 10


Y-Phil ( ) posted Thu, 01 September 2022 at 12:26 PM · edited Thu, 01 September 2022 at 12:31 PM
Online Now!

I have absolutely no experience with the *Spawn Morph" tool, but clearly, in Python, an object such as Poser's default cube or a hip have a function called SpeanTarget("Such_a_name")

So that, if the object is already selected, something like this may help you

obj = poser.Scene().CurrentActor()
for i in range(100): 
    name = f"Frame{i:03}"
    obj.SpawnTarget(name)
    sni = obj.Parameter(name)
    sni.SetMinValue(0)
    sni.SetMaxValue(1)


6U9xYk3WrdrUIQ8BA7oqt4K7kywfpEJ1krVsyUyV.png

PhYl.


Win10 on i7 8700K@4.3Ghz, 64Gb, Asus TUF Gaming RTX 4070 OC Edition, 2x 2Tb ssd + 6+4Tb hd  + 1x 8Tb hd + 1 10T NAS, Poser 11, Poser 12  and now Poser 13 


JAFO ( ) posted Sat, 10 September 2022 at 5:46 PM

Thank you Y-Phil.... That almost works, only problem is that for a 540f animation I get a list of 540 morphs. Is there any way you could make the script spawn a morph on the current frame only with the current frame name with the same parameters? This way I could create keys at intervals and step through those keys (tab) and spawn morphs(I use shortcut 'M'). You may wonder why this is necessary and important to me: By adding morphs at intervals that match the underlying figure I can quickly and easily re-time animation(timing is everything) without having to take the time to re-simulate the cloth (also all but eliminates  inter-frame flicker).

Sorry for the delayed reply...Life y-know... Again I appreciate your efforts.

Y'all have a great day.


Y-Phil ( ) posted Sun, 11 September 2022 at 4:15 AM · edited Sun, 11 September 2022 at 4:16 AM
Online Now!

Sorry if I didn't understood correctly your explanations.
This one should do the trick:

scene = poser.Scene()
obj = scene.CurrentActor()
morph_name = f"Frame{(scene.Frame()+1):03}"
sni = obj.Parameter(morph_name)
if not sni: obj.SpawnTarget(morph_name)
sni = obj.Parameter(morph_name)
if sni:
sni.SetMinValue(0)
sni.SetMaxValue(1)

And if you have more than 999 frame or if you would like to change the number of 0': replace the "03" part 😊 
This version handles the fact that the morph may be already present.

PhYl.


Win10 on i7 8700K@4.3Ghz, 64Gb, Asus TUF Gaming RTX 4070 OC Edition, 2x 2Tb ssd + 6+4Tb hd  + 1x 8Tb hd + 1 10T NAS, Poser 11, Poser 12  and now Poser 13 


JAFO ( ) posted Sun, 11 September 2022 at 4:16 PM

OMG Y-Phil its exactly what I needed. You've saved me many-many hours of work. I can't over-express my gratitude for your contribution.

I can now create  animated characters with pre-solved cloth ready to be dropped into any scene (only lacking the transforms) a major speedup to my workflow. I did a test and it works perfectly. If only we could do the same with dynamic hair....

I don't understand this part of your post "And if you have more than 999 frame or if you would like to change the number of 0': replace the "03" part 😊"...Replace the "03" part with what? Sorry I'm Python illiterate...

Y'all have a great day.


Y-Phil ( ) posted Sun, 11 September 2022 at 4:30 PM
Online Now!

I'm always glad to be of service 😄

For the Python part: the name of an object or a property is a list of letters+digits+symbols, what we call a string.
A counter, for example the number of the current frame, is... a number, not a string.
So to make the number appear in a string, say the name of a spawned morph for example, there is an operation that kind of insert the number in a string. Most of the time, we like to format it, so that it remains coherent in a list of morphs:
Frame01
Frame02
...
Frame99

What tells Python how to transform, and format the number in a string is the following part: 

f"Frame{(scene.Frame()+1):03}"

":" is where the format instruction start, "0" to put 0 in front in case there are not enough digits, "3" the number of digits: "Frame001" to "Frame999", the next will continue with "Frame1000" but that'll be four digits, not three.

End of the class, you may return to.. Poser 😁

PhYl.


Win10 on i7 8700K@4.3Ghz, 64Gb, Asus TUF Gaming RTX 4070 OC Edition, 2x 2Tb ssd + 6+4Tb hd  + 1x 8Tb hd + 1 10T NAS, Poser 11, Poser 12  and now Poser 13 


JAFO ( ) posted Thu, 15 September 2022 at 11:17 AM · edited Thu, 15 September 2022 at 11:18 AM

I added a comment thanking @Y-Phil again 3 days ago but for some reason it didn't post. Not the first time this has happened, I've added several lengthy posts that haven't  posted... Wonder whats up with that?

Again thank you Y-Phil for this very useful and much needed tool...

Y'all have a great day.


JAFO ( ) posted Thu, 15 September 2022 at 11:43 AM · edited Thu, 15 September 2022 at 11:47 AM

@Y-Phil

 Another tool you might give some thought to is to copy transforms (translation/rotation only) from the hip actor to the body actor, then reset hip actor transforms to zero (hip and body actors already share the same origin). Unlike the previous example this would need to be done on every frame along the timeline.

This would be useful for nearly all .bvh files that use the hip as the root, thereby making them more compatible with most programs.

Thanks again.

Y'all have a great day.


Y-Phil ( ) posted Thu, 15 September 2022 at 1:10 PM
Online Now!

JAFO

If I understood correctly your needs, the script looks like this:

scene = poser.Scene()
parameters = ['xtran', 'ytran', 'ztran', 'xrot', 'yrot', 'zrot']
fig = scene.CurrentFigure()
source = fig.Actor('Hip')
dest = fig.RootActor()
for param in parameters:
dest.InternalParameter(param).SetValue(source.InternalParameter(param).Value())
source.InternalParameter(param).SetValue(0.0)
scene.Draw()

I have tested it with LaFemme, l'Homme, Aiko3, Terai Yuki, Victoria4, the Saha's and one Vic4 cloth.

For Antonia it should be updated to use its Waist instead of its Hip.


PhYl.


Win10 on i7 8700K@4.3Ghz, 64Gb, Asus TUF Gaming RTX 4070 OC Edition, 2x 2Tb ssd + 6+4Tb hd  + 1x 8Tb hd + 1 10T NAS, Poser 11, Poser 12  and now Poser 13 


JAFO ( ) posted Thu, 15 September 2022 at 3:00 PM

WOW dude you are a blend between SUPERMAN and The FLASH!

I stand in awe. I've begged for these scripts for years with no help, here you accomplish these tasks in what seems like seconds.

You really need to post these scripts in the Poser forum where everyone can see them, very few browse this section.

The only thing I find not working properly is the first frame is offset to zero... not a big deal, I just copy 2nd frame to first.

Thank you so much for doing this, when this goes public hundreds (Thousands even)  will immediately benefit from your efforts. Thanks again.

Y'all have a great day.


JAFO ( ) posted Thu, 15 September 2022 at 4:03 PM

@Y-Phil, I sent you a PM.

Y'all have a great day.


Y-Phil ( ) posted Thu, 15 September 2022 at 4:22 PM
Online Now!

JAFO posted at 3:00 PM Thu, 15 September 2022 - #4444529

WOW dude you are a blend between SUPERMAN and The FLASH!

I stand in awe. I've begged for these scripts for years with no help, here you accomplish these tasks in what seems like seconds.

You really need to post these scripts in the Poser forum where everyone can see them, very few browse this section.

The only thing I find not working properly is the first frame is offset to zero... not a big deal, I just copy 2nd frame to first.

Thank you so much for doing this, when this goes public hundreds (Thousands even)  will immediately benefit from your efforts. Thanks again.

Do you mean that it should not reset the hip if we're in the first frame?


PhYl.


Win10 on i7 8700K@4.3Ghz, 64Gb, Asus TUF Gaming RTX 4070 OC Edition, 2x 2Tb ssd + 6+4Tb hd  + 1x 8Tb hd + 1 10T NAS, Poser 11, Poser 12  and now Poser 13 


JAFO ( ) posted Thu, 15 September 2022 at 7:21 PM

Please don't take my replies as being nit-picky, not at all, I'm perfectly happy with any result...

I did a few more tests:

"Do you mean that it should not reset the hip if we're in the first frame?"

No...Its only resetting the hip and  transferring coordinates to the body on frame 1, not all the frames....the offset of the first frame was just an illusion, having all frames offset a consistent amount would be fine, .bvh world space is nearly always going to be incorrect, One may normally re-position the figure by moving the 'body' where you need it,  but transferring coordinates to the body eliminates that option...  There's another method (adding figure to a Group then translating the group) that can easily correct that. You can remove the figure from the group later if you so desire and the coordinates are re-calculated(coordinates of the group are added to body coordinates) to retain current position.

I resampled the keyframes setting interval to 5 then ran the script on every keyframe and everything worked out correctly. If that's the best we can do its still a giant leap in the right direction, but having it reset all frames would be ideal.

Should the 'body' or the 'hip' be selected as the current actor when running the script? Does it make a difference? I see no change either way.

Thanks again.

Y'all have a great day.


Y-Phil ( ) posted Sun, 18 September 2022 at 2:29 PM
Online Now!

"but having it reset all frames would be ideal."
Well, I'm not used to do animations, the last was on my old youtube account, 11 years ago lol. So that I'm not sure to understand if I can help you more on this, probably... lol

And No: you don't need to select a specific part of the body: any part will be ok as on the third line, I am selecting the current figure, directly, so that I can find immediately the Body (fifth line)

PhYl.


Win10 on i7 8700K@4.3Ghz, 64Gb, Asus TUF Gaming RTX 4070 OC Edition, 2x 2Tb ssd + 6+4Tb hd  + 1x 8Tb hd + 1 10T NAS, Poser 11, Poser 12  and now Poser 13 


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.