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

Research | Animcutscenes + Matinee 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.

Re: Research | Animcutscenes + Matinee Editing

Postby SirCxyrtyx » 24 Feb 2016, 09:07

I've done a deep dive into the static camera system in an attempt to get proper cameras for my Zaeed mod, and I've learned way more than I ever wanted to know. Now it's time to inflict this knowledge on the rest of you. Some of this may be old news, but I haven't seen anything on most of this before.

First off, how are the cameras linked to the conversation?
Spoiler:
Image

Every conversation has a StartConversation action in a sequence somewhere. Hooked up to that actions Stage variablelink is an object variable referencing a BioStage Object.

Here's one for the jenna medigel conversation:
Spoiler:
Image

This BioStage controls the location and rotation of the conversation, change those values and the default positioning of the scene changes. It also has links to a CylinderComponent and SkeletalMeshComponent that do nothing as far as I can tell. The most important part though, is the Tag property. This has the name of another BioStage object, which has the really important bits in it.

Spoiler:
Image

This is the BioStage giftfish was looking at. It has the cameras list in it, as well as another CylinderComponent that seems useless. But the SkeletalMeshComponent link on this one is actually very important. It links to the object I clumsily outlined in red, which in turn links to the SkeletalMesh I highlighted in yellow.

If you take a look at this SkeletalMesh in Meshplorer, you find this:
Spoiler:
Image

Yep, they weren't kidding when they called it a stage. It actually is a little stage with markers for the people. As far as I can tell, the "node" bones each represent a different person (or maybe position for that person?) possible corresponding to the node inputs on the StartConversation sequence action. The "DUMMY" bones are each a child of the "node" bones, and they, as well as the "StageBoundingPlane" bone are the only bones that are actually involved in the model. There's also a bone for every camera.

I'm fairly certain that this SkeletalMesh is what defines the positions of the people and the static cameras in the conversation. I hooked the zaeed conversation up to one of the existing BioStages (I think it was for some ashley conversation), and it basically just worked. Zaeed was moved to the location of the conversation, and the cameras just automatically did the thing where they look over one characters shoulder at the other. (Apparently the CameraIntimacy property in the dialog entries controls which camera is used in the absence of a SwitchTrack for that line)

SirCxyrtyx has been thanked by:
User avatar
SirCxyrtyx
Toolset Lead
 
Posts: 345
Joined: 16 Apr 2014, 00:20
Has thanked: 28 time
Have thanks: 288 time

Re: Research | Animcutscenes + Matinee Editing

Postby giftfish » 24 Feb 2016, 14:35

@Sir -- Dude... THAT is the object I've been missing. I knew I've been missing something directly related to the static camera itself, but I didn't know where it was.

I tend to get a little spaced out when I start looking at Skeletal Mesh objects... I find them so confusing. And, wow, so you have to look at this in Meshplorer. It never would have occurred to me to do that. Which explains why I couldn't find the link I was looking for.

So, to add a bit more information:

1. The "Nodes" are referenced by SetFacing and LookAt matinee tracks. As far as I can tell they are little "stage marks" that then are used by these tracks to orient the model/gaze to face that location.

2. Camera Intimacy. Okay, this explains some things. If it only works in absence of a SwitchCam track, that would explain why sometimes I've gotten it to work and sometimes not. What if it has a moving cam controlled via InterpTrackMove and FOV tracks? I assume it doesn't do anything then?

3. So, since just viewing this content requires Meshplorer (a tool I've never needed to use), talk to me about the viability of editing these objects to insert new static cams. Is it as simple as copying the hex for one cam, say Cam1_2, renaming it, and then altering the orientation so it's located where the modder wants it? Also, what's a "W" parameter associated with each cam? I'm guessing "wide"? As in FOV?

Man, knowing about the existence of that little diagram would have saved some troubleshooting -_-

Don't suppose we could get some additional labels on that diagram? As to which marker corresponds to which node? Or some type of reference for orientation? It's like looking at a map and not knowing which way is north >.<

But, man, way cool :D
User avatar
giftfish
Toolset Developer
 
Posts: 1247
Joined: 08 Jan 2016, 02:35
Has thanked: 129 time
Have thanks: 75 time

Re: Research | Animcutscenes + Matinee Editing

Postby SirCxyrtyx » 24 Feb 2016, 16:48

giftfish wrote:3. So, since just viewing this content requires Meshplorer (a tool I've never needed to use), talk to me about the viability of editing these objects to insert new static cams. Is it as simple as copying the hex for one cam, say Cam1_2, renaming it, and then altering the orientation so it's located where the modder wants it? Also, what's a "W" parameter associated with each cam? I'm guessing "wide"? As in FOV?


I think the w parameter is part of the Orientation vector. Apparently, in computer graphics, a 4th coordinate is needed to make matrix multiplication work properly. Or something like that. I know next to nothing about graphics.

As for adding a camera, it seems like copying the hex and editing position and orientation should do the trick. I think you'd also want to edit the "Weird Bone List" in the Tail, as well as the "Required Bones" in the LOD Models section.
User avatar
SirCxyrtyx
Toolset Lead
 
Posts: 345
Joined: 16 Apr 2014, 00:20
Has thanked: 28 time
Have thanks: 288 time

Re: Research | Animcutscenes + Matinee Editing

Postby SirCxyrtyx » 24 Feb 2016, 17:19

Adding a new BioStage

The Zaeed mod has no BioStage, so to get cameras working for it, I needed one. One of the existing ones worked pretty well, but it was in the wrong place in the level, so I needed a new BioStage object to change the location, even though it ultimately references the same skeletalmesh stage thingy.

First step is to clone one of the BioStages that is a child of TheWorld.PersistentLevel. Then, you need to change the index of your new BioStage to one that none of the others have (use treeview to easily find all the BioStage children of TheWorld.PersistentLevel).

Here is where the index is located in the header view:
Spoiler:
Image

I couldn't find a way to edit the object header in PCCEditor2, so I had to open the file in HxD to do it.

Then, you have to edit the list of objects in PersistentLevel.
Spoiler:
Image

Use the interpreter to find the None property at the end of the propertylist (In this case it was the only property). That's highlighted in blue here. Then the 4 bytes highlighted in yellow are the length of the object list. Increment that by one. Outlined in red is what comes immediately after the object list. Insert the export id of your new BioStage right before that. (remember that it's one greater than the number shown in the PCCEditor2)

SirCxyrtyx has been thanked by:
User avatar
SirCxyrtyx
Toolset Lead
 
Posts: 345
Joined: 16 Apr 2014, 00:20
Has thanked: 28 time
Have thanks: 288 time

Previous

Return to Modders' Research

Who is online

Users browsing this forum: No registered users and 1 guest

suspicion-preferred