Welcome
Ladies and Gents:

These forums are now closed and registration disabled.

Please join us at our new forum on Proboards. Our hope is that these new forums are more stable, provide more and better features, and allow continuation of the project forums in a safer, more secure, long term environment.

me3explorer.proboards.com

--The ME3Explorer Team

SFXStuntActor Research and NPC Editing

Semi-technical area to discuss content modding research and discoveries. Technical information necessary for coding tools should be posted in Technical Research on the Coders board.

SFXStuntActor Research and NPC Editing

Postby giftfish » 15 May 2016, 19:30

I've been wanting to take time and trudge through this stuff for awhile now. I'm about half there, so I thought I'd share what I have so far.

Obviously I've figured out how to edit NPCs to a certain extent, as evidenced by my work on Aethyta and Kelly. However, edits to some properties still won't "take", and I don't know why. For clarity, here are the types of properties I'm talking about:

Spoiler:
Image
Image

During the process of trying to figure out exactly what to edit (not nearly as intuitive as you'd think), I encountered two things that I continue to find absolutely confounding:

    1. Repetition of Properties.
    In the flow chart below, you'll see there are 10 sets of objects that have almost identical properties (like in the screencaps above). Yet, edits to most don't work in game. There is some type of heirarchy going on, which is what I hoped the flow chart might help reveal, since the situation is so complex.

    2. BioWare doesn't seem to like to use the "Archetypes" inside files.
    In the flow chart below you'll see that I've mapped out every link for Aethyta's StuntActor Archetype, which is export 214. This is the StuntActor that her POI references, therefore, it makes sense it would be the one the game uses. It isn't. Instead, the kismet for her convos references a more generic SFXStuntActor, 9404. Lovely, eh?

    This (unnecessary?) duplication has the effect of creating -- what seems to be -- an amazing amount of redundancy in exports. From what I can tell right now, 9404 and 214 reference duplicate sets of objects. So, I'm either totally missing something (entirely possible), or... well, I don't know.

To try to figure out what was going on, I used draw.io to come up with one hell of a massive flow chart. Note: Use the option to "Open With > draw.io". Otherwise, it'll be too small.

For now, I've only mapped out all links to the 214 Archetype, since that's the actor you'd expect would control her appearance. Edits to almost any vector/scalar property in the pink objects on this flow chart have no affect in game. I can say for certain that the game is using the BioMorphFace object, export 421, to an extent, b/c I found edits to the FinalSkeleton properties worked. However, edits to MorphFeatures did not. This indicates there is some type of interaction between the 214 Archetype StuntActor, and the 9404 Generic StuntActor. It's almost like the game is using bits of both. But why and how, I have no idea.

I still need to replicate the map now with 9404 to see how that fits in (not a big deal, as I can modify a copy of the same chart).

Even for folks not interested in NPC Editing, there might be some useful info in the chart.

I'd love to hear what other folks think, and if anyone else has looked into this at all :)

Thanks!

P.S. FYI, 9404 points to the highlighted objects in the cap below. Edits to these work... for the most part. These (and obj 421) are what I've edited for Aethyta. They'll be visible in the next flow chart.
Spoiler:
Image


----------------------

ASARI APPEARANCE PROPERTIES
Asari aren't too bad to edit. Overall, they are easier than humans, as there are fewer properties due to the absence of hair. Makeup is also more streamlined.

Spoiler:
Addn -- "Additions". Facial patterns/textures (not tattoos), such as the circles that appear on the jawline or along the scalp.
  • ASA_HED_Addn_Color -- color of face pattern
  • ASA_HED_Addn_Color_Scalar -- opacity of face pattern color
  • ASA_HED_Addn_Mask_Vector -- Controls turning the pattern on/off in different areas of the face. Set all to 0 for no pattern. Change different parameters to 1 to enable showing the pattern along the jaw, scalp, etc.
  • ASA_HED_SPwr_Add_Scalar -- amount of brightness/reflection of pattern
  • HED_Spec_Add_Vector -- color reflected by face pattern when illuminated by light source

Diffuse -- Affects the center of the face (think asari in ME1/2)

  • ASA_HED_Diffuse_02_Color -- center face color
  • ASA_HED_Diffuse_02_Color_Scalar -- color opacity

Eyes -- Parameters for iris and sclera.

  • EYE_Iris_Color_Vector -- Iris color.
  • EYE_White_Color_Vector -- Sclera color.

Head -- Related to overall head.
  • ASA_HED_SPwr_Multiplier_Scalar -- Amount of light reflection of head.

Makeup -- makeup for eyes and lips

  • ASA_HED_MakeupBlender -- Controls the visibility of makeup colors, enabling you to turn off shades of R/G/B. Needs adjusting to see changes in lip color.
  • ASA_HED_MakeupEyes -- eyeshadow color vector; forms ring around the eye lids
  • ASA_HED_Makeup_Lips -- lip color vector
  • ASA_HED_Makeup_switch_scalar -- Weird property. Affects color and density of makeup. Needs further investigation.
  • ASA_HED_Lip_Gloss_Scalar -- lip shine intensity

Skintone -- Overall skin color. Vector only property. Face and body colors are edited in separate objects.

Tattoos -- Appearance of head tattoo. All information below is logical, but tentative, as I didn't need to mess with these for Aethyta.

  • ASA_HED_Tatt_Blender_Scalar -- Probably works like the make up blender, controlling visibility of tattoo colors.
  • ASA_HED_Tatt_Color -- ?
  • ASA_HED_Tatt_01 -- Probably turns off/on the display of the tattoo, similar to the Addn mask vector.
  • ASA_Tatt_01_Vector -- tattoo #1 color
  • ASA_HED_Tatt_01_Scalar -- tattoo #1 opacity
  • ASA_HED_Tatt_02 -- Probably turns off/on the display of the tattoo, similar to the Addn mask vector.
  • ASA_HED_Tatt_02_Scalar -- tattoo #2 opacity
  • ASA_HED_Tatt_02_Vector -- tattoo #2 color
  • ASA_HED_TClr_Tint -- Possibly the overall tint of tattoos. Untested.
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Re: SFXStuntActor Research and NPC Editing

Postby giftfish » 15 May 2016, 19:36

Ack, doesn't look like opening draw.io via the link above is working.

Looks like you can download the XML, and then open it directly on draw.io. I'll see if I can make Google display the "Open With" via the link. Might be some menu option I haven't configured.

EDIT: Doesn't look like I can configure it. If I'm missing something and anyone happens to know, just let me know. For now, just download the XML and open on draw.io directly :)
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Re: SFXStuntActor Research and NPC Editing

Postby CreeperLava » 15 May 2016, 19:44

Open with draw.io worked for me in google drive. I don't understand much of it, but it looks like you're having a good time^^.
User avatar
CreeperLava
User
 
Posts: 844
Joined: 07 Feb 2015, 21:52
Has thanked: 119 time
Have thanks: 83 time

Re: SFXStuntActor Research and NPC Editing

Postby giftfish » 15 May 2016, 19:49

CreeperLava wrote:Open with draw.io worked for me in google drive. I don't understand much of it, but it looks like you're having a good time^^.


LOL. "A good time". Not quite, but it was the best way to try to figure out what's going on.

Are you logged into a Google account right now, Creeper? That might be why. When I log out of mine, I can no longer access it; it's just a read-only image on Google's page.
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Re: SFXStuntActor Research and NPC Editing

Postby CreeperLava » 15 May 2016, 19:52

I am logged in, yes.
User avatar
CreeperLava
User
 
Posts: 844
Joined: 07 Feb 2015, 21:52
Has thanked: 119 time
Have thanks: 83 time

Re: SFXStuntActor Research and NPC Editing

Postby giftfish » 15 May 2016, 20:28

CreeperLava wrote:I am logged in, yes.

That must be why. Do you also have the draw.io addon installed into your Google Docs?
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Re: SFXStuntActor Research and NPC Editing

Postby SirCxyrtyx » 15 May 2016, 21:50

214 isn't referenced by the Kismet because it's an Archetype. Archetypes are sort of like templates, they define the details something but aren't used directly. 9404 is the SFXStuntActor that's actually in the level. If you look at the Info tab for 9404 in the Package Editor, you'll see that its Archetype is citprs_aethyta, export 214. And most of the children of 9404 are Archetype linked to the children of 214. What this means is that 9404 will use 214's properties as it's defaults. If it has a property of the same name, it will override the one from 214.

One more thing you should take note of is that 214 also has an Archetype link, to 183 Asari_ARC_MTR_Conversation, which is the generic Asari Archetype which al Asari SFXStuntActors are Archetype to as far as I can tell. Archetype links are very import to the functionality of the game, and it's always a good idea to check for them.

(and the open with draw.io thing worked fine for me. I was logged in to Google, and had never used draw.io before.)
User avatar
SirCxyrtyx
Toolset Lead
 
Posts: 345
Joined: 16 Apr 2014, 00:20
Has thanked: 28 time
Have thanks: 288 time

Re: SFXStuntActor Research and NPC Editing

Postby CreeperLava » 15 May 2016, 22:17

giftfish wrote:That must be why. Do you also have the draw.io addon installed into your Google Docs?

Same as Sir, I don't have that addon installed.
User avatar
CreeperLava
User
 
Posts: 844
Joined: 07 Feb 2015, 21:52
Has thanked: 119 time
Have thanks: 83 time

Re: SFXStuntActor Research and NPC Editing

Postby Kinkojiro » 15 May 2016, 23:39

The way to think of archetypes is how Bioware uses them. Essentially each object has a number of properties, the default properties are set in the game engine/sfxgame so that is often the ultimate archetype.

From that default then bioware will create a default set for a particular race or gender (e.g. Male Turian or in this case Asari). Then they will create specific types whose archetype is the race/gender. Finally the individual characters will be created. For squadmates and other characters that get re-used in multiple occasions under different lighting etc the highest archetype will contain virtually all the details.

When Bioware builds the game, there are lots of devs working with the models. But the archetypes will generally be determined prior to creation, so if the designer wants to create a generic npc human actor he just drags and drops generic human archetype resource, then male/female and whatever the specific details of the skeletonmesh they are using (eg HMF_CTHb archetype - female wearing a dress). Finally they create the actor in the level, link that to the archetype and can make adjustments according to the lighting situation etc., these are generally very minor.

Then let's say Jack gets changed - the art department re-creates her hair or something. From that point only one level of the archetype needs to be adjusted and likely bioware has systems which roll out the change across the entire game - just the archetype. The level designer doesn't need to do anything as they are only playing around with the actor in the level. The resources (textures, meshes etc) and archetypes that come from them are the responsibility of the art department whilst the stuff underneath the level is the responsibility of the designer. By keeping this distinction it makes managing the work a bit easier.

Now think that something gets changed so an entire racial group gets changed (obviously less likely in ME3 but probably did happen in ME1). They decide to make Turians taller or something. They just change the general mesh and the mesh the archetype refers to and this impacts all the archetypes with the Turian set as an archetype. This is why they use multiple levels of archetypes.

SFXStuntActors are made even more complicated because each has multiple components (Skeleton Mesh components for the head/body/face/headgear, default animations, Talk modules, wrinkle modules, lighting, interaction event modules etc etc). Each of these usually has its own archetype in the stuntactor archetype etc.

BioHeadMorphs
This is where it gets tricky. The object you are looking at is a bioheadmorph. That adjusts the standard archetype very slightly both the mesh (e.g. makes a Turian's fringe longer, or human face) and the materials (changes colors etc) for the head of a certain character.

I have found that editing it is a bit hit and miss. It appears some things are overwritten by the materials used in the level actor or maybe even the archetype. Certainly editing the skintone in my limited experience is generally done via the materials in the ultimate actor. I am guessing here but I think that the final actors materials can override the headmorph but only have a comparatively limited set of variables to work with.
User avatar
Kinkojiro
Modder
 
Posts: 578
Joined: 02 Dec 2013, 04:14
Has thanked: 233 time
Have thanks: 249 time

Re: SFXStuntActor Research and NPC Editing

Postby giftfish » 16 May 2016, 14:37

SirCxyrtyx wrote:214 isn't referenced by the Kismet because it's an Archetype. Archetypes are sort of like templates, they define the details something but aren't used directly.

This makes perfect sense. The concept of an "asari" template that Aethyta -- and all asari are built on. It's what I would expect. What throws me off is the naming convention. You'd expect it the initial template to be "Archetypes.Asari", and then the actual Aethyta-specific stunt actor to be "SFXStuntactor.citprs_aethyta." Uh... not that BW is known for doing what we expect.

SirCxyrtyx wrote:9404 is the SFXStuntActor that's actually in the level. If you look at the Info tab for 9404 in the Package Editor, you'll see that its Archetype is citprs_aethyta, export 214. And most of the children of 9404 are Archetype linked to the children of 214. What this means is that 9404 will use 214's properties as it's defaults. If it has a property of the same name, it will override the one from 214.

This I completely missed. Never occurs to me to look at the Info tab in PackEd to figure out how things work. Normally, I only ever need to look at it to verify indicies when cloning in new objects. Okay, so "archetypes" are a thing. I knew they were *something* important that functioned at a relatively basic level, but obviously wasn't clear on the details.

Alright, so I now see that 9404 and it's various direct children -- in some cases -- references 214 and its children as archetypes. There's a couple things that don't make sense, though.

1. 9469, a SkeletalMeshComponent references a MaterialInstanceConstant export (8021) as an archetype. These are different classes and have different properties. This happens in several other instances in both 214/9469/their children. Why would different classes be linked as archetypes? Same classes makes sense, different ones seems weird.

2. 8023/8024/8025 are children of 9404, and are essentially the counterparts of 7974/7975/7976. Edits to the former work in game, and the latter do not. Yet, the trios themselves, aren't directly linked as archetypes. 9472 references 8023 as an archetype (another cross-class thing), but the other two are omitted. How does the game know to use 8023/8024/8025 rather than 7974/7975/7976, then?


SirCxyrtyx wrote:One more thing you should take note of is that 214 also has an Archetype link, to 183 Asari_ARC_MTR_Conversation, which is the generic Asari Archetype which al Asari SFXStuntActors are Archetype to as far as I can tell. Archetype links are very import to the functionality of the game, and it's always a good idea to check for them.

This ties into my first response above. Alright, so that means the hierarchy goes like this:

BIOG_ASA_Appr_L.Asari_ARC_MTR_Conversation (183) -- template for all asari in the game
BioChar_CitHub.Archetypes.citprs_aethyta (214) -- template for Aethyta on the Citadel
TheWorld.PersistentLevel.SFXStuntActor (9404) -- template for Aethyta on the Presidium level (necessary for specific lighting, etc)

This would all be much less confusing if BW did the following:

1. Provided character-specific names and not just "StuntActor" -_-
2. Only replicated the exports that actually *changed*, rather than replicating the entire stunt actor. I guess if lighting is based on the stunt actor, you need the stunt actor in the level, though. And, you can't have the stunt actor without *all* its properties.

Balls.

Okay, this now explains the repetition of objects and, more importantly, properties and values. It's not just that 9404 "uses" 214's as a default. It's that it literally *is given* -- via some automated mechanism in Unreal -- all the same properties and values that exist in 214. In other words, "Skintone" and its vector values appear in both places. If the value is different in the 9404 series of objects, then those are favored over the 214 series.

It still doesn't explain a couple things, though, but I'll get to that in my next post, where I also respond to Kinko :)

SirCxyrtyx wrote:(and the open with draw.io thing worked fine for me. I was logged in to Google, and had never used draw.io before.)

Ah, great. Thanks for letting me know. You too, Creeper.
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Next

Return to Modders' Research

Who is online

Users browsing this forum: No registered users and 0 guests

suspicion-preferred