I'm really confused with the best workflow for my project.
I'm using 3ds Max with Arnold Renderer. The scene has 20 or so objects, all are UV'd, some I need to be multiple materials others only one.
If I need an item to be both gold metal, and coloured glass, how do I get an Arnold standard surface to control both parts, or am I supposed to just use 2 standard surfaces plugged into a multi sub?
If that's the case how would that work with the normal map? Would I need to plug that into both surface shaders?
If using a multi sub is the way to go is there any point the objects being separate?
Also, when I finish doing everything with ahader trees, should I then bake everything down into simple maps (think I've seen a video on that), does that just take the literal look if the object and give me all the opacity/ambient/emission etc that I'd need for best compatibility elsewhere (sketchfab, unity, cgtrader, turbosquid, artstation.)
Thanks for any help
Replies
You can use 1 material for multiple different surface types, but it's usually more work to do this as you have to separate the surface types in every texture... Metalness, Roughness, Albedo, etc.
This is often required for realtime export since we typically want less complex shaders, for better performance. So you combine surfaces into a shared texture set.
For Arnold rendering though, it's much easier to use separate materials, and mask them with a Blend material.
For example, I'm working on a lamp model with a stained glass lamp shade. The leading around each shard of glass is made of metal, it's really intricate. So my maps have to include both glass and metal. I can't separate the leading into a separate mesh, it would be too much mesh.
https://github.com/KhronosGroup/glTF-Sample-Models/blob/875ed27c8d85dc86124d49f35797312002997158/2.0/StainedGlassLamp/README.md
If you dig around you can find the maps.
Live demo:
https://sandbox.babylonjs.com/?kiosk=true&assetUrl=https://raw.githubusercontent.com/KhronosGroup/3D-Formats-Guidelines/main/figures/StainedGlassLamp-JPG-PNG.glb&autoRotate=true
In Arnold and other path tracers, you would usually make a "stained glass" material, and a "leading" material, then use a Blend material to combine them with a b/w mask in the shape of the leading.
Using separate materials makes it much easier to edit each in isolation, so you can tweak values for the metal color/Roughness/etc. without having to edit a bunch of bitmaps.
If compatibility is key, then it's best to adjust the asset down to the common denominator of surface attributes:
- Albedo
- Metalness
- Roughness
- Occlusion
- Normal
- Opacity
- Emissive
Use a single UV channel. No blending or fresnel or anisotropy or anything "fancy" unless you're willing to add those in specific apps and then present those specific formats.We recently prepared guidelines for just this sort of purpose... How to make pbr assets that work in the widest possible set of renderers. What considerations and gotchas to plan for, etc. Might help you. https://github.com/KhronosGroup/3DC-Asset-Creation/blob/main/asset-creation-guidelines/RealtimeAssetCreationGuidelines.md
One of the biggest problems you'll find is there is no common 3d format that stores pbr materials natively. FBX and OBJ don't. Well, FBX does in a partial way. I'm biased towards glTF, which is definitely an up and comer. Not all apps can load glTF yet, but it's an open standard with lots of freeware support.
Arnold is not the commonality I'll wager. Pbr most likely is.