Author Topic: Dynamic material creation...  (Read 4103 times)

Would it be possible to expose an Image Input so that you can add effects (such as edge wear) on a per Material Instance basis?

So if I had 6 slightly different meshes that all had the same base material could I (in UE4) simply import the meshes, a Substance and Curvature maps for each mesh? Then, using the Substance Plugin, add the specific Curvature texture to a an Instance of the Substance? Or is that not possible?
 

The idea was to save resources but I guess the Substance Material Factory would require each instance to have it's own Substance bitmaps anyway?

The idea was to save resources but I guess the Substance Material Factory would require each instance to have it's own Substance bitmaps anyway?
That's right, in order to generate specific bitmaps for each mesh (based on the specific curvature), you need a graph instance per mesh.
Don't forget your log file. It can be exported from the Help menu of the software.
-----------
Fabrice Piquet aka Froyok. Product Manager, Technical Artist and Documentation at Adobe.

Right. Thanks for confirming that.

I am writing a paper based on practical implementation of procedural vs. static 3D assets (specifically surfaces) and I am trying to think of ways to allow maximum individualisation of materials while keeping the resource count (and MB's) as low as possible...

I will be looking at the various case studies where this has happened and then outputting practical guides. Obviously Allegorithmic's tools are going to feature quite heavily in this process. I am especially motivated by Quixel's Megascans project. I think this is the wrong direction for real-time (and even VFX) to head and want to offer alternatives :)

Right. Thanks for confirming that.

I am writing a paper based on practical implementation of procedural vs. static 3D assets (specifically surfaces) and I am trying to think of ways to allow maximum individualisation of materials while keeping the resource count (and MB's) as low as possible...

I will be looking at the various case studies where this has happened and then outputting practical guides. Obviously Allegorithmic's tools are going to feature quite heavily in this process. I am especially motivated by Quixel's Megascans project. I think this is the wrong direction for real-time (and even VFX) to head and want to offer alternatives :)


HI,

That is very interesting. Best of luck on your paper. Please let us know if you have any questions.

Cheers,
Wes

Head of Substance Demo Art Team
the3dninja@adobe.com
Twitter: The3DNinja

Would it be possible to expose an Image Input so that you can add effects (such as edge wear) on a per Material Instance basis?

So if I had 6 slightly different meshes that all had the same base material could I (in UE4) simply import the meshes, a Substance and Curvature maps for each mesh? Then, using the Substance Plugin, add the specific Curvature texture to a an Instance of the Substance? Or is that not possible?
 
wait..how does one expose a texture input in the graph to let the user plug in custom inputs in the host program to drive effects?
I only know how to expose parameters in the graph with inputs that are already "hard coded" in.  I didn't even know it's possible :O
Last Edit: September 15, 2016, 03:19:51 pm

Would it be possible to expose an Image Input so that you can add effects (such as edge wear) on a per Material Instance basis?

So if I had 6 slightly different meshes that all had the same base material could I (in UE4) simply import the meshes, a Substance and Curvature maps for each mesh? Then, using the Substance Plugin, add the specific Curvature texture to a an Instance of the Substance? Or is that not possible?
 
wait..how does one expose a texture input in the graph to let the user plug in custom inputs in the host program to drive effects?
I only know how to expose parameters in the graph with inputs that are already "hard coded" in.  I didn't even know it's possible :O

Hi,

You can create an input node in the graph for a grayscale or color input. Then when you publish the sbsar file you will have a input option in the graph properties. For UE4, you need to import the texture you want to use as input as a substance texture. You can then apply it to the input of the substance material. You have to use RGB or RGBA inputs, so if you are using a grayscale input, just save it as jpeg or if you need 16bit, just convert it to color.

Cheers,
Wes

Head of Substance Demo Art Team
the3dninja@adobe.com
Twitter: The3DNinja

Quote
You have to use RGB or RGBA inputs, so if you are using a grayscale input, just save it as jpeg or if you need 16bit, just convert it to color.

Thanks Wes, that's really cool!

I didn't quite understand what you mean by the above though.  I know UE4 doesn't import greyscale images, is that what you are referring to?
So I should save the maps used as inputs as color maps, but in the graph, I'd still use a greyscale input, not a color input to drive the substance even though the input in UE4 would be color input?

Also, just let me know if that would work. Right now I work with 3 output maps from substance, BaseColor, Normal and packed map with R=Rough, G=Metallic, B=AO and A=Height.  Could I pack the Curvature in the B channel of the Normal map and use that in my graph to drive the effect?  I've attached an example to show what I mean.
I'd get the B channel for the Normal map back in the UE4 shader, and that would save me some textures - that's the idea anyway heh
Last Edit: September 16, 2016, 03:46:09 am

Quote
You have to use RGB or RGBA inputs, so if you are using a grayscale input, just save it as jpeg or if you need 16bit, just convert it to color.

Thanks Wes, that's really cool!

I didn't quite understand what you mean by the above though.  I know UE4 doesn't import greyscale images, is that what you are referring to?
So I should save the maps used as inputs as color maps, but in the graph, I'd still use a greyscale input, not a color input to drive the substance even though the input in UE4 would be color input?

Also, just let me know if that would work. Right now I work with 3 output maps from substance, BaseColor, Normal and packed map with R=Rough, G=Metallic, B=AO and A=Height.  Could I pack the Curvature in the B channel of the Normal map and use that in my graph to drive the effect?  I've attached an example to show what I mean.
I'd get the B channel for the Normal map back in the UE4 shader, and that would save me some textures - that's the idea anyway heh

Hi,

I'm sorry, that is confusing : ) You can work with grayscale if you export as Jpg and import the substance texture as jpg. However, if you TGA as a color, it and import this as a substance texture it will still work even though the input in the substance is a grayscale input.

Cheers,
Wes

Head of Substance Demo Art Team
the3dninja@adobe.com
Twitter: The3DNinja

Quote
You have to use RGB or RGBA inputs, so if you are using a grayscale input, just save it as jpeg or if you need 16bit, just convert it to color.

Thanks Wes, that's really cool!

I didn't quite understand what you mean by the above though.  I know UE4 doesn't import greyscale images, is that what you are referring to?
So I should save the maps used as inputs as color maps, but in the graph, I'd still use a greyscale input, not a color input to drive the substance even though the input in UE4 would be color input?

Also, just let me know if that would work. Right now I work with 3 output maps from substance, BaseColor, Normal and packed map with R=Rough, G=Metallic, B=AO and A=Height.  Could I pack the Curvature in the B channel of the Normal map and use that in my graph to drive the effect?  I've attached an example to show what I mean.
I'd get the B channel for the Normal map back in the UE4 shader, and that would save me some textures - that's the idea anyway heh

Hi,

I'm sorry, that is confusing : ) You can work with grayscale if you export as Jpg and import the substance texture as jpg. However, if you TGA as a color, it and import this as a substance texture it will still work even though the input in the substance is a grayscale input.

Cheers,
Wes

OK, that's great. Because I tend to work with TGA for all my outputs.  Thanks for clarifying.