Rhino 7 SubD objects crashing system in Raytraced Mode

I’m currently working on a rendered scene of a bedroom. I’m working with only 6 textures and a couple lights. This file in Rhino 6 rendered no problem in Raytrace viewer, however, once I loaded it into Rhino 7 and added some small SubD elements (keys on a keyboard and a curtain), the program will crash any time I try to start up a render or set my view to Raytrace. When I try to convert these objects to NURBs, I get a warning that I will run out of memory. When I use _ExtractRenderMesh, the file size almost doubles with the same crashing issue.

My system is:
Intel(R) Core™ i7-8750H CPU @ 2.20GHz
16Gb Ram
Nvidia RTX 2070 with 8Gb dedicated ram

Any tips or advice on how to fix this issue or work with Subd objects more efficiently?

Hello - please post the file to tech@mcneel.com, with a link back to this topic in your comments, also please run the SystemInfo command in Rhino and copy/paste the results here.

-Pascal

Pascal,

Here is the systeminfo:

Rhino 7 SR9 2021-8-10 (Rhino 7, 7.9.21222.15001, Git hash:master @ 190335c3fb65efe86c302714a8959a7dadfe667b)
License type: Evaluation, build 2021-08-10
License details: Cloud Zoo
Expires on: 2021-11-17

Windows 10.0.19042 SR0.0 or greater (Physical RAM: 16Gb)

Computer platform: LAPTOP - Plugged in [100% battery remaining]

Hybrid graphics configuration.
Primary display: Intel(R) UHD Graphics 630 (Intel) Memory: 1GB, Driver date: 6-1-2021 (M-D-Y).
> Integrated graphics device with 3 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
Primary OpenGL: NVIDIA GeForce RTX 2070 with Max-Q Design (NVidia) Memory: 8GB, Driver date: 4-18-2021 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 466.18
> Integrated accelerated graphics device with 4 adapter port(s)
- Video pass-through to primary display device

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 4-18-2021
Driver Version: 27.21.14.6618
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 8 GB

I will work on sending over the file file.

For the time, I have exported all subD objects as an obj and then reimported them into the scene. Raytrace is working fine now.

Hi Jeffrey - you can export just the SubD objects - maybe that will be enough to see the problem.

-Pascal

I have sent off the file. It is a wetransfer link due to file size.

Hi Jeffrey - - it takes a very long time to kick off the raytrace here but it seems to work OK - can you confirm that the file you sent also crashes for you? I guess we may need the whole thing…

Does it crash ‘hard’ or just hang? Do you get a crash report UI? if so, please send that in. If it hangs, please generate a dump from Windows task manager while it is still in limbo -

zip the results (large) and upload to www.rhino3d.com/upload to my attention.

-Pascal

I just uploaded the zip folder for the dump file.

You are correct, the program does not hard crash, but hangs when starting Raytrace mode. I started loading the Raytrace viewer and it has been hung for the last 20 minutes. Not really a viable option.

Let me know if you need any additional support docs or files.

Hi Jeffrey - the render meshes used by the raytracer are very very fine in this file - this may be our fault, we are looking at the template settings but to fix, or at least test, try:
Open your file.
Open DocumentProperties > Mesh page.
Change to Custom > Details
Set the SubD raytracing slider all the way left.

Is that any better?

-Pascal

Pascal,

When I opened the Mesh tab and expanded all the options, the slider you indicated was defaulted to the left. That said, afterward, there seems to be a substantial improvement in performance. When I load the raytrace viewport, it doesn’t get hung up and will actually start the render.

I am still seeing a significant difference between the model with SubD objects and the version that I exported the SubD objects and reimported as an obj. When running Raytrace on the SubD objects, it takes approximately 10 minutes to get through 85 passes compared to 8-10 minutes to run 500 passes without subD.

Either way, the adjustment you recommended I make does improve performance.

Thank you for the help on this issue. I will keep playing around with SubD objects to see if I can find other performance improvements.

Let me know if you have any other suggestions for me!

Jeff

Hi Jeff - can you run ExtractRenderMesh on one of the SubDs and compare it to the obj mesh that works well for the same object?

-Pascal

Pascal,

When I opened up the file with the OBJ mesh objects and copied in the SubD from the other model file, I ran extractrendermesh and ended up with an ultra dense mesh from the SubD object. I went into setting and noticed that in this model, the SubD mesh render setting slider was not defaulted to the left but set where indicated in your screen shot. I made the adjustment and ran extractrendermesh again. I have attached a screen grab of all the objects for visual reference.

Hi Jeffrey - OK, thanks - I would like to determine for sure if raytracing is normal (i.e the same as or nearly, to the obj meshes) when the SubD’s are known to have the ‘all the way left’ raytrace mesh setting. If not then there is more to look at here. I’ll test some more with your example file, if you can send me the obj versions of the objects.

BTW, you can help yourself in many cases, like with identical key caps, by using blocks.

-Pascal

I’m wondering if the problem started when I ran QuadRemesh to create the initial SubD object and created way too many mesh faces (1011 on the ExtractRenderMesh)

Do you have recommended settings in the QuadRemesh dialogue box that might simplify the geometry.

Also, looking at the object types, I swapped the subd and the adjusted render mesh object in that screen. See below for the correct labels.

Hi Jeffrey - yes, certainly your SubD objects are far denser than they need to be - was QuadRemesh an expedient to get something smooth from some original meshes or had you built objects in Rhino? Cause these shapes are not really what I would call making best use of SubDs… you could but I’d build from scratch, I think, or I’d make a surface model. Do you have one or two of the original objects that were QuadRemeshed?

-Pascal

I agree, the keys on the keyboard were not a necessary use of the subD object. These were remeshed from an imported OBJ so I could make adjustments to shape, but mostly to play around with SubD. The curtain that is included was maybe a better use of SubD as I was able to add some organic character. I will send over a file using the upload link you provided earlier. I’ll include the original OBJ that I remeshed for the keyboard, the subD version of these objects, and the OBJversion. Unfortunately for the curtain object, I don’t have the original polysurface that I started with.

Jeff

Hi Jeff - even with the slider left, the meshes used by Rhino for raytracing are significantly denser than the re-imported obj meshes - by a factor of ~9 or so on the one I checked. I would say that is the difference.

-Pascal

That would explain the roughly 9 times difference in render speed. Thanks for the help and the tips for avoiding this issue.