Jump to content

"Academic"question: Racemenu related. Can face/head/etc variables be changed dynamically using nioveride commands? (are they accessible?)


Recommended Posts

Posted (edited)

sorry for the long-winded title. couldn't think of how to condense it and still make sense.

 

Anyway, as the title asks, we know from ABBA and other mods, that some 'morphing' values can be changed dynamically. How about all the other variables we can change via Racemenu? Is it jsut a matter of knowing the correct "name" for a given slider (for a given body type....)? (ex: PregnancyBelly, NippleSize, etc...)

 

edit: reason I ask is that I have a few mods that allow the player to specify which values should be modified by way of their management. I'm just not sure if anyone ever considered values other than butt boobs hips etc. (body values), nor do I have any idea what the appropriate names would be for facial values to even experiment blindly (I already discovered that just condensing Racemenu slider names for body parts doesn't work in most cases, so there must be something more going on with the "correct" names)

 

Edited by anjenthedog
sigh... typos... my bane... did I mention f-ing typos?
Posted

So basically what you're asking is if NiOverride has a way to morph eyebrow height and lip thickness? Outside of expressions and phonemed I'd say no. There doesn't appear to be any sign of non-CBBE and non-XPMSE sliders in the racemenu scripts I have. The interface is most likely between Scaleform and the game engine right now.

Posted

yes, among others (I  thought of it because of eyes actually. Eye dilation (simulated, for skooma), color, size... but yeah lips thickness or mouth width,  whatever... as well as other elements like skeleton adjustments, Maybe involve disease with dynamic morphs...

 

Pipe dreams are fun while they last anyway ;)

Posted
15 minutes ago, anjenthedog said:

yes, among others (I  thought of it because of eyes actually. Eye dilation (simulated, for skooma), color, size... but yeah lips thickness or mouth width,  whatever... as well as other elements like skeleton adjustments, Maybe involve disease with dynamic morphs...

 

Pipe dreams are fun while they last anyway ;)

A morph is a morph. It doesn't matter if it's CBBE or other bodies or if it's for the foot, hands or head. It's related to the actor and not to a specific MEsh or Nif.

So yes, it should work if they're morphs.

 

For example, to set the values:


nioverride.SetBodyMorph(akTarget as objectreference, "here the name of your morph", NIO_KEY, values from 0.00 to 1.00)

 

0.00 = 0%
1.00 =100%
Negative values possible
NIO_KEY = Unique string key (e.g. your mod name)

 

To clear the values:
nioverride.ClearBodyMorph(akTarget as objectreference, "here the name of your morph" NIO_KEY)

Posted (edited)

"A morph is a morph" << that's what I'd think too.

 

Well, I *think they're morphs. At least within the loose frame of what I consider morphing, anyway. It might have a far more specific meaning in skyrim idk. (as in, only for body elements, and only from this prescribed list of body elements)

 

So, if true (a morph is a morph), then that just leaves me to figure out what the "correct" node names are, in order to populate the custom variable name input fields in SL Disparity or other mods that offer player input (direct rather than a selection menu) 

 

is there a method to generating the "correct" names from nifskope or racemenu preset data? (or a list of known names)

Edited by anjenthedog
Posted

If Andy14 is correct then I'd expect to see morph names in the racemenu swf replacer for the "RaceSex Menu" -menu. I think I have a flash decompiler around here somewhere, guess I go poke around a bit.

Posted
16 minutes ago, traison said:

If Andy14 is correct then I'd expect to see morph names in the racemenu swf replacer for the "RaceSex Menu" -menu. I think I have a flash decompiler around here somewhere, guess I go poke around a bit.

Believe me, it's true.😉

I have implemented my entire body system (my own body) with it.
Whether it's high heels - feet (including stockings) adapt to the shoe and are not replaced. Corsets influence the waist and bars influence the cleavage. And all without replacing the body, the hands or the feet. As in real life, the body is only dressed and not replaced.

Posted (edited)
4 minutes ago, Andy14 said:

Believe me, it's true.😉

I have implemented my entire body system (my own body) with it.
Whether it's high heels - feet (including stockings) adapt to the shoe and are not replaced. Corsets influence the waist and bars influence the cleavage. And all without replacing the body, the hands or the feet. As in real life, the body is only dressed and not replaced.

 

You're talking solely about body morphs there; those added by BodySlide and RaceMenu. The title of this thread is talking about heads and other things. I suspect what the OP is asking is whether or not you can make a character have a huge nose with NiOverride. I have never seen anyone utilize any morphs outside the BS/RM ecosystem from Papyrus. As far as I know it can't be done.

 

Still haven't found anything in the flash files. Only seen what looked like calls to SKSE to get slider data in the RaceMenu replacement menu. Currently looking at the vanilla menu, hoping it will be simpler. Flash (IMHO) is a mess.

Edited by traison
Posted
37 minutes ago, anjenthedog said:

"A morph is a morph" << that's what I'd think too.

 

Well, I *think they're morphs. At least within the loose frame of what I consider morphing, anyway. It might have a far more specific meaning in skyrim idk. (as in, only for body elements, and only from this prescribed list of body elements)

 

So, if true (a morph is a morph), then that just leaves me to figure out what the "correct" node names are, in order to populate the custom variable name input fields in SL Disparity or other mods that offer player input (direct rather than a selection menu) 

 

is there a method to generating the "correct" names from nifskope or racemenu preset data? (or a list of known names)

The term morph is the same in Skyrim as in Blender or 3ds. A movement of vertices on the x, y and z axes. So a mesh deformation that is not based on the skin (i.e. bones)

You could try loading the tri for head in outfitstudio. Then you should have access to the morphs and the names. There are also race-specific morphs.

PS: I don't think pupil sizes are supported...

Posted (edited)
9 minutes ago, traison said:

 

You're talking solely about body morphs there; those added by BodySlide and RaceMenu. The title of this thread is talking about heads and other things. I suspect what the OP is asking is whether or not you can make a character have a huge nose with NiOverride. I have never seen anyone utilize any morphs outside the BS/RM ecosystem from Papyrus. As far as I know it can't be done.

 

Still haven't found anything in the flash files. Only seen what looked like calls to SKSE to get slider data in the RaceMenu replacement menu. Currently looking at the vanilla menu, hoping it will be simpler. Flash (IMHO) is a mess.

I already wrote in the first post that I am NOT only talking about body mesh.
The function is in the Papyrus script (nioverride.psc) and not in Flash.
 

Edited by Andy14
Posted
1 minute ago, Andy14 said:

You could try loading the tri for head in outfitstudio. Then you should have access to the morphs and the names. There are also race-specific morphs.

PS: I don't think pupil sizes are supported...

Thanks for the pointer to head/facial node names. Cool, I didn't realize you could load tri files into any 'user-level' app. Been wondering about that for a while too. two birds one stone answer ;)
 

Yeah I didn't expect to get direct dilation adjustments. For pupil size, I'd use eye selection and some pre-morphed dilation variants (already did that a while ago on a lark after encountering a skooma dealer and laughing about stoners, but never figured out how to do anything "immersive" with them)

Posted (edited)
42 minutes ago, Andy14 said:

You could try loading the tri for head in outfitstudio.

 

Alright, cool idea, didn't know this worked. However I still can't make my character's nose big with those. The sliders I get are named literally the same as expressions and phonemes. What's the morph name for the "Nose Tip Width" -slider?

 

 

Edit: The Nose Tip Width slider's name is in the translation files as:

$ECE_NoseTipWidth	Nose Tip Width

 

However the tools I'm using to search with find no mention of $ECE_NoseTipWidth (or part of it) in any file. Not in the decompiled swf files and not in any RaceMenu file as far as Notepad++ can see. I realize this could be a simple encoding issue though so I may need a more dedicated string searching utility. strings.exe from Sysinternals might work. Trying that next.

 

Edit again: Oh wait I may have found something. There's multiple head tri files...

Edited by traison
Posted
17 minutes ago, traison said:

 

Alright, cool idea, didn't know this worked. However I still can't make my character's nose big with those. The sliders I get are named literally the same as expressions and phonemes. What's the morph name for the "Nose Tip Width" -slider?

 

 

Edit: The Nose Tip Width slider's name is in the translation files as:

$ECE_NoseTipWidth	Nose Tip Width

 

However the tools I'm using to search with find no mention of $ECE_NoseTipWidth (or part of it) in any file. Not in the decompiled swf files and not in any RaceMenu file as far as Notepad++ can see. I realize this could be a simple encoding issue though so I may need a more dedicated string searching utility. strings.exe from Sysinternals might work. Trying that next.

The function is in the Papyrus script - nioverride.psc

Posted (edited)

Found more sliders. There's multiple head tri files. This one for instance has a nose width slider (it's not the nosetipwidth slider Edit: it might be the tip width slider):

 

meshes\actors\character\facegenmorphs\morphs\ece\eceheadfemale.tri

 

So based on this I suspect there's even more of these.

 

Whether these work directly from Papyrus or not I do not know, never tried. I however will soon, as I've been wanting my character to go cross-eyed during scenes so that goes on the todo list again. If you want to test the nose width morph, this should be its name:

 

"ece_NoseWide"

Edited by traison
Posted (edited)

Hmm. I see. "head" values are all handled-by/condensed-to the expression sliders in the tri file apparently. (look right, look up, happy, sad, surprised, etc)

 

while I was at it, I also looked at some of the other tri files now I know how to examine their contents. Other files seem to hold the values I'm looking for. (example doesn't show them just shows the breadth of adjustments available... might even be useful for static custom facial asymmetry adjustments)

Spoiler

rabbit_hole_tri-file.jpg.b24837ebee57e4e26d673b6ad1888fd4.jpg

 

 

Edited by anjenthedog
Posted
8 minutes ago, anjenthedog said:

Hmm. I see. "head" values are all handled-by/condensed-to the expression sliders in the tri file apparently. (look right, look up, happy, sad, surprised, etc)

 

while I was at it, I also looked at some of the other tri files now I know how to examine their contents. Other files seem to hold the values I'm looking for.

  Reveal hidden contents

rabbit_hole_tri-file.jpg.b24837ebee57e4e26d673b6ad1888fd4.jpg

 

 

Just because the morphs are already in use, they can still be used by other mods in addition.
There is a key (NIO_KEY) in the script function for this. This allows the morph to be used without affecting other mods.
For example, you can use the Belly Morph in Racemenu and in a pregnancy mod if a different key is used in each case. In LE, the key for Racemenu is "RSMLegacy".

Posted (edited)
13 minutes ago, Andy14 said:

Just because the morphs are already in use, they can still be used by other mods in addition.

 

Yes, sort of. You need to take into consideration the setting in skee64.ini:

; Determines key merging method (when there are two body morph keys for the same morph)
; 0 - Additive
; 1 - Averaged
; 2 - Maximum
iBodyMorphMode=0

 

It is not 0 by default. I changed mine to 0, because it allows me to do a part of what FHU and/or SLIF do, except without the bloat of Papyrus. My own "SLIF" and mods depend on this setting being correct. You may get funny values results if its something other than 0.

 

Edit: Also, thank you @Andy14. If these morphs are indeed usable from Papyrus then this whole thing opens up a new world in expressions and who knows what else.

Edited by traison
Posted
33 minutes ago, Andy14 said:

The function is in the Papyrus script - nioverride.psc

thanks. (and tg I archive everything, including now "obsolete" mods like NiOverride)... At first look, that's gonna take me some time to chew through, since my programming skills are more rust than metal at this point, but I'll give it a go.

 

Posted (edited)

Here's a list of all morph names extracted from all RaceMenu 0.4.16 tri files. Use notepad or something to search it, there's a lot of them.

 

Edit: Not seeing my Iris Spread morph in here though. Probably still missing something, or it has a different name :classic_sad:

 

Edit again: Added a list of only morphs, no duplicates. More useful if you're only interested in what morps exist, rather than where they are. (its the smaller one, obviously)

 

all_racemenu_morphs_extracted_from_tri_files.txt

all_racemenu_morphs_extracted_from_tri_files_uniques_only.txt

Edited by traison
Posted

These morphs can't be used from Papyrus unfortunately. No effect on characters face from using the code here:

 

NiOverride.SetBodyMorph(target, "RM_NoseLong", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "CME_EyesBig", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "RM_LipMoveOut", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "EXPR_Aah", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "BreastsNewSH", "newmorph.test", 1.0)
NiOverride.UpdateModelWeight(target)

 

Seems like this was a waste of time.

Posted
On 9/3/2024 at 10:35 PM, traison said:

These morphs can't be used from Papyrus unfortunately. No effect on characters face from using the code here:

 

NiOverride.SetBodyMorph(target, "RM_NoseLong", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "CME_EyesBig", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "RM_LipMoveOut", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "EXPR_Aah", "newmorph.test", 1.0)
NiOverride.SetBodyMorph(target, "BreastsNewSH", "newmorph.test", 1.0)
NiOverride.UpdateModelWeight(target)

 

Seems like this was a waste of time.

How is Papyrus supposed to use Morphs if they aren't even available? The Tri must be loaded in the actor at the time.
All you need to do is enter the Tri as NiStringExtra in a Nif. For example, in body.nif etc.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...