Page 3 of 5

Re: UltraScatter and Voxelizer?

Posted: Wed Nov 30, 2016 5:02 pm
by rajib
face_off wrote:
Btw. if you do manage to add Octane Scatter nodes to the plugin, can you see if the CSV created out of Phantom Scatter can be added to a scatter node in the NGE ?
I think a much better solution would be if this was implemented directly into the DzInstanceGroupNode item. You should be able to do this yourself with some DAZ script. Copy the Octane Scatter node (containing the instances) into the Windows clipboard (in PhamtonScatter or Standalone), select the DzInstanceGroupNode, run the script - which would iterate through the Windows clipboard CSV transforms, and add each as a DzInstanceGroupItem to the selected DzInstanceGroupNode.

Paul
Thanks for the idea Paul :). Will explore.

Re: UltraScatter and Voxelizer?

Posted: Thu Dec 01, 2016 12:50 am
by face_off
Below is a (highly) experimental build which attempts to provide support for grouped instances. Pls let me know how you go with it.

3.4.5.30
- Added support for Instances Groups - so UltraScatter and Voxelizer scenes may now work

https://render.otoy.com/customerdownloa ... _Win64.exe

Paul

Re: UltraScatter and Voxelizer?

Posted: Thu Dec 01, 2016 7:12 am
by bmosalt
face_off wrote:Below is a (highly) experimental build which attempts to provide support for grouped instances.
It still has some issues with placement (see attached pic), but considering that previously this scene rendered with a bare field and a couple of trees this is a big step forward.
UltraScatter Example.png

Re: UltraScatter and Voxelizer?

Posted: Thu Dec 01, 2016 7:31 am
by face_off
Looking good. At a guess, there is something odd with the transform of that tree instance group. Perhaps is has nested instances? You will need to do some digging to isolate the specific instance that is not right and see if there is something obvious that might be causing it.

Paul

Re: UltraScatter and Voxelizer?

Posted: Fri Dec 02, 2016 2:59 pm
by rajib
face_off wrote:Below is a (highly) experimental build which attempts to provide support for grouped instances. Pls let me know how you go with it.

3.4.5.30
- Added support for Instances Groups - so UltraScatter and Voxelizer scenes may now work

https://render.otoy.com/customerdownloa ... _Win64.exe

Paul
Thanks Paul :), will download now and try. I will try the nested instances and if that has problems will provide you the scene files. I will still use the cubes, circle and the cones to create the scene so that you can easily open it for the debugging.

Re: UltraScatter and Voxelizer?

Posted: Fri Dec 02, 2016 5:57 pm
by rajib
rajib wrote:
face_off wrote:Below is a (highly) experimental build which attempts to provide support for grouped instances. Pls let me know how you go with it.

3.4.5.30
- Added support for Instances Groups - so UltraScatter and Voxelizer scenes may now work

https://render.otoy.com/customerdownloa ... _Win64.exe

Paul
Thanks Paul :), will download now and try. I will try the nested instances and if that has problems will provide you the scene files. I will still use the cubes, circle and the cones to create the scene so that you can easily open it for the debugging.
Hi Paul,

Have tested and have an update for you. It works perfectly with any DzInstanceGroupNode groups created but there is an additional property you need to check for before you create the scatter nodes in the Octane Plugin. For each DzInstanceGroupNode node you find, you need to call getPreviewControl(). That returns a DzBoolProperty type and you can call getBoolValue() to get the true/false value. If the getPreviewControl() returns true, do not use that DzInstanceGroupNode node to create scatter nodes in Octane. Simply ignore it. This node is meant for Daz to display a low resource version of the instances on its Viewport. If the getPreviewControl() returns false it indicates that that node is for actual rendering and the Octane plugin should create the scatter nodes based on that. Currently I don't think the experimental plugin is taking that into account and as such is rendering twice the number of instances for scenes created with scripts like UltraScatter that add an additional proxy (low rerource) instances node meant only for preview in Daz Viewport.

//Sample script code
var PreviewControl = CurrentDazInstanceGroupNode.getPreviewControl();
var IsPreviewNode = PreviewControl.getBoolValue();

if(IsPreviewNode == true)
continue; // Ignore this
else
CreateOctaneScatterNodes(CurrentDazInstanceGroupNode);//Create the scatter nodes based on this

In the below screenshot from the CubeinstancesTest.duf I sent you in the other post, if you look at the Daz Viewport, the dark semitransparent cubes are low resource preview instances in the UltraScattered cube proxies node. That node will return true for getPreviewControl(). In the Octane Viewport, you can see it is rendering the actual instances contained in the cube Instances group (solid White) and also the preview node UltraScattered cube proxies (semi transparent cubes). Hence the extra instance being rendered in Octane plugin.
Preview instance and actual instances being rendered in Octane Viewport
Preview instance and actual instances being rendered in Octane Viewport
Switching to IRAY render you can see that IRAY is ignoring the preview node, Octane plugin is not.
IRAY ignoring PreviewNodes, Octane is not
IRAY ignoring PreviewNodes, Octane is not
Finally if I manually turn off the UltraScattered cube proxies visibility, both IRAY and Octane Viewports match.
Manually turning off the Preview node
Manually turning off the Preview node
So like I mentioned above the Octane plugin need to check the getPreviewControl() for each of the DzInstanceGroupNode nodes it finds and it that returns true, ignore that group node.

Hope this helps. Do let me know if you need anything else. I am attaching the scene file with this message again. It will have the visibility on UltraScattered cube proxies on and you can verify that the IRAY and Octane Viewport won't match until the Octane plugin handles the getPreviewControl(). The scene file has UltraScatter created nodes.

Regards,
Rajib

Re: UltraScatter and Voxelizer?

Posted: Sat Dec 03, 2016 2:58 am
by face_off
So like I mentioned above the Octane plugin need to check the getPreviewControl() for each of the DzInstanceGroupNode nodes it finds and it that returns true, ignore that group node.
This approach is not working correctly - you can see the original 6 cubes from your previous scene are not rendering.

Paul

Re: UltraScatter and Voxelizer?

Posted: Sat Dec 03, 2016 3:36 am
by face_off
Actually - it's the cubes in the instance group attached to the ground which are not rendering. I will investigate further.

Paul

Re: UltraScatter and Voxelizer?

Posted: Sat Dec 03, 2016 5:21 am
by face_off
I can confirm that getPreviewControl()->getBoolValue() is returning TRUE for cube_GroupInstance. You should be able to confirm this yourself with your script (delete everything else from the scene). This would appear to be a bug in DAZStudio, although perhaps there is some other override which we are missing.

The documentation for getPreviewControl() states:

Code: Select all

The property controlling whether or not the node is drawn in the viewport.
Paul

Re: UltraScatter and Voxelizer?

Posted: Sat Dec 03, 2016 6:40 am
by rajib
face_off wrote:I can confirm that getPreviewControl()->getBoolValue() is returning TRUE for cube_GroupInstance. You should be able to confirm this yourself with your script (delete everything else from the scene). This would appear to be a bug in DAZStudio, although perhaps there is some other override which we are missing.

The documentation for getPreviewControl() states:

Code: Select all

The property controlling whether or not the node is drawn in the viewport.
Paul
Hi Paul,

You are right. I completely missed that. I was so busy looking at the UltraScatter created nodes that I forgot to check the getPreviewControl on the manually created instance group node. Like you said it is returning true. I will explore further. I think there might be some other setting that is telling IRAY to ignore the proxy nodes and render only the required nodes. Will explore and update if I find anything.

Regards,
Rajib