Forums » CentiLeo for Cinema 4D
Pages: 1
Material UI design brainstorm
 
Administrator  Posts: 894
Aug 27, 2016 18:15
Everyone who has written here complained about usability of material UI.

So, one problem of black rendering without running IPR is one thing and will be solved.

And let's think about another problem of layouting it. I need the help of D K, Alexey Brin and pBarrelas regarding this problem.

First, I suggest to make standard button (>) for each shader slot which if non empty also creates a direct button to existing shader/texture and (...) to select bitmap. But if there are several nested shaders, they are unrollable and there could be some bugs with values updating which I saw with other engines too. But need to test it again.
Using this standard button will also consume more UI space vertically. But they are unrollable which is good.
And this button will mix our shaders with others in a menu and we will to at least pre-bake Cinema shaders to support them at least as pictures.

Do we need a checkbox together with each row with constant property and shader/texture? That checkbox can determine what is used a const value or shader for given property. Right now if shader is applied then const value contolled by slider is not used. If you want const to be used again then you need to clear the shader/texture value.
CentiLeo Chat: https://t.me/centileochat
 
Hi Kirill,

good to know that you're considering to make the Material Editor more intuitive and user friendly!

Regarding the Material Editor preview window, besides only updating when the IPR window is open, it still shows the effect of all the channels even if they are off. This makes extremely difficult to make some quick material tweaks.

1-I do agree that the standard button for each slot is better than the current implementation.

2-Having that check box would make the Material Editor more versatile. This way we can chose to use either a colour or a shader, without having to disconnect that shader.

3-Please add more Reflection Coating levels.

4-Please add a dedicated Mask channel for the entire material.

5-Turn the material channels animatable.

6-Add Emission channel.

7-Ability to use chose a certain UV Tag to be used on that channel. I honestly don't know if this is a C4D SDK limitation.

Here's a possibility I worked up in PS:
Edited: pBarrelas - Aug 27, 2016 23:17
 
Administrator  Posts: 894
Aug 28, 2016 11:12
Hi Paulo,

Emission will be added together with support for Mesh lights. It will be shaderable thing as one more material property. Probably only for multi material to make it happening only once for surface point, but with mask of course, so that some points will be emissive, some reflective - and all is driven by shaders.

Reflection Coating levels - so you recommend to unroll current functionality of cntlFalloff that can be applied to the mask or anything els and add it by default to the top level inside material. Right now it's possible with adding a shader and doing more clicks. But it is a popular shader for reflection because it's usually a coating layer, and it's mask not usually controlled with shaders other than Falloff.

Mask channel for the entire material - should it make material darker? This is possible to make a special slot.
Right now it is possible to have a mask for entire cntlStdMat if you attach it as one of the layers of cntlMultiMaterial. And attach cntlMultiMaterial to the tag insted of standart.

Turn the material channels animatable - what do you mean? Each property of material is currently animatable and has a dedicated cicle to the left of each property name.

Ability to use chose a certain UV Tag to be used on that channel - main Cinema material as I see apply UV for the whole material. We can currently apply different UVs for each shader (cntlTexture image or cntlNoise) on a per shader basis. Right now it is spherical or explicit mesh UV (which is UV tag itself). Of course we must add support of more mesh UV sets (means more UV tags to be chose from). And there should be rotation option added there.
CentiLeo Chat: https://t.me/centileochat
 
Hi Kirill,

The images I shared it's just a suggestion. I'm sure others might have different opinions.

Regarding the Reflection Coating levels, probably you are correct. Would it be possible to replace the default IOR field with a a shader link so we can connect the cntlFalloff if we chose so?

The Mask Channel, for the entire material, would be cool because we wouldn't need to use a Multi Material for that. It would make things a bit more practical, I think!

About turning the Material Channels animatable, do you see the widgets at the left of each material channel I added on that image? That serves to allow to animate it's ON/OFF state if we chose to. Currently we can't do that.

It would be great if we could chose to use a certain UV Tag per channel. Currently C4D's Projector shader is very limited. That is why I suggested to support the use of whatever UV Tag we choose fr om the ones we created for a object. So when we chose to use mesh map 1, that particular shader is use the 1st UV tag? What if we have 3 different UV Tags?

Rather than having a drop down menu, could we have a field wh ere we could drag and drop a certain UV Tag to be used with that shader?
 
re: uv maps. in c4d this achieved by ordering tags correctly. ie. the material uses the UV map closes on its left. so that way you can use multiple uv tags. no need to include this in the actualy material.
 
Administrator  Posts: 894
Aug 28, 2016 14:16
Ok I understand it all, and think that ideas are right.

As for UV maps then things are a little bit more complicated. It would be hard to support arbitrary amount of UV maps per one mesh. They consume a lot of memory. But compression optimizations are possible and rotating/moving/scaling modificators are possible for them - it's will be implemented, and they take no noticeable resources.

Right now there is one "explicit uv_mesh_set 0" which corresponds to the first UV tag of the current mesh (the left most). And they are not different for different instances since they inherit mesh data which includes UVs too. When there will be uv_mesh_set_1 then it will correspond to the next UV tag to the first one.

And selecting them is controllable not only per material in the tag list but also per each shader that uses them. There can be arbitrary shader trees for each material property. Bad that they have no yet node-based UI. Looking to cmnoeds btw.

As for "drag&droping a tag to the field" vs "selecting in a dropdown list" - should think more about it. In the first case the name of tag is clearly visible there.

What maximum number of UV maps/tags do we need to support per mesh? 3, 4, 5 or maybe 8? Some known product has maximum of 3. Some people on CPU renderers use 5.
CentiLeo Chat: https://t.me/centileochat
 
Administrator  Posts: 894
Aug 28, 2016 14:20
Btw if we make a global material mask and then we can assemble all the tags from left to right as an internal multi-material and get the same result as applying one multi-material.

And there can be one more special material with geometry modifications like displacement and surface discrete mask which are currently sitting in multi-material.

However in this case we need not to place user into confusion with selection tags that may use different materials for different selected polygons.
CentiLeo Chat: https://t.me/centileochat
 
i think base Cinema 4D material editing layout is perfect. For example you might create more standart layout (for user, not engine priority):
  • Base Color (Or just Difuse or Color)
  • Reflection / Refraction (i think nobody start to build its material from reflection, that base is color in more cases, you can make Refectance like layering)
  • Transmission / Translucensy (These two confuse, i need help to understand why they are separated)
  • Bump
  • Emission
  • Displacement
  • Material Mask (Opacity? Alpha?)
 
Administrator  Posts: 894
Aug 28, 2016 17:56
Alexey, technically Translucensy is a special case of Transmission with high roughness. But it is usually done as Diffuse reflection which works under the normal direction of the surface and hence shows translucent visual effect. Right now it's possible to make Transmission and Translucensy only using mult-material and tuning the masks properlty
CentiLeo Chat: https://t.me/centileochat
 
Quote
Kirgman wrote:
Btw if we make a global material mask and then we can assemble all the tags from left to right as an internal multi-material and get the same result as applying one multi-material.

And there can be one more special material with geometry modifications like displacement and surface discrete mask which are currently sitting in multi-material.

However in this case we need not to place user into confusion with selection tags that may use different materials for different selected polygons.
The Mask/Opacity/Weight channel would work exactly as the mask in the Multi Material but at the material level without the necessity of a Multy Material, as we have on Vray or Corona material. This has nothing to do with Selection Tags.

Regarding the use of different UV Tags at the channel level, just by have 3 available would be great. I suggested the use of a link field, that could be named UV Tag, because we're used to this kind of drag n'drop behavior in C4D. Then, the name displayed on that field
, once populated, would be the name of the UV Tag itself rather than something, from a drop down menu, like UV1, UV2..
It just looks more intuitive to me. But, like I said, this just my personal view.
 
Quote
aleksey voz wrote:
re: uv maps. in c4d this achieved by ordering tags correctly. ie. the material uses the UV map closes on its left. so that way you can use multiple uv tags. no need to include this in the actualy material.
I know this, what I'm asking is for this feature to be used at the channel level, not material level.
This is a feature I asked Maxon to be implemented but sadly it hasn't yet.
Modo's shader tree is very flexible because you can use whatever UV set to control the texture placement at channel level. Sadly we can't do this in C4D.
Correction: in Modo, we go even deeper than channel level, we can use a different UV set per texture. As an example, in the Diffuse channel, we can have 2 layered textures and each one can use a different UV set to control its placement, without any limitation.
Edited: pBarrelas - Aug 28, 2016 20:50
 
Administrator  Posts: 894
Aug 28, 2016 21:28
Quote
pBarrelas wrote:
Correction: in Modo, we go even deeper than channel level, we can use a different UV set per texture.
Well, this flexibility will soon be here too when more UV tags will be done. Right inside CentiLeo corner of Cinema. It's not a problem, there is an infrastructure for this. It's just a matter of portion of geometry which may remain in cache and a matter of my time compressing UV data to some level that will make me happy giving you some 5% total speed increase vs uncompressed mode :)

Maybe 3 is too small? Anybody uses more?

Such things are by default in Max too (despite of it's non drag&drop nature and long geometry preparation time). E.g. Max gives us geometry at 10n time, where Cinema gives it at 2n time and CentiLeo gets it in around 2n time.
CentiLeo Chat: https://t.me/centileochat
 
Quote
Kirgman wrote:
Maybe 3 is too small? Anybody uses more?
.

I'd be happy just by having 3 but if it's possible to implement 5, just to allow more flexibility, that would be better ;)
 
Administrator  Posts: 894
Sep 2, 2016 00:27
Quote
pBarrelas wrote:
Hi Kirill,

good to know that you're considering to make the Material Editor more intuitive and user friendly!

Regarding the Material Editor preview window, besides only updating when the IPR window is open, it still shows the effect of all the channels even if they are off. This makes extremely difficult to make some quick material tweaks.

1-I do agree that the standard button for each slot is better than the current implementation.

2-Having that check box would make the Material Editor more versatile. This way we can chose to use either a colour or a shader, without having to disconnect that shader.

3-Please add more Reflection Coating levels.

4-Please add a dedicated Mask channel for the entire material.

5-Turn the material channels animatable.

6-Add Emission channel.

7-Ability to use chose a certain UV Tag to be used on that channel. I honestly don't know if this is a C4D SDK limitation.

Here's a possibility I worked up in PS:
Few more questions on the picture:

1) Can Reflection Color brightness be higher thatn 100%? Maybe should we use 0..1 range in place of 0..100% ? 0..1 is easier to undestand when all the shader input/output are in these absolute values (not percentages). I believe it would be easier with this considering existing math shaders and more future shaders especially when node based shader GUI will be out.

2) What invert checkbox is doing? Is it an indicator that switches between constant and shader property?

3) All the properties will be with shaders/textures including Fresnel IOR and Aniso rotations. Cool things can be done with that.

4) Displacement will not be here but probably in another material like current multi-material or separate "geometry_shader" which will be assigned as tag for an object.

5) Will highly likely add the dropdown selection of mixing mode for material layers: "stack based" (like now, higher layer override lower layers) or "weight based" (like people used to, everything is relative to each other).
CentiLeo Chat: https://t.me/centileochat
 
Quote
Kirgman wrote:
Few more questions on the picture:

1) Can Reflection Color brightness be higher thatn 100%? Maybe should we use 0..1 range in place of 0..100% ? 0..1 is easier to undestand when all the shader input/output are in these absolute values (not percentages). I believe it would be easier with this considering existing math shaders and more future shaders especially when node based shader GUI will be out.

2) What invert checkbox is doing? Is it an indicator that switches between constant and shader property?

3) All the properties will be with shaders/textures including Fresnel IOR and Aniso rotations. Cool things can be done with that.

4) Displacement will not be here but probably in another material like current multi-material or separate "geometry_shader" which will be assigned as tag for an object.

5) Will highly likely add the dropdown selection of mixing mode for material layers: "stack based" (like now, higher layer override lower layers) or "weight based" (like people used to, everything is relative to each other).

1-The colour slider shouldn't go higher than 100%.
The only colour parameter that should and must is the one from the Emission channel.
I'm OK with having it between 0-1 instead of 0-100% if that facilitate your work. Others might have different opinions, though.

2-The Invert checkbox serves to invert on the fly the grey scale images used on certain parameters. This speeds the workflow.

4-Is a current limitation the fact that the Displacement channel, can't be used on the "regular" material?
 
Administrator  Posts: 894
Sep 2, 2016 07:25
Quote
pBarrelas wrote:
2-The Invert checkbox serves to invert on the fly the grey scale images used on certain parameters. This speeds the workflow.

4-Is a current limitation the fact that the Displacement channel, can't be used on the "regular" material?
1) Can it be usefull to break energy conservation? :) Right now it is possible to make colors with values higher than 1 when using a color multiplied by some high value using cntlBinary shader. It may create some sort of Emission which is slow to converge for extreme cases. But it is possible to create very white diffuse eyes in some dark room (and it is not extreme case and will converge quickly). Later when there will be some Emission slot for material this thing will be accelerated with dedicated techniques.

2) Will think about it. Btw, there is cntlColorCorrection shader where it corrects the input shader and it is possible to make inversion when you put out_rangeA = 1 and out_rangeB = 0.
The same inversion trick works for cntlTexture (imagefile) and cntlNoise.

4) Well, I have limited displacement to one only place (in multi-material) so that it would be easier to evaluate displacement for sufrace (without gathering all the layers). Later that parts became faster and soon they will become even faster. And there will probably be an opportunity to combine many things for displacement slot. However the shaders such as cntlFallof (i.e. based on view angle) seem to be irrelevant for displacement when somebody plays with them.

"surface mask" is the only material property that will remain understanding only cntlTexture. This is so because of performance reasons. It basically enables and disables some surface region based on texture. And it allows unlimited trace depth for this feature for free. But if some shader customization is needed for such things then Transmission with IOR = 1 and shadered masks of the cntlStdMat can be used, but trace depth for this feature will be limited to the number of ray bounces (maximum supported is 30).
CentiLeo Chat: https://t.me/centileochat
 
LU
User  Posts: 17
Nov 27, 2016 09:59
Hi Kirgman
I do believe a good render must be
1. artist friendly, delivering the best working efficiency.
2. easy to understand, without reading menu or watching tutorial.
3. with less settings as possible, easy to use, save time of artist.

I think the C4D workflow is perfect for majority, if Centileo render can follow c4d's philosophy, that would be benefit for all c4d user
I like to use c4d's layer based material system instead of using node based (because for middle and small project, node based has no working efficiency) , but if you can give us both of them, that would be perfect.

have a nice day.
 
Administrator  Posts: 894
Nov 27, 2016 11:56
Hi LU,

Thanks for your thoughts and welcome to our forum! I think you are right. We have noticed that C4D users love own C4D workflow a lot.
Our engine has already quite good speed and can improve in this area. And we currently need to add other graphics features like hair&fur, motion blur and particles, we want a lot of them. And materials...

I can say that we have almost no performance related settings. No #samples for different scene regions and etc. There are only "max iteration count" for render stop criterion. We will also add time and noise based render stop criterions. There are also GI clamp params to take noise under some limits. That's all. All other settings are for creativity. After 0.45 version which I hope to publish today (maybe after midnight) there should probably no need for current IPR priority param too, as the GUI lags are probably in the past (but we need more user tests to confirm).

However we have a lot of settings in material. It is very fat Uber Material. And this is not over. There will be a lot more shaders/texture types with ultimate flexibility.
Current drawbacks is that we need to support native C4D things, especially TextureTag. The most tricky thing now is to support layering materials on top of each other using these tags. However selection tags are working.
As for shaders/textures we currently have own selection menu and currently support only own shaders. See the screenshots. The reason is that C4D textures/layers/channels were not yet implemented. Also the converter from C4D native material is too limited for now.

We haven't used native Cinema texture slot because I hope it's not right to put user into confusion in the material menu telling him what is supported or not from the very long list of C4D textures menu wherein our supported shaders are hidden deeply in 2-nd level.
We have built own menu of shaders just to tell what is supported for sure. Our own shaders can be copy/pasted among different materials, aslo can drag&drop.
It is possible to build a node-based workflow on top of that. Many things are ready, just a suitable GUI choice is needed. It can be similar in some sense to the current Octane or Arnold node-based shader network.

But there is also a plan to support native C4D materials and shaders. This task can probably be done partially, not sure yet how far we can go, e.g. with glow. But we will try to do it. It depends on how we can extract their visual behavior into maths to code them inside GPU.

Kirill
material_refl.jpg (153.34 Kb)
CentiLeo Chat: https://t.me/centileochat
Pages: 1
Users browsing this topic (2 guests)