PaintBlocks Plugin

Thanks for the suggestions

Because we can select different geometries: curve, point, mesh, brep … not only blocks as brushes

Recent features, updates, and fixes added to the PaintBlocks plugin:


1. Independent Session Grouping & Painting

  • Automatic Separate Groups: Every new painting or AutoScatter run automatically creates a brand new Session GUID and places created blocks in a separate Rhino object group
  • Seamless Continuation: When you click Edit Selected Cluster, the plugin preserves existing block positions in spatial memory so you can continue painting directly on that cluster without overlaps.

2. Session GUID Serialization & “Edit Selected Cluster”

  • JSON State Storage: Every block instance stores a JSON snapshot of its cluster’s exact settings (radius, density, scale ranges, rotation ranges, translation jitter, alignment, natural spacing, and species mix with seeds and target percentages).
  • Edit Selected Cluster (Full-Width Button in Global Settings): Selecting a block and clicking this button instantly restores all panel sliders, steppers, and the original Brush Library grid with live block counts.
  • Interactive Viewport Selection: If no block is selected when clicking the button, Rhino interactively prompts you to click any block in the viewport.

3. Universal & Decoupled Erasing

  • No Library Dependence: Start Erasing works universally anywhere on your surfaces without requiring items to be loaded in the Brush Library grid or matching the active panel selection.
  • Multi-Target Support: Supports selecting multiple surfaces, polysurfaces, and meshes simultaneously.
  • Live Count Updates: Erasing blocks updates the Brush Library grid counts in real time.

4. Smart Block Reuse & Object Naming

  • No Nested Block Duplicates: Selecting existing block instances in the viewport reuses their InstanceDefinition directly without creating “block-inside-block” duplicates.
  • Object Names as Brush Names: If a geometry has a custom name in Rhino (e.g. Pine_Tree), PaintBlocks uses it for both the block definition and the Brush Library display name.

Does it also work on Rhino 9 beta for Mac?

It work in Rhino 9 for windows, if you have mac try it

cool i go on it!

Autoscatter: Curve supported

Paint Blocks new Features

  1. Placement Rules:

    • Slope Angle Filtering (0∘−90∘0∘−90∘): Exclude or restrict placement based on surface steepness.
    • Limit Z Elevation: Restrict scattering within specified Z-height bounds.
    • Normal Blend Factor (0%−100%0%−100%): Interpolates block orientation between upright (World Z) and surface normal conforming.
  2. Presets:

    • Preset JSON files (.json) with direct Explorer folder access.
    • Full state embedded in Rhino .3dm files when saved (Ctrl+S).

Slope Angle Filtering

The Slope Angle Filtering rule measures the angle between the target surface normal and the vertical World Z axis (0∘0∘ = flat ground, 90∘90∘ = vertical cliff).

Paint Blocks in Rhino NodeEditor

RhinoBlockProxy is a lightweight, cross-platform plugin for Rhino 8 (.NET 8.0) that brings native render proxies to Rhino’s Raytraced mode (Cycles) and Rhino Render (_Render).


Key Features

  • Fast Interactive Viewports: Replaces heavy high-poly models (trees, 3D vegetation, complex furniture) in Shaded, Rendered, and Wireframe viewports with transparent, non-obstructive 3D Wireframe Bounding Boxes (BBox), points.

  • Native Raytraced (Cycles) & _Render Integration: Automatically injects the full high-poly model into Cycles and Rhino Render during rendering using Rhino’s RDK CustomRenderMeshes pipeline.

  • Memory-Efficient Instancing: Utilizes shared memory instancing.

  • Multi-Format & Multi-Material Support: Load proxies directly from active document geometry (InDocMesh) or external 3D files (.3dm, .obj, .3ds, .fbx, .stl). Automatically imports and preserves multi-part sub-materials and textures from external files.


Command Description
AddBlockProxy Create a new proxy block from an external file or document mesh with your choice of preview (BBox, MeshBox, VerticalLine, Point).
SetBlockProxy Attach or update proxy metadata on an existing block instance in your document.
ClearProxyCache Flushes the in-memory mesh and material cache.
ClearBlockProxy Removes proxy metadata from selected block instances.

Incredible!

I cannot wait to try it out, I am currently on vacation :grinning_face:

Great job!

what is it rhino node editor? Is it your internal plugin?

Yes, it is still WIP

Plugin updated: PaintBlocks & Proxy Manager

https://www.food4rhino.com/en/app/paint-blocks

PointCloud to Blocks when rendering

PointCloud: Paint, Erase and Autoscatter

IVY Genearator

  • Ivy between two geomerties:
  • curve – curve

  • point – curve

  • mesh – mesh

  • curve – mesh

    …etc

- Ivy from curve

- Ivy on surface, mesh, brep …etc

@seg very cool+useful plugin!

do u know why it is not painting along normals? did I miss a setting? (Beta M5 Air)

Thnx!!

change normal blend value
0% : always vertical
100% : follow normal

o boy, that was 1 thing I didn’t tweak :sweat_smile:

Thnx!!!

Check also the help file

Plugin updated