How can I change the color parameters on the pioneer materials?
Hi, I'm working on a customizable character buildable for Factory Props (see this for context), and I'm trying to link the material colors to the color pickers similar to the player customizer in the HUB, but I'm not sure how to change those values on the materials. I've tried creating and applying a dynamic material instance and setting the
Primary
, Secondary
, and Tertiary
vector parameters, but those don't seem to do anything.54 Replies
What material are they using on the vanilla objects?
in its current form, this is revealing unreleased content, you should probably specifically block out the unobtainable helmets
The player mesh
SK_Pioneer_01
uses 5 materials: MI_Pioneer_Boots
, MI_Pioneer_Gloves
, MI_Pioneer_Backpack
, MI_Pioneer_Torso_02
, and MI_Pioneer_Legs_02
.
Oh, those are unreleased? I though you could discover them like you can the Beta helmet.What's the inheritance for those material instances.
Given two weeks and nobody has figured out how. It's probably unreleased
MM_Cloth_Master
is the parentI am not 100% sure how to tell which are unlockable yet, but I think that only customizations that have schematics referencing them can be unlocked. compare beta to doggo:
easiest way to handle this for now would probably be to specifically block them from a hardcoded list (I don't know how you build that list right now but I assume you get all descriptors of that class)
Yeah, disabling them is not an issue, I just didn't know they weren't released yet.
I don't think these materials are setup to use custom primitive data, you'll probably need to make instances of MM_FactoryBaked to use here
Sorry, I missed the part where you setup material instances for these
Yeah, this is what I meant, but it doesn't seem to do anything.
When are you running this? Are you assigning the material instance to what?
The instnace has to be assigned to the mesh
The white line is the execution path it has to be started by something. Like a red or purple node because it's a function or an event
Yeah, it was connected to
BeginPlay
when i tested it initially, I had just disconnected it while testing something else before taking that screenshot.No. A few customization options are not referenced by anything, but are still considered "released"
You might not need to create instances for them. The vanilla material doesn't use custom data afaik, which means they are already instanced somewhere, although I cant find a reference to them on the character. Try something like this.
good to know, is there any way we can distinguish them to avoid revealing unreleased stuff?
Also, while the idea of the mod is cool, this has to follow the same unlock requirements as the vanilla customization menu
e.g. players should only be able to select customizations that they personally own
So, for instance, you'd have to go out and grab the B-374 helmet from the doggo cave before it appears in the customization menu?
yes
Ok, will do! Just out of curiosity, why is that required? Is it just a technical thing or is it to maintain some kind of exclusivity or integrity?
second
it's not "required", e.g. I am not speaking as a representative of the company. I am just speaking as an individual giving you an advice that will reduce the chance of CSS having an issue with that mod
That's alright, I would rather err on the safe side than risk pissing off CSS.
there is probably some function to check which ones you have available
I'm confused about what this is supposed to do. It looks to me like it would set the parameter on the material instances of the local player, which isn't what I'm trying to do.
Yes, thats what it does, I assumed it was the player in your screenshot
is that a buildable or something else?
It's a buildable that makes use of the pioneer mesh.
ah, ok. gimme an hour or so and i'll try to figure out how to do this
Alright, I'll probably not be home then, but I'll look into it more when I get back later this evening.
Yeah, this and it keeps the Golden unlockables exclusive to players who've played in EA
@SpookGameDev (Factory Props) So, I was wrong. The character materials do use custom data floats. We only have a stub for the cloth material and all the data inputs are missing, but setting floats on indexes 0-5 seems to work fine for Primary and Secondary. I wasn't able to set Tertiary because I don't know what the right indexes are, you'll have to test on your own but I assume its something >14
How many data floats are there?
Buildables have 20 allocated but the last 6 or so aren't used for anything afaik
https://docs.ficsit.app/satisfactory-modding/latest/Development/Satisfactory/Paintable.html
Paintable Materials & Tintable Lights :: Satisfactory Modding Docum...
Making things paintable is not as difficult as it may seem. You can use the existing materials, or create your own implementation. Ma...
that's gonna need some reviewing with the new finishes
It also means that you dont really need the code I posted, you can paint it with the buildgun or you can call the set customization implentation on the buildable
Actually, I dont think so. The finishes override both Primary and Secondary colors and sets the Metallic and Roughness values as well. No other indexes were needed. I think the current information in the docs is correct.
I said review not changes. I was pretty sure it was still right but didn't want to not do the homework 😛
One could use a chat command or something to mess with the data floats
/wololo <index> <value>
Haven't had a chance to try this for a couple of days, but I have now tried every index from 14 onward, and none of them had any effect on the overalls (Though the primary and secondary did work).
I looked into the HUB customization menu widget (
BPW_CharCustomizer
) and found a function called GetCustomizationData
, which has a struct for PlayerCustomizationData
that contains Linear Colors for the Primary, Secondary, and Detail (Overalls). Not sure if it's specific to characters, or if I could utilize it for this purpose though.That's just a data holder to be passed around. It will probably not help much with implementation specifics.
Did you try all index <14? Because I didnt. Those are usually reserved for buildable stuff, but there might be an exception here.
I tried 14-22 (Even though docs say it only goes to 19)
that struct gets applied to the player in Char_Player blueprint
so you probably want some code from there
That would be this function I'd assume?
yes
What do you mean by this? All I can find is that stub, which doesn't tell me how to apply the color to the mesh. I'm just a bit confused.
Solution
I think it might be indexes (6,7,8), the player data stops there
Indeed it is! Thank you D4rk!
I want to point out that those indexes (6,7,8) are reserved for other things in buildables.
So you probably want to make your buildable not paintable or your data will get overridden, and you probably need to init it manually on begin play
I've already done that, and I don't intend to make use of those other functions, so this should be alright.
you can look up blueprint disassembly from asset dumper and from other tool that I think Mircea updated a while ago