Rhino 8 Feature: Block Manager Panel

Hi Gijs, thanks for looking into this. Some answers/comments below…

Re: g2

Correct, look at this example: I have an older Rhino file where I first created a block; let’s assume this is the sphere we designed on December 1st. and that day it was made into a block to be used in other files.

Here’s my hypothetical older sphere file, turned into a block in the file itself:

Today, I created a new file to share with you with a cube, to be designed around the old sphere, so I pasted this block from my sphere file into the cube file. and I send you now this file:

When you open it you wonder: “is Gustavo using the sphere he modeled on December 1st? or is this the new sphere after client feedback that I modified last Friday? let me see the block info…”

Re: g7

wow! it works already, nice! I was doing it wrong when I tested. I was setting the Object display mode to the instance and it was not doing anything, I didn’t realize I had to go inside block edit to set it there.

Re: g8

I want those properties to be totally independent of blocks. Use-case: we design a product, and we are done with all geometry, modeling, form development, etc. Now we make the whole product as an assembly of nested blocks for each part, or even loose blocks (one per part).

Now we want to do a CMF (color materials, finishes) study and explore various CMF combinations side by side with geometric instances of that designed product, but freely applying any material combinations. Why do we want to make all this with blocks? because next week a last-minute change on the geometry will be decided or considered, and now we want to update our geometry and see all our instances with various CMF options already made, reflect this change.

Re: g9 and g10: let me think more about this, review your scripted tools and get back to you later this week or next.

Thanks!

G

One more thing about this: If you are making a block within Rhino, then there is no file name associated with it, so this is only applicable when you have a linked block that you internalize into Rhino, right? Would it be an idea to have the linked file name being ‘transferred’ to the block properties text area?
image

as for g8: RH-72170 wish: Assign different materials to instances of the same block

I suspect though, with the current state of blocks that the latter one is tricky and wonder if there are other ways to do this, e.g. assigning a multimaterial to the objects pick material based on render id or maybe block attributes. What features does Octane offer in this respect? It would be good to place this question at their side too.

1 Like

correct, that’s the idea. Knowing where it came from initially, and when it was created/edited. In our case each filename has a filedescriptor_something_else_version_creatorinitials_YYMMDD.3dm so seeing the filename where it came from can tell us a lot!

We pretty much stopped using Octane in Rhino, it was too unstable with large scenes, and we have no idea on the viewport what materials/colors we had assigned to the renderer, because the Octane material and the Rhino viewport appearance are pretty much disconnected.

We only need this for ‘render-planning’ using rendered-viewport materials, and for CMF guides for manufacturing, and or modelmaking (like our multi-page paint books we give to our modelmakers with color specs, masking instructions, etc. Many times we build CMF/colorway variants and we need first to document those in Rhino to show to a client for final approval.

As you can see, many of my requests come from project complexity. This kind of organization and documentation is where we need Rhino to do a bit better if possible.

Thanks!

G

1 Like

@gustojunk regarding the block instances that have a unique material, I wanted to check with you if you are aware of the feature that allows you to apply a material to a block instance and have its contents material set to ‘by parent’, which will then apply the material you assign to the block instance to the objects inside the block. Depending on how your blocks are structured this might solve what you are after. If not, then pls let me know how you have structured your parts in blocks so I can add this to the YT item, thanks

Hi @Gijs,

In a real world production environment, I have no control how blocks are structured. If they are a single block, or nested blocks, etc. I might import a complete electromechanical Step assembly with parts, fasteners, circuit boards, traces, chips, etc. I want to be able to drag materials to any object of that block structure with ping even having to see a menu, a block edit, or 157 block edits. Just drag n drop shaders like if all the blocks were exploded. Makes sense?

Thx!

G

1 Like

Hi @Gijs, let me please share more thinking on this: Currently bocks have an edit mode, and if I go into block-edit mode I should be able to drag/assign materials to objects (regardless of how the block was created, or be able to change its material assignment tule). But also I should be able to apply/change materials to any other objects in other nested block inside that block. So it’s like an edit-blocks-materials mode that works through nested blocks.

The part we still need to figure out: how do we tell we we want to change/apply materials to:
A. all instances of that block?
B. only that specific instance?

Example: I have a model of headphones, I make it into a block so I can have 4-5 headphones on a scene to try 5 colorways. Some parts of all the 5 headphones have exactly the same materials/colors, including a nested block of imported internal components. Then some parts like plastic molded shells and leather cushions need to be of separate colors.

This is a very common work scenario in what we do all the time. Keyshot had a pretty nice logic to deal with this. I wish Rhino did too, and whatever we do in Rhino can seamlessly transfer over to Blender. Since we use Rhino < > Blender for all our ID work.

@nicolas2 in our team has been exploring how to do this in Blender, which is also a challenge.

You might wonder why do we need this in both Rhino and Blender? We do all our ID work in Rhino, even with imported SubDs modeled and edited in Blender. We also have a modelshop and build physical prototypes (3D printed, machined, plated, painted, the works…) so we need to document assembly and finishing instructions for our modelmakers in Rhino. Same for final production engineering and CMF documentation we hand off to clients, and their suppliers and manufactures of the work we do for them.

Besides all this Rhino-centric work for production, we also create virtual assets: renderings, virtual set photography, animations, and a real-time PBR-based pipeline for 3D web (three.js), AR (ARKit, , ARcore), and sometimes VR authoring (Unreal). All that virtual pipeline starts in Blender.

This is why I’ve been asking @nathanletwory for a live-link solution between Rhino/Blender.

Right now the process of having finished-looking 3D assets while the design is still evolving and changing is very labor intensive, yet absolutely necessary for the type of work we do. So we need a way to update geometry and maintain materials assignment, views, etc. that’s why blocks can help us there. We had tried in the past also using Rhino’s snapshots but we gave up because they are slow, confusing and unreliable. also Snapshots do not let us have side-by side comparisons of design and/or colorway options. So we need a way to update and evolve our assets as the design iteration process keeps evolving, at any given point we also need to see how those design iterations, or physical configurations look in various colorway options of those updatable assemblies.

Tough problem. I know. Very different that modeling one product, rendering it once and be done. We have production pipeline problems and it would be great to have your team at McNeel help with some of that pain.

Happy to discuss more, and show you/your team some examples, and pain-points.

Added summary: We do not work in Rhino for everything. We do not expect to make Rhino best at everything, just play well with others. This blocks stuff is a play-well function.

Examples of things that we do not do in Rhino are:

  • Layout/documentation work (we only generate realtime views from Rhino and bring to Indesign)
  • SubD Modeling (too slow workflow and geometrically, we only convert what we build in Blender)
  • Rendering (too slow, low quality, and slow/limited workflow for complex materials, done in Blender)
  • Animation (same as above, done in Blender)
  • 3D painting/PBR workflow (same as above, done in Substance)
  • UV unwrap (same as above, done in Rizom UV)

Thanks!

Gustavo

1 Like

thanks @gustojunk for the additional info, I updated the YT with extra info, but will also come back to this after discussing this internally.

hi @Gijs, sorry I had type the post above too fast, on my phone, while trying to board a plane. I just edited it a bit for clarity and to remove all the autocorrect betrayals.

G

@gustojunk just a quick heads-up: With the current state of how things are in Rhino with blocks, what you want is not possible yet. To make this happen, we need a unique identifier for objects inside block instances. Since block instances may and will have objects with identical object ids, something else is needed. Our devs say this is not going to be an easy thing but there is certainly the will to look into this. Don’t expect however for this to happen as part of Rhino 8.0 release.

Yes please, this will certainly help us in the discussion with our developers.

That’s also how blocks work in Autocad, double click to edit.

  1. You get the option there to either edit the block in context or in a stand-alone editor. Maybe Rhino should also give that option from within the new block manager, including a toggle to switch between the two modes on the fly. I personally prefer to make edits in context though.
  2. And I would like to see a button to restrict snapping only to the active block and toggle it back on for the entire scene if the former was active.
  3. In addition to scaling, there should also be X, Y and Z sizes for the block’s bounding box.
  4. You should be able to restore the original position, size or scale for an instance. Think of it as Blender’s object location, scale and position. You can only really change the instance’s values and you could have separate controls to change these for ths block definition (similar to apply scale, rotation and position in Blender).
  5. I agree with @gustojunk, it should be possible to have material overrides. I think it should store material assignments per object (if unnested) or per block (if nested) by dragging in a shader over an object/ block. By storing IDs per object/ nested block and the material assignment for each instance you would be able to get the desired workflow. I want to add that you should then be able to apply the material overrides to the original block. This should then change the material assignment for the nested objects/ blocks as if they were created with the material overrides to begin with.
1 Like

Another block idea: a feature, that checks the document for repeating geometry, and suggests to replace it with blocks accordingly. I would have quite a few documents that could use this treatment…

1 Like

Search and filter options would be a huge improvement. Save me from scrolling thru hundreds of listed blocks to find one to update.

this is on the list as RH-50582 Wish - Search function in BlockManager
I’ve added this thread
edit: in fact this is already part of the WIP:
image

2 Likes

In Rhino 8, you can do this on the block instance properties:
image

3 Likes

Scrolling in the new block manger panel seems to be clunky compared to V7. In 7 I could click on a block in the model viewport, then open block manager and drag smoothly on the scroll button until the hi-lighted block name came into view.
The new panel seems to conspire against looking for a hi-lighted name:
Firstly, the names hi-light in blue on mouseover, which is already off-putting
Secondly, the scrolling (when dragging on the scroll button) is really sluggish and jumpy, and
Thirdly, other apparently arbitrary block names seem to be hi-lighted in dark grey in addition to the one selected in the model.

It is really nice to be able to click in the model viewport while the panel is open, that’s a huge improvement on the old panel saying “Nope, nope, nope” when you tried that.

Grant

1 Like

The latest WIP installed.
New file. Adding a circle. Creating a block from it using Block command.
Running BlockManager command. Empty Block Definitions panel showing.
There is no access to regular Block Manager anymore? Did I miss something?

This is happening to me as well. All I get is a ‘Container is empty’ message.

I cannot repeat that issue here, can you send me your _SystemInfo?

Thanks, I see this too, and logged: RH-72661 BlockManager panel highlights wrong items when there is a scrollbar

Can you indicate how many block items you have in your model and send me your _SystemInfo?

Hello Gijs, thank you for looking into this.

There are 287 Block definitions in the list.

There is a noticeable difference in performance when scrolling by dragging the scrollbar slider :
V7 - list moves smoothly, and it is possible to keep your eye on particular block names as they move even when dragging fast.
V8 - unless I drag extremely slowly the list does not move in real time, it moves in jumps as it refreshes, making it difficult to see how much the list has moved.

My SystemInfo:

Rhino 7 SR27 2023-1-13 (Rhino 7, 7.27.23013.15001, Git hash:master @ cf6095c7dc4eb8ceafd1134254e61fa06af0b8ae)
License type: Commercial, build 2023-01-13
License details: Stand-Alone

Windows 10 (10.0.19045 SR0.0) or greater (Physical RAM: 32Gb)

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

Non-hybrid graphics configuration.
Primary display and OpenGL: NVIDIA GeForce GTX 1050 Ti (NVidia) Memory: 4GB, Driver date: 12-22-2022 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 528.02
> Integrated accelerated graphics device with 1 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port

Secondary graphics devices.
Intel(R) UHD Graphics 630 (Intel) Memory: 1GB, Driver date: 6-1-2021 (M-D-Y).
> Integrated graphics device with 3 adapter port(s)
- There are no monitors attached to this device. Laptop lid is probably closed

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: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 12-22-2022
Driver Version: 31.0.15.2802
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 4 GB