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.
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.
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.
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).
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.
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.