Cinema 4D Materials Conversion to Octane Materials

Sub forum for bug reports

Moderators: ChrisHekman, aoktar

Forum rules
Before posting a bug report, please check the following:
1. That the issue has not already been disclosed
2. That the issue is specific to this plugin, and not Octane in general (Try reproducing it in Standalone)
Bugs related to the Octane Engine itself should be posted into the Standalone Support sub-forum.


All bug reports should include the information below, along with a detailed description of the issue and steps to reproduce it.
A. Operating System, including version (i.e. Win 7, OSX 10.11.2, Ubuntu 14.04, etc.)
B. Graphics Card(s) model (i.e. GTX 580 - 3GB, TITAN, etc.)
C. RAM Capacity (i.e. 6 GB)
D. Nvidia driver version (i.e. 7.50, 7.5.22)
E. OctaneRender Standalone version, if installed (i.e. 2.24.2, 2.23, etc.)
F. OctaneRender plugin version (i.e. v2.25 - 2.21)
G. Host application version, including build number if available (i.e. 3ds Max 2016 Build 18.0)
H. A detailed description of the issue and steps to reproduce it (Include Screenshots or video capture), as well as an example scene if applicable.
I. Copies of the Octane Log window and Console window outputs (full text attached as a file to your post is recommended).


Please note that reports of issues inside existing threads will be ignored/removed, and reports may be closed if the reporter does not respond to subsequent queries in the thread.
User avatar
jayroth
Licensed Customer
Posts: 393
Joined: Fri May 28, 2010 7:29 pm
Location: Orange County, CA, USA
Contact:

I have started to use the material conversion option for Cinema 4D materials in Octane. I have run into a variety of issues with the results. I know it's alot of work, but there are many issues with conversions that tend to map directly to Octane. I recommend using the Washing Machine object available in the Content Browser (search and you will find it) to test with. The materials within this object should be able to convert with this option, but I have found very few actually convert successfully. If I can do these conversions manually and get satisfactory results, then this option should be able to do so as well.

I think this work is worth doing. There are so many rendering choices for Cinema today, and with each choice using a unique materials system, those options that reasonably support the Cinema system will surely benefit above the others.
CaseLabs Mercury S8 / ASUS Z10PE-D8 WS / Crucial 64GB 2133 DDR4 / 2 XEON E5-2687W v3 3.1 GHz / EVGA 1600 P2 / 2 EVGA RTX 2080Ti FTW3 Hybrid/ Cinema 4D

Is it fast? Oh, yeah!
User avatar
aoktar
Octane Plugin Developer
Posts: 16066
Joined: Tue Mar 23, 2010 8:28 pm
Location: Türkiye
Contact:

there is lot of impossible conversations. C4D material system has lot of option which are very away from physical based material system. Also lot of differences on parameters. Ex. reflection maps, colored transparency, etc.. That's very hard to extract a good conversation formula.

Both renderer is similar as black & white.
Octane For Cinema 4D developer / 3d generalist

3930k / 16gb / 780ti + 1070/1080 / psu 1600w / numerous hw
User avatar
jayroth
Licensed Customer
Posts: 393
Joined: Fri May 28, 2010 7:29 pm
Location: Orange County, CA, USA
Contact:

I understand, but I am referring to things like UV spaces, alpha stencils, and the like. These are basic functions and operate the same regardless of the rendering engine. If you try the conversion routines on that washing machine object you will see some of the glaring issues. Of course, if the goal is not what it seems to be by offering the conversion feature, perhaps it might be best to mark it as 'experimental' or remove it altogether.
CaseLabs Mercury S8 / ASUS Z10PE-D8 WS / Crucial 64GB 2133 DDR4 / 2 XEON E5-2687W v3 3.1 GHz / EVGA 1600 P2 / 2 EVGA RTX 2080Ti FTW3 Hybrid/ Cinema 4D

Is it fast? Oh, yeah!
User avatar
aoktar
Octane Plugin Developer
Posts: 16066
Joined: Tue Mar 23, 2010 8:28 pm
Location: Türkiye
Contact:

Which renderer are you talking I don't know but I'm sure they are not physical based.
There's not any renderer as Octane. We have lot of limitations of pure gpu renderer.If you follow the short history of development you may justify. I don't prefer to remove anythings because many people use it. And I never called it as fully compatible or so. Never will be like that, maybe a little bit better but that's all.
Octane For Cinema 4D developer / 3d generalist

3930k / 16gb / 780ti + 1070/1080 / psu 1600w / numerous hw
User avatar
jayroth
Licensed Customer
Posts: 393
Joined: Fri May 28, 2010 7:29 pm
Location: Orange County, CA, USA
Contact:

Aoktar, I am just trying to help. I am not referring to rendering algorithms here. I am referring to the way materials are used in Cinema as a general concept. The two thoughts are very different.

Cinema stacks materials for a final output. This is evident when multiple material tags are present on an object, with or without selection tags to limit the effect of materials. These materials are evaluated by Cinema from left to right, with the right most material being on top of the material stack, as I understand it. This is the material that is viewed when rendered, and with proper masking or other effects, will be influenced by the materials residing underneath in the stack. Many renderers have the ability to evaluate multiple materials in a similar manner, though Octane may not, and that's OK -- there are other ways to get the same result, if not as elegant. In Octane, multiple Octane Mix materials are likely required to do this (though I am no Octane materials expert). This is likely the most difficult method to convert, as there are so many artistic choices involved, and you cannot possibly determine the intent of the artist by simply looking at the materials stack. However, you can make certain decisions based upon what you see in that stack. Specifically, when you have a material that consists of an alpha, you know that any other channels contained within that material are being masked by that alpha. The color, spec/reflectance, bump, etc can each be thought of a separate element that are piped into one or more Octane Mix materials, using the alpha image as the Mix Amount driver in the Mix material. What we are missing here is the context of the intended surface, as this goes beyond a simple material on its own.

It would be great if you can emulate the logic of the way the Cinema materials are applied to an object, and the break down each of those materials and convert them to the appropriate series of Octane materials and assemble a final material by doing so (or at least, enough of a framework to allow the artist to easily put together the rest). Let's take the example of the Washing Machine found in the Content Browser. There are many different objects that make up with Washing Machine, so let's start with one: The Front Panel. The Front Panel consists of two polygon objects, Front Panel and Drawer, with Drawer a child of the Front Panel. The Front Panel is the child of a SubD generator also named Front Panel. The materials are applied to the SubdD generator and the polygon objects contain polygon selection tags which are referenced by the materials. This is a common arrangement.

Now, the materials, going from left to right, consists first of Painted Metal, which has a Color, Reflectance and Bump channels. Painted Metal is followed by Aluminium 01, which has a Color and Reflectance channel. Next, comes Program Settings, which has a Color, Reflectance and Alpha channels, and finally Programs, which also has Color, Reflectance and Alpha channels active. Even thought the child polygon object Front Panel and Drawer have selection tags, they are not reference by the materials in this case.

Painted Metal was converted to an Octane Glossy Material, with a Cinema Noise Shader piped into the Bump channel of the Octane Glossy Material. The color channel was converted to a diffuse color, though with what I would call a conversion error on the Value channel (Cinema's value was 90.816% and Octane's value was .803663 -- given that a percentage factors directly into a 0-1 float range by moving the decimal, I would expect a value more like .90816 instead.) I suspect that this conversion was done on with RGB values instead of HSV values, though I do not know which Cinema stores natively. The error is small, and not a concern for me, but I wanted to point it out for the sake of clarity. The Cinema material is set to a Lambertian color model. I do not know what color model Octane is using. The Special channel in Cinema for this material is using the legacy Default Specular, with a Global Reflection Brightness and Global Specular Brightness at 15%. As Octane does not have these analogues, there is no way to convert them directly. Instead, the Octane Converter added no specific Specular value at all (Color was set to RGB 1,1,1 and Float was set to 0), but did add a Roughness Float value of 0.18. This results in a notably different appearance, but it is still in the "ballpark." Overall, I would say that this particular material converted well enough. It might require a tweak here or there, but looked good in a pinch. I adjusted the index of the material to 2 to get a more reflective appearance, similar to the Cinema original (the converter set the index to 1.3).

Aluminium 01, was converted to an Octane Glossy Material. The original Cinema material was set to Lambertian on the Color channel (the color swatch was a visual match, though the numbers scaled differently -- again, fine, though a tad disconcerting) and the Reflectance channel was set to Beckmann with Attenuation set to Maximum with a Roughness value at 35%. The Roughness value translated directly into the Octane Glossy Material as 0.35. Nothing else came over, which is understandable as Octane does not support the Beckmann model to my understanding. That said, the two looked quite different, and my solution was to adjust the Index to 5, which just looked better, to my eye. I know that is quite different from the actual IOR value for aluminum, and I was just experimenting here. No real solution available from a conversion point of view, and I consider the conversion of this material to be adequate.

Program Settings was converted to an Octane Glossy Material. The original Cinema material had an active Color, Reflectance and Alpha channel. The color channel was translated accurately (to my eye, though numerically, again, doesn't scale the same way). The Reflectance channel didn't really translate well; it had a Blinn legacy type, with an additive attenuation. The Octane conversion had a very dim color value, and added a Roughness value of 0.5, which I thought was odd. However, the real issue was with the Alpha. It was converted to with an Invert node on the texture channel correctly, as Cinema had the same setting. Technically, this material converted correctly, though the Invert node was not necessary, as the Image Texture node has the same setting, and is a more accurate conversion in my opinion. I don't like unnecessary nodes, as they can confuse the process of debugging materials.

Program was also converted to an Octane Glossy material, and like the previous material, it too converted technically correct, though also with the unnecessary Invert node instead of just setting the Invert option in the Image Texture node.

As individual parts, all of these materials converted correctly, however, the last two, Program Settings and Programs, I view as the problem here, as they do not produce the intended result when all of the materials are applied to the object. And this is where we get outside of the idea of a simple conversion, and into the idea of context. Again, as I understand it, Octane does not evaluate material order and stacking in the same manner in which Cinema does (if at all). Instead, I often see the Octane Mix materials used to accomplish similar effects instead. However, when I try to simply use the Octane Mix Material with these converted materials as components, the process still fails.

At present, I have had to rebuild the two materials containing alphas, in order to get them to mask as expected. I did so by creating a new Octane Mix material, with the Painted Metal as a component, a material with the Alpha and RGB Spectrum multiplied together and piped into the other component, and the same alpha piped into the Mix Amount. I am still experimenting to see if I can simplify this process, but I would be happy for any tips that can be offered to do so. I have watched the materials tuts several times, but haven't seen anything in particular that would help me to better understand this behavior. The tutorials on Brograph.com did help a bit, though.

To wrap all of this up, the conversion is actually working on individual materials more or less (as good as can be expected, I think, until Octane offers a broader support, if ever) but the issue is the ability to Material stack like Cinema does, as this provides the overall context of the final surfacing that is desired. This is the harder nut to crack for sure, but hopefully some of this will help to do so. If not, sorry I wasted your time. I have tried to be as constructive here as I can be, and I definitely appreciate all of the hard work that you and OTOY have put into what we have today. I'm very much looking forward to using Octane well into the future.
CaseLabs Mercury S8 / ASUS Z10PE-D8 WS / Crucial 64GB 2133 DDR4 / 2 XEON E5-2687W v3 3.1 GHz / EVGA 1600 P2 / 2 EVGA RTX 2080Ti FTW3 Hybrid/ Cinema 4D

Is it fast? Oh, yeah!
User avatar
aoktar
Octane Plugin Developer
Posts: 16066
Joined: Tue Mar 23, 2010 8:28 pm
Location: Türkiye
Contact:

Of course i understand. But i have to explain lot of things to communicate better. Things seem very similar from the point of view of many users. They think that if another renderer can do it, so why you don't do. Is it easy so? Not really!

Let's talk about stacking materials over objects. There is very different workflow against a cpu renderer. Biggest one, we can't run any cpu shader in gpu. We have to convert and create a shader before rendering stage and register to renderer.
Opposite of this, a cpu renderer can duplicate/arrange multiply material copies while sampling a pixel. But we can't do it. Imagine that, if you stack some materials and wish to get rendered in Octane. We have to create some additional mixed materials seperately for each assigned objects. Teorically that's possible to obtain before a render session. But it causes extra problems. Octane plugin is also a state engine else of default renderer. So we have to track, detect and update any partial data/materials/textures/objects/etc... This is invisible by user but very big process in background while you are running a Interactive Render session.

I short, don't think that i haven't thought about these. But seems very computational extensive process. And not worth to loose current performance and stability. I'll check 3.0's possibilities about this kind of integrations. About conversions, i don't have time to improve it. Maybe later but not now. Version 2.0 is near to be fixed. I'll publish one or two version for it and 3.0's period will begin.
Octane For Cinema 4D developer / 3d generalist

3930k / 16gb / 780ti + 1070/1080 / psu 1600w / numerous hw
User avatar
jayroth
Licensed Customer
Posts: 393
Joined: Fri May 28, 2010 7:29 pm
Location: Orange County, CA, USA
Contact:

Thanks, Aoktar, I appreciate the reply.

By any chance, do you recall which of your tutorial videos best deals with alpha masks? There is quite alot of (good) material covered, but I don't have time to go through it linearly at the moment.
CaseLabs Mercury S8 / ASUS Z10PE-D8 WS / Crucial 64GB 2133 DDR4 / 2 XEON E5-2687W v3 3.1 GHz / EVGA 1600 P2 / 2 EVGA RTX 2080Ti FTW3 Hybrid/ Cinema 4D

Is it fast? Oh, yeah!
User avatar
aoktar
Octane Plugin Developer
Posts: 16066
Joined: Tue Mar 23, 2010 8:28 pm
Location: Türkiye
Contact:

What do you mean exactly? Alpha for materials or render layers(compositing objects over a background)?
Octane For Cinema 4D developer / 3d generalist

3930k / 16gb / 780ti + 1070/1080 / psu 1600w / numerous hw
User avatar
jayroth
Licensed Customer
Posts: 393
Joined: Fri May 28, 2010 7:29 pm
Location: Orange County, CA, USA
Contact:

No, specifically alpha as a clipping method. I was not having success earlier, however, it seems that it may have been an incorrect file. I switched from a jpg to a png and things started working the way I expected.
CaseLabs Mercury S8 / ASUS Z10PE-D8 WS / Crucial 64GB 2133 DDR4 / 2 XEON E5-2687W v3 3.1 GHz / EVGA 1600 P2 / 2 EVGA RTX 2080Ti FTW3 Hybrid/ Cinema 4D

Is it fast? Oh, yeah!
User avatar
aoktar
Octane Plugin Developer
Posts: 16066
Joined: Tue Mar 23, 2010 8:28 pm
Location: Türkiye
Contact:

jayroth wrote:No, specifically alpha as a clipping method. I was not having success earlier, however, it seems that it may have been an incorrect file. I switched from a jpg to a png and things started working the way I expected.
Should be simple and immediately visible in render view. Imagetexture is correct node to use it. "Mode" is for using alpha or color of images. Of course that image should have a proper alpha channel. Otherwise you should use "color" mode.
Octane For Cinema 4D developer / 3d generalist

3930k / 16gb / 780ti + 1070/1080 / psu 1600w / numerous hw
Post Reply

Return to “Bug Reports”