Post by rol3in on Sept 2, 2017 4:25:58 GMT
Hi All,
So I've been fumbling with the ME3Explorer and the Package Editor for about a week, experimenting adding and removing stuff. I figure it's time to start asking questions.
I figure I should start slow and just try to replace the kid with Anderson first. Here are the steps I have taken so far:
1) In Meshplorer, exported HMM_ARM_ANDa_MDL.psk and HMM_HED_PROAnderson_MDL.psk
2) Using UDK downloaded from link found in this thread, imported the SkeletalMesh into Content Browser and Saved Package as HMM_ARM_ANDa_MDL.upk
3) Now, I tried to import the upk in both the Meshplorer and ME3Creator.
Q1: It doesn't seem like Meshplorer allows adding Mesh. Can someone confirm this?
Q2: I tried cloning the kid's mesh and modifying it, but I got an error message about number of bones being different. The process is aborted by the program. What steps am I missing?
Q3: When I tried the Import feature from the ME3Creator, nothing happened. Does anyone know what might be the cause, and how to correct this?
4) I've also tried to clone the SFXStuntActor and all related objects from BioD_End001_480 pcc to the BioD_Nor_110 pcc, and manually making sure the pointer are pointing to the right place
Q4: Is this step supposed to allow me to see the mesh in the Meshplorer?
Q5: Does cloning the objects mean anything, if I cannot import the mesh?
If anyone has any pointer or suggestions on what to try, please feel free to comment. I'm really new to this. My programming experience is limited and my reverse engineering skill is next to none (well okay, unless you count all those times of trying to figure out past exam solution...)
Any help is greatly appreciated!
========== Skeleton Mesh Import ==========
Okay so I think I have some partial answers for myself. Just gonna update this post and document my steps for future reference. It's okay to reply to myself... right?
Here is what I did to import the skeleton:
1) Open ME3Creator
2) Open the destination PCC (in my case, NorD_110)
3) Go to Importer View -> Import Property Based Object From Other Export Table -> Load Package File... -> Load source PCC (in my case End001_480)
4) Find and import the mesh files (in my case HMM_ARM_ANDa_MDL and BIOG_HMM_HED_PROAnderson_MDL)
5) Go to Package Editor -> open destination PCC -> Find the imported mesh in either Tree View (will be under the first level) or the Exports tab (will be at the bottom)
6) Go to Meta Data Editor -> Change Class to SkeletalMesh
7) Not sure if this step is necessary, but also change Link to parent object class (e.g. HMM_ARM_ANDa_MDL is child to ANDa, ANDa is child to BIOG_HMM_ARM_AND_R, etc)
7) Save changes
Now I can see the skeleton mesh in the Meshplorer! Hoozah!
That being said, the game does crash when I load the first dream sequence. So I must have done something else wrong somewhere. Going to try figure out what that is now.
Figure out what I screwed up. I forgot to change the pointers of the SkeletalMeshSocket in SkeletalMesh to point to the new object I imported lmao. Game does start with the new mesh inside the package.
====================================
Update Sep 04 2017
I decided to re-do a couple things - namely, instead of the Resistance Anderson, I went back to the Prologue Earth Anderson outfit for the task... which also means I had to go through the whole process of cloning the MDL to the .pcc file.
But that's not even the most tedious part yet. The most tedious part came with the SFXStuntActor part. Here is what I did:
1) Cloning three sets of objects: Anderson_ARC_MTR_Conversation, ProEar_Anderson_Post_Con, and SFXStuntActor. I think what happened is that, Anderson_ARC_MTR_Conversation is the top-level (relatively speaking) parent object. ProEar_Anderson_Post_Con inherited certain variables from it. And SFXStuntActor (the object actually being used in the sequence) inherits from ProEar_Anderson. This is especially the case when editing the values of the Archetype in the Meta Data Editor.
So the hierarchy of inheritance goes something like this:
Anderson_ARC_MTR_Conversation
-> ProEar_Anderson_Post_con
-> SFXStuntActor
2) Same thing goes for their subset variables. For example, Anderson_ARC_MTR_Conversation.BodySMC has archetype of Import.BodySMC, whereas ProEar_Anderson_Post_con.BodySMC has archetype of Anderson_ARC_MTR_Conversation.BodySMC. So the hierarchy of inheritance goes something like this:
Import.BodySMC
-> Anderson_ARC_MTR_Conversation.BodySMC
-> ProEar_Anderson_Post_con.BodySMC
-> SFXStuntActor.BodySMC
3) Some child object, such as SFXStuntActor.GestMod01, reference to local copy of sub-objects. For example, GestMod01.m_pDefaultPoseSet reference to BioDynamicAnimSet, which is a child of the GestMod01 object. So the reference goes something like this:
2964: Anderson_ARC_MTR_Conversation
2965: BodySMC (SkeletalMeshComponent)
2966: GestMod01 (SFXModule_Gestures)
2967: oAnimSetMgr (BioGestureAnimSetMgr)
2968: BioDynamicAnimSet (BioDynamicAnimSet)
...
Where the GestMod01 object mentioned above has the following properties:
GestMod01 (2966)
m_nmDefaultPoseAnim: "DL_Idle"_0
m_pDefaultPoseSet: 2969 (BioDynamicAnimSet)
m_pAnimSetMgr: 2968 (oAnimSetMgr)
...
4) I think it's also worth noting that some objects reference to other objects, such as HeadSMC.MaterialInstanceConstant, which in my case can inherit from the following:
- HMM_HED_Lash_Mat_1a
- HMM_HED_PROAnderson_Scalp_Mat_1a
- HMM_HED_PROAnderson_Face_Mat_1a
- HMM_HED_EYEAnderson_MAT_1a
Those objects I had to import under BIOG_HMM_HED_PROMorph and BIOG_HMM_ARM_AND_R. Some sub-class I had to also clone to get the correct hierarchy.
5) I forgot last time, but in the MeshPlorer, there's actually a Materials parameter under the Skeletal Mesh object. I imported/updated the address of the texture to point to the correct address in the package.
Now, I'm not sure if I actually need to import all three objects (Anderson_ARC_MTR_Conversation, ProEar_Anderson_Post_con, and SFXStuntActor) and their child parameters (I know there's a specific term for them in object, but it's 5am and I can't remember). However, I think it's best to be safe.
So far the game is not crashing, so I'm guessing the reference is correct. Next step I'm going to try to "spawn" this SFXStuntActor in my map and see if it will actually show up.
===== Below are non-essential rambles =====
To give some insight, the scope of my project is roughly as follows:
- BioD_Nor_110Tour.pcc
- Replace kid with Anderson from BioD_ProEar_*.pcc or BioD_End001_480CommandRoom.pcc
- Replace forest map with the bridge structure from BioD_ProEar_310BigFall.pcc
- Insert modified sound files from Priority Earth, may include voices from ME2 (especially of squadmates dying)
- BioD_Nor204K002_Debrief.pcc
- Replace kid with various characters (e.g. Kaidan/Ashley, Garrus, Tali, etc)
- Replace forest map with BioA_Kro002_550bridge, BioA_CitHub_Hospital,etc
- Insert and modify whisper sound files
- BioD_Nor_600Cat4Intro.pcc
- TBD
So I've been fumbling with the ME3Explorer and the Package Editor for about a week, experimenting adding and removing stuff. I figure it's time to start asking questions.
I figure I should start slow and just try to replace the kid with Anderson first. Here are the steps I have taken so far:
1) In Meshplorer, exported HMM_ARM_ANDa_MDL.psk and HMM_HED_PROAnderson_MDL.psk
2) Using UDK downloaded from link found in this thread, imported the SkeletalMesh into Content Browser and Saved Package as HMM_ARM_ANDa_MDL.upk
3) Now, I tried to import the upk in both the Meshplorer and ME3Creator.
4) I've also tried to clone the SFXStuntActor and all related objects from BioD_End001_480 pcc to the BioD_Nor_110 pcc, and manually making sure the pointer are pointing to the right place
Q5: Does cloning the objects mean anything, if I cannot import the mesh?
If anyone has any pointer or suggestions on what to try, please feel free to comment. I'm really new to this. My programming experience is limited and my reverse engineering skill is next to none (well okay, unless you count all those times of trying to figure out past exam solution...)
Any help is greatly appreciated!
========== Skeleton Mesh Import ==========
Okay so I think I have some partial answers for myself. Just gonna update this post and document my steps for future reference. It's okay to reply to myself... right?
Here is what I did to import the skeleton:
1) Open ME3Creator
2) Open the destination PCC (in my case, NorD_110)
3) Go to Importer View -> Import Property Based Object From Other Export Table -> Load Package File... -> Load source PCC (in my case End001_480)
4) Find and import the mesh files (in my case HMM_ARM_ANDa_MDL and BIOG_HMM_HED_PROAnderson_MDL)
5) Go to Package Editor -> open destination PCC -> Find the imported mesh in either Tree View (will be under the first level) or the Exports tab (will be at the bottom)
6) Go to Meta Data Editor -> Change Class to SkeletalMesh
7) Not sure if this step is necessary, but also change Link to parent object class (e.g. HMM_ARM_ANDa_MDL is child to ANDa, ANDa is child to BIOG_HMM_ARM_AND_R, etc)
7) Save changes
Now I can see the skeleton mesh in the Meshplorer! Hoozah!
Figure out what I screwed up. I forgot to change the pointers of the SkeletalMeshSocket in SkeletalMesh to point to the new object I imported lmao. Game does start with the new mesh inside the package.
====================================
Update Sep 04 2017
I decided to re-do a couple things - namely, instead of the Resistance Anderson, I went back to the Prologue Earth Anderson outfit for the task... which also means I had to go through the whole process of cloning the MDL to the .pcc file.
But that's not even the most tedious part yet. The most tedious part came with the SFXStuntActor part. Here is what I did:
1) Cloning three sets of objects: Anderson_ARC_MTR_Conversation, ProEar_Anderson_Post_Con, and SFXStuntActor. I think what happened is that, Anderson_ARC_MTR_Conversation is the top-level (relatively speaking) parent object. ProEar_Anderson_Post_Con inherited certain variables from it. And SFXStuntActor (the object actually being used in the sequence) inherits from ProEar_Anderson. This is especially the case when editing the values of the Archetype in the Meta Data Editor.
So the hierarchy of inheritance goes something like this:
Anderson_ARC_MTR_Conversation
-> ProEar_Anderson_Post_con
-> SFXStuntActor
2) Same thing goes for their subset variables. For example, Anderson_ARC_MTR_Conversation.BodySMC has archetype of Import.BodySMC, whereas ProEar_Anderson_Post_con.BodySMC has archetype of Anderson_ARC_MTR_Conversation.BodySMC. So the hierarchy of inheritance goes something like this:
Import.BodySMC
-> Anderson_ARC_MTR_Conversation.BodySMC
-> ProEar_Anderson_Post_con.BodySMC
-> SFXStuntActor.BodySMC
3) Some child object, such as SFXStuntActor.GestMod01, reference to local copy of sub-objects. For example, GestMod01.m_pDefaultPoseSet reference to BioDynamicAnimSet, which is a child of the GestMod01 object. So the reference goes something like this:
2964: Anderson_ARC_MTR_Conversation
2965: BodySMC (SkeletalMeshComponent)
2966: GestMod01 (SFXModule_Gestures)
2967: oAnimSetMgr (BioGestureAnimSetMgr)
2968: BioDynamicAnimSet (BioDynamicAnimSet)
...
Where the GestMod01 object mentioned above has the following properties:
GestMod01 (2966)
m_nmDefaultPoseAnim: "DL_Idle"_0
m_pDefaultPoseSet: 2969 (BioDynamicAnimSet)
m_pAnimSetMgr: 2968 (oAnimSetMgr)
...
4) I think it's also worth noting that some objects reference to other objects, such as HeadSMC.MaterialInstanceConstant, which in my case can inherit from the following:
- HMM_HED_Lash_Mat_1a
- HMM_HED_PROAnderson_Scalp_Mat_1a
- HMM_HED_PROAnderson_Face_Mat_1a
- HMM_HED_EYEAnderson_MAT_1a
Those objects I had to import under BIOG_HMM_HED_PROMorph and BIOG_HMM_ARM_AND_R. Some sub-class I had to also clone to get the correct hierarchy.
5) I forgot last time, but in the MeshPlorer, there's actually a Materials parameter under the Skeletal Mesh object. I imported/updated the address of the texture to point to the correct address in the package.
Now, I'm not sure if I actually need to import all three objects (Anderson_ARC_MTR_Conversation, ProEar_Anderson_Post_con, and SFXStuntActor) and their child parameters (I know there's a specific term for them in object, but it's 5am and I can't remember). However, I think it's best to be safe.
So far the game is not crashing, so I'm guessing the reference is correct. Next step I'm going to try to "spawn" this SFXStuntActor in my map and see if it will actually show up.
===== Below are non-essential rambles =====
To give some insight, the scope of my project is roughly as follows:
- BioD_Nor_110Tour.pcc
- Replace kid with Anderson from BioD_ProEar_*.pcc or BioD_End001_480CommandRoom.pcc
- Replace forest map with the bridge structure from BioD_ProEar_310BigFall.pcc
- Insert modified sound files from Priority Earth, may include voices from ME2 (especially of squadmates dying)
- BioD_Nor204K002_Debrief.pcc
- Replace kid with various characters (e.g. Kaidan/Ashley, Garrus, Tali, etc)
- Replace forest map with BioA_Kro002_550bridge, BioA_CitHub_Hospital,etc
- Insert and modify whisper sound files
- BioD_Nor_600Cat4Intro.pcc
- TBD