So I am working on a model that has a lot of geometry in it. The geometry isn’t organic (except for the topography) it is basically walls and floors, rails, etc. so mainly rectilinear solids and surfaces. However there are a lot of them and more to come. The goal is to do various renderings.
So my question is what are some strategies for keeping file size down and for keeping performance high while I am modeling? I have done various things like fixing bad objects and purging unused blocks. I am just wondering if there are some commands or capabilities in deep down in Rhino that I am unaware of.
Currently, my topography and terrain is a surface that has been split into various sections to be roads and sidewalks, etc. but I still need to tweak it some so I am wondering if turning the surfaces to meshes would make this tweaking a little easier? I rarely use meshes so I have no idea how they render or how texture mapping works on them.
While I am modeling in Rhino 5, I will eventually be doing the rendering in Rhino 4 with vray. That is just the setup I have. One laptop for modeling and one for rendering. So I know that I will increase file size when I save down to Rhino 4 and my lightweight extrusions are turned into regular surfaces and solids.
One last thing. I have a number of walls (solids) that will all have the same material (wood siding) though they are all different sizes and shapes. Is there any easy way to make the material and its texture mapping are the same on each object? Is it better to explode solids into individual surfaces for texture mapping?
Okay that is a lot so I am stopping now. Any advice would be much appreciated. Thanks
Thanks a lot. I am still trying to digest it but it looks like using blocks is something I need to add to my workflow.
I currently have a bunch of floor plans in my model that I use to for reference. I have just started trying to replace them with a block instance but I am a little confused about the process. If I want to insert a block from an external file (like an Xref in autocad) do I just need to insert the external file as a block or do I need to make a block in the external file? I hope that makes sense. Thanks for the help
Using blocks for linked as floor plans may be a good idea if you anticipate to keep changing the plan after inserting into Rhino. In that case, if you Link the block, you can always refresh it from the BlockManager command. The advantage of using Blocks in Rhino vs. Worksessions is you can change the origin point and transform your plan that is a block. To answer yours second question - no need to do anything with the plan - you can insert the file as a block without making custom blocks in that file.
In the thread I have referenced recently I propose using blocks for any elements that are repetitious in the files. In arch. modeling that goes to all entourage elements, but also your furniture, windows etc. - these not only will help to speed up the file performance but also allow you to change single one to update them all if needed.
Thanks for the info. I kind of figured it out after I wrote that last message.
Any tips on working with topography and terrain elements like sidewalks and roads? Currently I have split my topo (generated from contour curves with the patch command) into various elements grass and walks, etc. Then when I need to adjust one of these elements I shrink the trimmed surface and tweak the control points. It works ok but I wonder if it would be faster if I converted them into meshes? Just wondering if you have any experience with that?
Well, again - it depends. But you may be on a right track with using meshes for terrain. Much easier to create, much harder to change. I would typically start with getting the terrain done from contours as mesh and then ‘_Drape’ a dense surface over it or as you did with Patch, since it is good for initial splitting/cutting roads, curbs etc. But then to add thickensses etc. I would get outlines/edges, use _Convert command to make them into Polylines, then mesh these and use _OffsetMesh a lot and a whole set of Mesh-related commands (Weld, RebuildMeshNormals, Unweld, DeleteMeshFaces, ExtractMeshPart etc. etc.) to deal with them. I find it much more predictable and fast vs. dealing with nurbs mesh settings for such elements since they almost never are right. Downside of it would be editing the meshes, so I would recommend keeping a copy of progress elements before meshing them. For a while I have been relaying on meshes for any landscape modeling work and definitely makes things faster/easier this way.
Thanks again for the input. I changed a couple of sidewalks and other terrain elements that I needed to tweak to meshes and found it much easier to adjust the height of parts of the meshes. With nurbs I couldn’t adjust the control points and maintain the surface edge position but with the meshes it seems I can move interior control points and keep the edges in the same position. I have the layout of my roads and sidewalks right where I want them it is just tweaking the height of some of them so they aren’t covering up ground slabs, etc.
A question about blocks. I am replacing my stairs with block instances but for some reason when I insert the block it is upside down. Any idea why this would happen?
Hi, agreed, adjusting meshes is simpler in some ways, by grabbing vertices to change height etc. At the same time Trimming/Splitting/Booleans on meshes are not very reliable in Rhino right now. Hopefuly these tools will be improved in next Rhino version for even better mesh handling…
As for the blocks - it often may be confusing once you define a block that is oriented randomly in space or even more when you edit it in-place. My best method to check that would be to _Insert your block @ 0,0,0 with no scale/rotation - in that case you will see exactly how it is oriented as the World XYZ plane would correspond the block plane. Then you can either explode / fix orientation / create block with the instertion point @ 0,0,0 or just BlockEdit (or double-click on the block) to make your block elements oriented properly. Once you update the block you should see all of its instances update at the same time.
Once you get a grip of it blocks are superuseful, so hope you can figure that out.
So I am coming back to you because you seemed to be pretty knowledgeable with large model rendering.
I have been using blocks and they definitely help a ton however I still can’t get the hang of how the layers that are used in the block get added to the main model.
I set up the block to have the same layer names as my main model and insert them onto a parent layer that the blocks share but for some reason the inserted block layers don’t appear under the parent layer even though they are technically on that layer and can be turned on and off by it. It really is more of a layer organization issue.
I don’t know if you have any input on that particular problem.
You can use layers to separate either subsystems or layers of detail, or both. This lets you work on quicker on large projects.
When working on large projects, I hide, hide others, show, and swap a lot. That way I can work quickly.
Consider how far in you will be with your renderings. You can adjust the rendering mesh densities for the parts that are repeated. If you make a block for say, a balister, you can reduce the density for it and all of them would be reduced.
This might be a good time to look at your computer. You should have enough RAM to do the job. If you don’t, and your computer is using virtual memory for Rhino, you may be slowed by 1000 times. That said, you only need enough. I also shut off virtual memory on my machines because Windows does not know how to manage it. It uses virtual memory on a clean boot of a machine with 24GB memory. When it swaps, it will lag.
Perhaps a shiny new GTX 1070 or 1080 might be a good purchase.
Quadcores can be faster than many hex/octa cored systems while you are modeling. But, if you do more than an occasional render you will want something with more cores.
I am rendering an apartment complex that is kind of broken into townhouses. It is an old school project that I want to add to my portfolio. So I have certain facades which are blocks that have nested blocks in them. Lots of balusters and wire railings that are blocks as well.
So do you mean if I go into say my baluster file that is used as a block I should turned down the mesh settings there? I do need the main file to have sharper mesh settings because of some terrain but other than that the project is pretty rectilinear.
Also, I am on a laptop. My specs are:
Sager NP8278-S (Clevo P170SM-A)
Intel® Core™ i7-4810MQ CPU @ 2.80 GHz
16 GB RAM
GeForce GTX 870M
How can I tell if Rhino is using virtual memory?
I’m not a professional renderer by any means so any input would be great
I guess what you are seeing is an issue caused by what I found quite a confusing addition to Rhino 5 when same-named layers were allowed. Only if they are are sitting in different parent layers though. I find it confusing and problematic on many occasions and what you see is one of them.
It used to be the way that if you had a layer called ‘glass’ and brought objects from another file that sit on ‘glass’, it would place them there, no matter if this layer is nested under any parent layers or not. Currently if the same named layer is nested somewhere else, new layers will be created. The problem is, you won’t be able to drag these new layers into the desired parent folder and ‘merge’ them with the original ones - especially problematic with blocks since it is not that easy to change block object layers inside each block if you have many. Now we have to deal with this limitation.
In your case - and it is all up to your consistency and being organized in your files - you may want to keep your original block layers also nested under the same folder as destination file - this way they should all land on the same layers once imported.
It is also a good practice to keep the block instances on a separate layer than the actual block objects layers - this way you can control their visibility independently.
The cool thing is: you can edit a single block and change the rendering mesh for all of that balistar at once. So, you can use low resolution ones while working, and then crank them up for rendering. Unfortunately, I believe that global rendering mesh settings won’t affect something once it has been changed into a block.
Generally, the rendering mesh quality affects straight and flat things less than curved and rounded things. A single threaded screw can have more triangles in it than an entire unfurnished house.
Sager makes makes some powerful laptops. It’s a powerful laptop, but no so much that you can be careless.
I run windows without a paging file. It also protects SSD drivers. Although, there might be certain circumstances that you may run out, so it’s at at your own risk thing.
With that said, my desktop only has 16GB or memory, and I was able to design a landscaping machine for a friend with thousands of parts and hundreds of different blocks.
Thanks for replying. Yeah, it makes sense that the problem is the same name layers thing.
Here are two pictures of how my layers are setup.
Below is my main file. I have few blocks which are different facades (they are called units because it’s an apartment project) and I wanted the unit layers to all be under the parent layer Units. So the first one I inserted (Unit 2) worked and it is under Units. However, each proceeding unit I inserted is not under the Units layer. I can move the various unit layers to the Units parent layer but when I close and open the file again they are back to where they are in the picture.
Seems a bit strange that the layers would ‘jump back’ after you close and re-open the file. Hard to tell what’s going on without seeing your files. But - in general, I think you may be able to simplify your setup. Especially that from what I understand, and it is a good approach, all your walls, glass etc for different units would share the same materials.
So how about preparing your blocks and layer structure this way:
For all the geometry in blocks, keep them into the same folder i.e. BUILDING_ELEMENTS:
BUILDING ELEMENTS
-walls
-glass
-slabs
-etc.
Then make a layer called Unit_X, and place ONLY the block instance of that unit on that layer. All the other geometry would stay on the apropriate BUILDING_ELEMENTS layers. And you would do the same for all of your blocks (using different unit names but the very same structure for BUILDING ELEMENTS).
So in your main file, after inserting all the blocks, it should look like:
Unit X (will have block instances of Unit X on it)
Unit Y (will have block instances of Unit Y on it)
Unit Z (will have block instances of Unit Z on it)
BUILDING ELEMENTS (shared for all blocks)
-walls
-glass
-slabs
-etc.
This way you can control each unity type visibility and also each buidling element type in all blocks. Also, way less layers and simpler setup. That’s how I would go about it.
I was wondering if you have any advice on how to apply texture mapping to an element within a block. I have a block which consists of a flight of stairs and an elevator. Everything is on its own layer so I have been applying materials by layer in the main file.
But the elevator walls are a problem because they have wood siding material and I need to apply texture mapping to it. but I can’t apply texture mapping to the walls in my main file because I can’t select the walls because they are a part of the block. I am using Thea render by the way and I have been trying to adjust the mapping of the material itself but it has proved challenging to get it correct. If it wasn’t part of the block i could do it easy but I would like to keep it a part of the block because there are multiple instances of the block.
Any ideas on how to do go about getting the mapping correct?
I don’t think there is a way to apply texture mapping to a block and have the objects inside react.
You would need to apply the texture mapping to the particular objects inside your block (EditBlock command), but that will change it for all the instances. If you need various mappings of texture for the same block, you would have to create multiple versions of that block definition.