March 28, 2024, 23:56
bigger smaller reset     1020px Wide width Full width Reset   * *

Gildor's Forums

  Homepage Facebook Read news on Twitter Youtube channel Github page
Welcome, Guest. Please login or register.
Did you miss your activation email?

« previous next »
Print
Author Topic: [SOLVED] Material slot names  (Read 725 times)
floxay
Full Member
***
Posts: 83



View Profile
« on: November 13, 2021, 23:13 »

TLDR: There seem to be some issue with the material slot names (which seem to actually be the material names)



Here's this mesh from VALORANT (I realize VALORANT is not supported as is but I don't think this is a VALORANT specific issue, this is also not a new issue)
On this mesh the displayed entries are broken, it exports the same way but null is obviously replaced with dummy material for glTF (as I use glTF since it stores the normals).

The same mesh exported by FModel gives this (I'm not aware of any modifications in FModel (or in CUE4Parse lib) that's VALORANT specific other than the 8 byte skip mentioned at the bottom of the post):


Meanwhile CUE4Parse displays this data:
Code:
"MaterialSlotName": "TP_Deadeye_S0_MI"
"MaterialSlotName": "TP_Killjoy_S0_Glass"
"MaterialSlotName": "TP_Deadeye_S0_Hair_MI"
"MaterialSlotName": "Eye_Shading_Mat"
"MaterialSlotName": "FP_Deadeye_S0_Sniper_MI"
"MaterialSlotName": "chain_sim_MI"
"MaterialSlotName": "TP_Deadeye_Chain_Cloth_S0_MI"


A quick look into UEViewer revealed that "Ar << M.MaterialSlotName;" in UnMesh4.cpp line 582 is getting the same data as the list above.


and

etc...


So material slots have the material name displayed/exported instead (in both UModel and Fmodel), I suppose this is because it's easier to identify what material belongs to a slot as slot names can be irrelevant/make no sense and have no real link to the material once it's exported?

So what could be the cause of the issue on the first picture? I mean even if it displays the material name and not the slot name it should match the one exported from FModel (second picture)

So in action: since something went wrong somewhere later the 'CS_Deadeye_S0_Glass_clear_MI', 'CS_Deadeye_S0_Hair_MI' and 'TP_Core_Eye_MI' materials are replaced by CS_Deadeye_S0_MI



Samples: https://drive.google.com/file/d/1bRAP5JAMeQ5GNzoeGVuOO4bNUdMw2VDx/view?usp=sharing
Please note that VALORANT has 8 unknown bytes between Guid and ThumbnailTableOffset, the game is on 4.25.


I hope I explained it well enough :d
« Last Edit: November 14, 2021, 04:21 by floxay » Logged
spiritovod
Global Moderator
Hero Member
*****
Posts: 1901


View Profile
« Reply #1 on: November 14, 2021, 03:10 »

Probably I can explain this issue. Apparently at the moment LODMaterialMap is not handled properly in some particular cases. According to documentation, in case of certain index value (usually -1) a material shouldn't be remapped, but in umodel it's remapped to first material in the list in this case - that means if all indices from LODMaterialMap will be negative, all materials are replaced with first material (that's what you get).

It can be fixed by implementing additional check for current MaterialIndex - if it should be remapped, remap it, otherwise fall back to original value of it. Required code part can be found around "remap material for LOD".
« Last Edit: November 14, 2021, 13:48 by spiritovod » Logged
floxay
Full Member
***
Posts: 83



View Profile
« Reply #2 on: November 14, 2021, 03:46 »

Probably I can explain this issue. Apparently at the moment LODMaterialMap is not handled properly in some particular cases

Perfect, thanks spiritovod!

Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #3 on: November 14, 2021, 12:47 »

I hopefully fixed LODMaterialMap handling in UModel.
Logged
spiritovod
Global Moderator
Hero Member
*****
Posts: 1901


View Profile
« Reply #4 on: November 14, 2021, 14:03 »

@Gildor: Thanks, it works as intended now.

I've also updated Valorant specific build in the game topic. In case if someone will bump into the same issue in any other specific build, please let me know (it's not a common issue for every game).
Logged
Print 
« previous next »
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS