Page 1 of 2
Laubwerk and Octane
Posted: Tue Dec 01, 2020 6:19 pm
by blastframe
Hello,
I recently purchased Laubwerk Surface Spread & Plant Kit for Cinema 4D. They incredible products, but do not work properly with Octane. The biggest issues are between the Editor (Viewport) and Octane Live Viewer.
As you can see in this video, Octane will only render what is in the Editor, which forces the user to use dense Render Geometry. It also does not work with Multi-Instances. Both of those factors make the application unusable with Octane:
https://youtu.be/wn0VY_OsFsw
I contacted Laubwerk support about the issue and they explained that these would need to be solved on the side of the renderer. Having different geometry in the Viewport and Live Viewer is possible with Octane Scatter, so it seems like this functionality exists. Is it possible for 3rd party applications to create plugins that work this way with Octane?
Thank you.
Re: Laubwerk and Octane
Posted: Sun Dec 06, 2020 8:13 pm
by SSmolak
The same issue is with another instancer like Forester. It would be great if Octane respect these settings. Workaround at the moment is to set display tag on the instanced object and here you can set it to box or skeleton style of viewport display.
Re: Laubwerk and Octane
Posted: Wed Jan 13, 2021 2:47 pm
by Alamgir
Hello Everyone,
I am one of the developers currently working on Laubwerk's SurfaceSPREAD plugin for Cinema 4D. I have tried to contact Ahmet regarding this problem through E-mail a while ago but I haven't been able to get a reply from him. I am hoping that I will have more luck getting the attention of someone from Octane here.
I have made some tests in Interactive Renderings from Corona, Arnold and Redshift and the following are my findings:

- The table shows the rendering result with different renderers with different instance modes set with SurfaceSPREAD.
An 'X' means that the given renderer fails to render SurfaceSPREAD instances with the given instance setting.
There are two problems with Octane Render that you will be able to see in this table that I would like to be looked at by Octane Render:
- 1. The first and the more important is Octane Render's lack of support for multi-instances.
2. The second being that nothing is rendered when SurfaceSPREAD is used in Merged Boxes and Render Instance modes. To solve this there could be two approaches:
- a. I believe that the reason it doesn't render anything with Octane is because an attempt was made to use
SurfaceSPREAD's API with Octane Render and that attempt is currently broken and causing this. I know this
because if I change SurfaceSPREAD object's id (to anything else than what it currently is) then Octane
Render renders Merged Boxes in Merged Boxes mode, which is in line with how Arnold and Redshift behave.
Simply removing the broken code would already be better than what is happening currently.
b. The second and better approach would be to use the SurfaceSPREAD API and allow rendering of render geometry
instead of merged boxes. Corona Render is using the SurfaceSPREAD API and that is why it renders render
geometry in Merged Boxes mode.
If someone from Octane picks this up I have sent Ahmet an e-mail with more details on how to solve this problem. I also added an NFR license for SurfaceSPREAD to Ahmet's Laubwerk account to make sure the problem is testable. If a copy of the E-mail or an NFR is needed for another account please let me know.
I would really like to solve this issue as soon as possible but to proceed further I will need help from the great folks at Octane and of course we will help however we can to get this resolved promptly. I hope to hear from someone who can help us with this soon.
Best Regards,
Alamgir Nasir
Re: Laubwerk and Octane
Posted: Wed Jan 13, 2021 3:04 pm
by aoktar
SSmolak wrote:The same issue is with another instancer like Forester. It would be great if Octane respect these settings. Workaround at the moment is to set display tag on the instanced object and here you can set it to box or skeleton style of viewport display.
It's not about wishing respect or so. It's software not human:) Probably nobody is aware of how much effort I spent to find a way for these, but the current system of LV is not giving any posibility to get render data for objects. I cannot change any design in this area after a lot of works. There's the only way to write a special bridge for special objects like Forester/SurfaceSpread. It required to have extra time and communication between developer teams.
Re: Laubwerk and Octane
Posted: Wed Jan 13, 2021 5:53 pm
by blastframe
aoktar wrote:SSmolak wrote:The same issue is with another instancer like Forester. It would be great if Octane respect these settings. Workaround at the moment is to set display tag on the instanced object and here you can set it to box or skeleton style of viewport display.
It's not about wishing respect or so. It's software not human:) Probably nobody is aware of how much effort I spent to find a way for these, but the current system of LV is not giving any posibility to get render data for objects. I cannot change any design in this area after a lot of works. There's the only way to write a special bridge for special objects like Forester/SurfaceSpread. It required to have extra time and communication between developer teams.
I don't think SSmolak meant human respect. And we all know how hard you have worked on this plugin.
I have a question that might help: how is it possible to have proxy geometry in the Viewport and still render the objects in the Live Viewer with Octane Scatter? As it is working with Effectors, it seems to be using Cinema 4D's MoGraph module. Can 3rd party plugins use this method too?
Re: Laubwerk and Octane
Posted: Wed Jan 13, 2021 7:39 pm
by aoktar
blastframe wrote:
I have a question that might help: how is it possible to have proxy geometry in the Viewport and still render the objects in the Live Viewer with Octane Scatter? As it is working with Effectors, it seems to be using Cinema 4D's MoGraph module. Can 3rd party plugins use this method too?
Because I have all possibilities with a custom object, it let me draw whatever I want. But with any external plugin or c4d objects, there's two modes on geometry. Viewport or Render data. Render data is only available in render sessions. As I try to explain, there's not any native way to ask for renderdata while we're in viewport mode(LV's).
For example for Laubwerk objects, when they are presented as proxy in viewport and render geometry data is not available to collect. Repeating again, only way to make a bridge between 3rd parties to communicate more freely by surpassing the C4D system.
I don't love it much because with each exception there will be extra performance loss.
Re: Laubwerk and Octane
Posted: Wed Jan 13, 2021 9:00 pm
by blastframe
aoktar wrote:blastframe wrote:
I have a question that might help: how is it possible to have proxy geometry in the Viewport and still render the objects in the Live Viewer with Octane Scatter? As it is working with Effectors, it seems to be using Cinema 4D's MoGraph module. Can 3rd party plugins use this method too?
Because I have all possibilities with a custom object, it let me draw whatever I want. But with any external plugin or c4d objects, there's two modes on geometry. Viewport or Render data. Render data is only available in render sessions. As I try to explain, there's not any native way to ask for renderdata while we're in viewport mode(LV's).
For example for Laubwerk objects, when they are presented as proxy in viewport and render geometry data is not available to collect. Repeating again, only way to make a bridge between 3rd parties to communicate more freely by surpassing the C4D system.
I don't love it much because with each exception there will be extra performance loss.
That makes sense. It may not be ideal, but perhaps the 3rd party plugin developers can develop for the Octane Scatter object.
Re: Laubwerk and Octane
Posted: Fri Jan 15, 2021 5:53 pm
by Alamgir
Because I have all possibilities with a custom object, it let me draw whatever I want. But with any external plugin or c4d objects, there's two modes on geometry. Viewport or Render data. Render data is only available in render sessions. As I try to explain, there's not any native way to ask for renderdata while we're in viewport mode(LV's).
For example for Laubwerk objects, when they are presented as proxy in viewport and render geometry data is not available to collect. Repeating again, only way to make a bridge between 3rd parties to communicate more freely by surpassing the C4D system.
I don't love it much because with each exception there will be extra performance loss.
Hi Ahmet,
Thanks for picking up on this thread! I believe there is a bit of a misunderstanding here still.
The real issue is that Octane currently appears to not render SurfaceSPREAD objects which uses the regular Cinema 4D Instance objects in Multi-Instance mode. None of the other renderers I listed in the table above, except for perhaps Corona, have any special support built in for SurfaceSPREAD and they still work great. So this looks like something that should just work for every plugin object (internally generating a regular Cinema 4D Multi-Instance) just doesn't work.
The second issue was that it appears that there actually is some special handling going on for SurfaceSPREAD objects, because the problem of Octane not rendering anything when SurfaceSPREAD is set to Render Instance mode immediately go away, when we change the Plugin ID of the SurfaceSPREAD object. This indicates that SurfaceSPREAD appears to already have some special handling in Octane, which, in this case, actually breaks things. So for this case, we would actually advocate to remove any special handling that may already be there for SurfaceSPREAD.
As you see, we are not actually asking for special handling, it would just be great if regular Cinema 4D functionality that other renderers support, would also be supported in Octane. It would be great if you could have a look at least at these two issues and we would be happy to help in any way we can!
Best,
Alamgir Nasir
Re: Laubwerk and Octane
Posted: Fri Jan 15, 2021 6:46 pm
by aoktar
Alamgir wrote:
Hi Ahmet,
Thanks for picking up on this thread! I believe there is a bit of a misunderstanding here still.
The real issue is that Octane currently appears to not render SurfaceSPREAD objects which uses the regular Cinema 4D Instance objects in Multi-Instance mode. None of the other renderers I listed in the table above, except for perhaps Corona, have any special support built in for SurfaceSPREAD and they still work great. So this looks like something that should just work for every plugin object (internally generating a regular Cinema 4D Multi-Instance) just doesn't work.
The second issue was that it appears that there actually is some special handling going on for SurfaceSPREAD objects, because the problem of Octane not rendering anything when SurfaceSPREAD is set to Render Instance mode immediately go away, when we change the Plugin ID of the SurfaceSPREAD object. This indicates that SurfaceSPREAD appears to already have some special handling in Octane, which, in this case, actually breaks things. So for this case, we would actually advocate to remove any special handling that may already be there for SurfaceSPREAD.
As you see, we are not actually asking for special handling, it would just be great if regular Cinema 4D functionality that other renderers support, would also be supported in Octane. It would be great if you could have a look at least at these two issues and we would be happy to help in any way we can!
Best,
Alamgir Nasir
Hi Alamgir,
After checking the codes that I see we have a special handling for SS. Sorry for that seems I forgot what we did because probably it was very long time ago. There's something broken if it's not working as standard types in expected cases. We should give some care to fix it .
Let's talk for that!
Re: Laubwerk and Octane
Posted: Sat Jan 16, 2021 7:03 pm
by SSmolak
If Octane plugin can render orbx proxies which are displayed as simplified pseudo-wire objects why it can't do the same for instances or share this simplified display method to external instancers ?