Rhino should never slow down again

Hi @Mun144, @pascal,

It is a broad subject and I could write an Illiad, too, but will try to throw some ideas and concepts out there hoping they will help. I deal with quite complex architectural models populated with entourage elements inside Rhino on a daily basis and it is definitely workable is a seamless way, in rendered mode, as long as you understand what slows you down and what tricks you can use to speed things up.

Your system specs are more than enough, I work on similar spec workstation. You can bog down any supercomputer easily with overly complex entourage models or the way your models are built, in general, so no need to spend extra $$.

  1. the file size is not always relevant when it comes to speed. Especially if you work with blocks. You can have a very small file with 50,000 copies of same block definition and it will be very slow because of number of objects, and also a large file that has just a few complex joined mesh objects that will perform super fast.

  2. In rendered mode, Shadows and Skylight will slow things down quite a bit, so dont use them (make a separate display mode for that look)

  3. As mentioned above, the NUMBER of objects in the scene is what slows things down the most in my experience. I bet under the hood it is due to the fact that each object has a lot of properties associated with it that need to be handled separately. So whenever you can, especially when dealing with meshes imported from 3DWarehouse, try joining (_Join) the meshes into single objects, of join them per layer or material, so instead of blocks that consist of 1000’s of exploded individual faces, you actually have 5-10 meshes that represent the materials. If you need to edit the joined mesh, you dont need to always explode it - commands like _ExtractMeshPart, _SplitDisjointMesh and _ExtractMeshFaces are doing pretty good job with this workflow.

Try an experiment - get your heavy scene, select all, run _ExtractRenderMesh command, delete original objects (they stay selected) and run _Join command. You should see a drastic speed increase. Of course you can’t do it with the entire scene, but maybe parts of your buildings (i.e. all mullions, glass, etc). You can always keep your original more editable nurbs versions in a separate file. In scenes with a lot of detailed buildings, you can keep each of the detailed nurbs models in a separate file that has a corresponding joined meshed version and plug them into your main scene using Insert Block with “link” option (instead of embed), to keep your file size smaller.

  1. When it comes to entourage elements, definitely blocks are way to go. As mentioned above, you still want as small number of exploded faces in the block as possible, so it may take some cleanup of often crappy 3DWarehouse imports. I have seen models of a city block where the heaviest part of the model that was slowing things down was a nice tiny single shrub someone carelessly brought from 3DWarehouse.
    So when you create your blocks, it may be a good idea to create a ‘light’ version of the block. Use ReduceMesh command for that, or simply delete some not critical detais. You can work with the ‘light’ blocks while modeling, and then replace them at the end before rendering with your detailed ones. With few blocks, you can do it manually using ReplaceBlock command, with tons of them, you can come up with a naming convention (“Car150” vs “Car150–light”) and use the script I shared in this thread to mass-replace them all: Wish: viewport proxies for blocks

I am not Maxwell user, but assume all modern-day render engines have some sort of Proxy object / Instances system. The way it works is the detailed mesh geometry is saved as external reference file and only a simple representation (point, bounding box, reduced face count model) are used in the model vport - and the full geometry is loaded only during rendering time. Most useful for entourage elements (think: convert your 150 MB car to a proxy object - then you should be able to place 100s of them not decreasing the vport speed or render time) but also you can make more complex part of your scene into proxies (i.e. if you have many copies of the same apartment building in your master plan model, etc.).

  1. Take advantage of the nested layer system to keep your model well organized. No matter how complex the model is, the ability to quickly eliminate the parts of your scene that are not relevant to what you are currently modeling is critical.

  2. Use clipping planes - sometimes it may be a helpful trick to use several clipping planes that act as a ‘clipping box’ to clip out the non-relevant parts of your model or to let you see of work on some interior part of your model without hiding objects or layers. You should see some speed gains by doing that, too.

There is probably more concepts that don’t come to my mind right now, but hope the above can get you started with adjusting your workflow and organizing your models in Rhino.

Good luck, and keep asking if you have any more specific questions.