XaiJu
everlaster
everlaster

patreon


Expression Randomizer v1.8.0 beta release

Hi, this one's a bit of a random release. (Heh heh.)

A few days ago, as I was working on the promo video for Naturalis, I realized I want the characters in the video to have dynamically changing, natural looking expressions without having to manually animate them. I started using the ExpressionRandomizer_1.7 plugin - created originally by Extraltodeus way back in the day, improved upon by hazmhox and published by Timbo with the FC (free content) license.

It quickly started feeling like the plugin had a ton of potential and a lot of easy pickings - and some not so easy but still worthwhile - as far as bug fixes and usability improvements, so I spent a few days developing such an improved version.

The original plugin can be found here: https://hub.virtamate.com/resources/expression-randomizer-by-extraltodeus.28738/

This improved version will be released by Timbo as an update to that same hub resource in about 1 week. (Hence the author of the var package is also VamTimbo rather than myself.)

This Patreon beta release is pretty much ready for release, but I wanted to give you guys a short exclusive access period. (The license is Questionable, will be updated to FC for the public release.)

I'm also hoping to get some feedback on it - especially the three included presets. Please try it out and tell me if the presets work for you, and let me know if you can think of ways to improve them! 🙏

Improved built-in presets + Usage tips

These are intended to be useful general purpose expressions for use in VAM scenes, but you can very easily build upon them, save your own presets and load those dynamically during a scene's playback. Go wild!

The better morphs you have available, the better results you will get. But the built in morphs are actually pretty good when combined dynamically and randomly.

Use Glance by acidbubbles for realistic eye movement and better blinking: https://hub.virtamate.com/resources/glance-realistic-head-driven-eye-motion.5461/

Randomize the plugin's parameters further with FloatParamRandomizerEE, making the expressions even more dynamic: https://hub.virtamate.com/resources/floatparamrandomizeree.20883/

You can also combine multiple ExpressionRandomizers on the same atom, as long as they're adjusting different morphs.

Change log TL;DR

Besides the above presets, the main improvements are:

Full change log

User presets and preset file saving/loading

Improved UI design and usability

Morph initial states:

Generally the initial states of morphs should be 0 and disabling the plugin's control over morphs should restore that. The earlier version didn't take some situations into account:

Other:

Improved UI performance

Improved randomness, better transitions

Other

Enjoy it!

-everlaster

Expression Randomizer v1.8.0 beta release

Comments

Here's how you can easily catch extreme/ugly expressions in the design phase: 1. set min and max to the same value, e.g. both to 1.00 2. turn off random chances for transitions Now all morphs that are selected get a new target value at every loop, and always adjust to the same value since min and max are equal. (If min and max are different, each morph gets a unique random target value within that range.) The expression you get now is the most extreme possible expression. If this looks ugly, adjust the max value (and bring the min value down with it) and toggle morphs until you're happy. You can also do the same with the min value if you intend to apply negative values on the selected morphs. For most morphs, extreme negative values don't work well since the morphs are designed to be used at positive values. But in theory you can set both min and max to the same negative value and see what the most extreme negative-valued expression is, and again if that looks bad then increase the min value (and bring the max value up with it) and/or select different morphs. With the above method you can pretty easily calibrate the min and max values. Any expressions that you get with randomization between those min and max is going to be less extreme than what you saw. I hope that helps. Related to this, I found a few things that need to be done: - the max slider should auto-adjust to always be >= min, and the min slider should auto-adjust to always be <= max, otherwise the plugin treats min as max and max as min - the Reset used expressions at loop doesn't work for extreme negative values - it sets the target value to 0 at the end of the loop only if the current value is positive

everlaster

Hi everlaster, "simply enable it in the plugin and see what happens", that is not gonna do it for me, since I dont want to sit and wait (and guess, because there is no info about the morphs beeing played) for the specific morph to eventually appear. If i have lets say 20 morphs in my preset, then it could take long for my new morph to be actually applied, and the amount is also a variable to consider. Not to speak that I don't even know what I'm looking for, because I don't know how the added morph is supposed to look. So, you recommend watching the results for about 10min, hoping to catch the moment the morph actually plays? But again, i have no clue if its really this morph I'm seeing, because 1. I don't know the morph 2. the lack of info about the morphs beeing played Also, i want to see it without any other morph applied, since the shown combination is just one of many others. So it won't suffice if only the currently shown expression is playing nicely. I want to see what this specific morph actually does in the range i specified with min and max. Yes, that won't give the full picture of the expressions I'll get, but it's enough to make an estimeted guess. I don't want to just enable some random morphs, inspect them for some time and hope that they play nicely. Because later on, I'll face an ugly grimace ruining the scene. Thats what happened with the original plugin. What am I supposed to do in that case? I have no clue what morph was actually causing this. All I can do is delete the preset and start all over again...

CheesyFX

Hi CheesyFX, Morph sliders were an idea I had as well since they would allow for individually weighting the effect each morph has on the overall expression, and would also allow inverting the effect of a morph by giving it a negative multiplier while other checked morphs would have a positive multiplier. However, I decided to leave all that until later. It'd be a pretty big change in functionality and UI design as well, since sliders take up much more room than toggles, and if we're doing per-morph settings then why not also have min/max per morph and morphing speed per morph. Too much stuff for this release which already blew a bit of proportion relative to what I had in mind when I started! I don't really understand your steps for testing if a morph would fit into a preset, the way you describe it is not how I'd do it. Currently, I think the best way to test if a morph works in an expression is to simply enable it in the plugin and see what happens. Increase the master speed slider so that you get more iterations faster and can validate different states that the morphs can be in more quickly. You can also let the current preset play and go to Female Morphs and adjust different morphs there. Why stop the plugin from playing and reset all the morphs before you go to the morphs tab and test it? If the morphs are reset to initial values, then testing a new morph in the morphs tab doesn't tell you anything since you can't see what it looks like as part of the existing expression. In addition you can freeze the expression at a given point by enabling Manual mode. It won't animate to the next randomized value until you manually trigger the transition. This way you can keep the current morphs in the preset at the current values while you try other morphs (in Female Morphs tab) to see if they'd fit the preset. Re: Play toggle - I don't think it should do anything except play/pause. That's how every play/pause button works everywhere. To reset morphs, click on Select none which unchecks the currently checked morph toggles and sets their values to zero. Since no morphs are now selected, that's practically the same as Play being unchecked, at least until you enable some morphs again. I hope that helped!

everlaster


More Creators