Sorcar
Procedural modeling in Blender using Node Editor
Install / Use
/learn @aachman98/SorcarREADME
Sorcar
Procedural modeling in Blender using Node Editor

</br>BlenderArtist Thread: https://blenderartists.org/t/sorcar-procedural-modeling-in-blender-using-node-editor/1156769 </br>Intro & Tutorials: https://www.youtube.com/playlist?list=PLZiIC3gdS_O7nCm1-xpWbZmTQWeL5c6KV </br>Trello (Project Tracker): https://trello.com/b/aKIFRoTh/sorcar </br>Documentation: https://github.com/aachman98/Sorcar/wiki
About
Sorcar is a procedural modeling node-based system which utilises Blender and its Python API to create a visual programming environment for artists and developers. Heavily inspired by Side-FX Houdini, it presents a node editor with a variety of modular nodes to make the modelling workflow easier and fast. Most of the nodes are blender internal operations (bpy.ops.mesh/object) which also makes it easier for frequent blender users to manipulate geometry. It helps the users to quickly create 3D models and control node parameters to generate limitless variations in a non-destructive manner. It also provides the users to view and edit mesh on any stage of the node network independently, with realtime updates.
Release & Instructions
Latest Release (v3.2.1) </br>Requirement: Blender 2.81 or later
- Download the zip file and install it as a Blender addon (Edit -> Preferences... -> Add-ons -> Install...)
- Open Sorcar Node Editor (Do not remove the 3D viewport as it is required by some operations like extrude, transform, ...)
- Click on the + button to create a new tree
- Press Shift+A to open the nodes menu. Alternatively, navigate through tabs on the Right panel in the node editor
- Select the desired node and press "Set Preview"
Open blender using a command prompt to view logs and errors, if encountered.
Features
| | |
| --- | --- |
|
| <p style="text-align: left; padding-left: 16px;"><strong>VISUAL PROGRAMMING</strong><br /><em>Don't like programming?</em></p> <hr style="padding-left: 16px;" /> <p style="text-align: left; padding-left: 16px;">Construct geometries using custom algorithms, maths or generate patterns without writing a single line of code!</p> |
| <p style="text-align: right; padding-right: 16px;"><strong>NON-DESTRUCTIVE WORKFLOW</strong><br /><em>Want to change cylinder vertices after bevel?</em></p> <hr style="padding-right: 16px;" /> <p style="text-align: right; padding-right: 16px;">Edit node parameters at any point without the fear of losing mesh data. Also apply same procedural operations to different objects easily.</p> |
|
|
| <p style="text-align: left; padding-left: 16px;"><strong>REAL-TIME UPDATES</strong><br /><em>Quick as the wind...</em></p> <hr style="padding-left: 16px;" /> <p style="text-align: left; padding-left: 16px;">Drive a parameter using current frame value (or manually change it) and see the mesh update in viewport.</p> |
| <p style="text-align: right; padding-right: 16px;"><strong>ITERATE & RANDOMIZE</strong><br /><em>Need multiple extrusions of random amount?</em></p> <hr style="padding-right: 16px;" /> <p style="text-align: right; padding-right: 16px;">Generate variations in mesh by using seed-controlled pseudorandom numbers. Use loops to handle repeatitive operations with same level of randomness.</p> |
|
|
| <p style="text-align: left; padding-left: 16px;"><strong>AUTOMATION</strong><br /><em>Modify, Save, Repeat...</em></p> <hr style="padding-left: 16px;" /> <p style="text-align: left; padding-left: 16px;">Use frame number to drive seed value and batch export the meshes in different files.</p> |
| <p style="text-align: right; padding-right: 16px;"><strong>250+ NODES</strong><br /><em>At your service!</em></p> <hr style="padding-right: 16px;" /> <p style="text-align: right; padding-right: 16px;">A growing list of functions available as nodes (operators & scene settings) including custom inputs, curve/mesh conversion, selection & transform tools, modifiers and component level operators.</p> |
|
- Node-Groups to collapse big node networks into a single node with custom inputs & outputs
- Simplified node sockets with internal data conversion for the convenience of users.
- Colour-coded nodes (preview, error, invalid inputs etc.) for easier debugging.
- Multi-level heirarchy & auto-registration of classes for easy development of custom nodes in any category (existing or new).
and more...!
Nodes
| | |
| --- | --- |
|
| Inputs </br> Primitive Meshes (Cube, Cylinder, Sphere, ...), Empty Object, Import FBX, Custom Object from the scene, Create Object using arrays of Vertices, Edges & Faces |
|
| Curves </br> Custom Curve from the scene, Text, Import SVG, Geometry/Shape/Spline Properties, Mesh-Curve or Curve-Mesh Conversion |
| | |
|
| Transform </br> Set/Add/Randomize transform (Edit/Object mode), Apply/Copy transform in world/local axes, Create custom orientation|
|
| Selection </br> Manual, invert/toggle, loops, random, similar components or by their property (location, index, normal, material, ...) |
|
| Deletion </br> Delete/Dissolve selected components (or loops) |
| | |
|
| Component Operators </br> Bevel, Decimate, Extrude, Fill, Inset, Loop Cut, Merge, Offset Loop, Poke, Screw, Spin, Subdivide, UV Map, Assign material or vertex groups |
|
| Object Operators </br> Duplicate, Raycast/Overlap, Merge, Scatter, Set/Clear Parent, Voxel/QuadriFlow Remesh, Shading, Viewport Draw Mode |
|
| Modifiers </br> Array, Bevel, Boolean, Build, Cast, Curve, Decimate, Remesh, Shrinkwrap, Skin, Solidify, Subsurf, Wave, Weighted Normal, Wireframe |
| | |
|
| Constants </br> Number (Float/Int/Angle/Random), Bool, Vector, String, Selection Type (Face/Vert/Edge) |
|
| Arrays </br> Create/Append Arrays, Add/Remove elements, Reverse, Search, Clear, Count, Get |
| | |
|
| Noise </br> Cell (Vector/Float), Fractal, Multi-Fractal, Hetero-Terrain, Ridged, Turbulence (Vector/Float), Variable Lacunarity, Voronoi |
| | |
|
| Utilities </br> String/Bool/Vector ops, Maths, Clamp, Map, Trigonometry, Get/Set Variables, Node-Groups, Scene/Component/Object Info, Custom Python Script |
|
| Flow Control </br> For loop, For-Each loop (Array/Components), If-Else Branch |
|
| Settings </br> Cursor Transform, Edit Mode, Pivot Point, Snapping, Proportional Editing, Transform Orientation |
Upcoming Feature
- Export nodes as python code
- Send to UE4/Unity (live-link)
- Point scatter & voronoi fracture nodes
- Debugging tools: Watch/track values of node parameters
Future
- Complete integration with Blender's internal dependency graph
- Node-Viewport link: Create nodes automatically in editor based on actions in 3D viewport
- Landscape (noise/masking/erosion) and Foliage (grass/bush/trees) nodes
Showcase

Changelog
v3.2.1
- Added support for object registration & unregistration on each evaluation (handled by nodetree instead of individual nodes)
- Added custom variables in "Custom Python Script" node: _C (bpy context), _D (bpy data), _O (bpy ops), _S (context scene), _N (self node), _NT (self nodetree), _VAR (nodetree variables), _IN (input socket data)
- Added "Select by Index Array" selection node
- Added "Default" input socket in "Get Variable" node to set value if variable not initialised
- Added "Hide Original" bool input prop in "Scatter" node
- Added "Clear Variables" nodetree property in "Properties" UI panel to clear data on re-evaluation
- Added "Clear Preview" operator (shortcut: Alt+E) to c
Related Skills
node-connect
325.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
80.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
325.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
80.2kCommit, push, and open a PR
