Matchstick

by Mathias Fuchs in Addons


Overview

This Blender Addon takes a frame or truss skeleton such as a timber log cabin, represented as a mesh without faces, and produces realistically looking bent textured geometry and a corresponding displaced versions of the mesh by performing a linear elastic structural analysis. The Addon provides an operator called "Loaded Matchstick Mesh" working in object mode, available through the shortcut Ctrl+Shift+M and operating on face-less input meshes, where each edge stands for a structural member, frame element: a timber log in this case.

Free (unsupported) vertices need to be selected in Edit mode previously. See below for a more in-depth description of the input and output of this operator.

Installation

  1.  Go to Edit -> Preferences-> Install.
  2. Search for the file matchstick.zip you downloaded, select it and click "Install Add-on".

  3. Refresh the list of Addons, search for the newly installed one, and enable it by clicking:
  4. Close the preferences - Done!

Usage

  1. Prepare an input mesh without faces and let each edge represent one timber log. For instance, take the unit cube, go to Edit mode, select all faces, delete all faces with "faces only", subdivide an edge or two and so on, until you have a nice skeleton of a timber log cabin frame.

    Your structure needs to be in the form of a coarse mesh, each vertex representing a "node" of the structure, and each edge representing a beam. If your mesh represents any kind of surfaces or usual 3D objects, it is most probably not suited as an input for Matchstick. Instead, manufacturing an input mesh for Matchstick is easy to do by selecting vertices in Edit mode, and hitting the F key to connect them, and so on.
    Blender's meshes allows for edges without faces - in other words, vertices and edges are first-class-citizens of the mesh. All input faces are ignored. If your input mesh structure has faces, these faces will still be present in the matchstick output, joining the displaced vertices/nodes, but they don't influence the analysis at all, and visually clutter the output.

    There must not be any extremely short edges as the code needs to divide by the lengths of the edges over and over again. There can be duplicate vertices that are not joined by an edge, or self-intersections but why would you want that?

    The number of input vertices is limited to one thousand (see below for the rationale behind that).

  2. Go into vertex select mode, and select the free vertices - those that are not on the ground, or fixed for other reasons. Only the selected vertices will be displaced by Matchstick.

  3. Go back to Object Mode. Since Matchstick will generate two new objects  - a displaced copy of the mesh, and a textured and bevelled curve mesh representing the bent geometry. It is therefore an Object Mode operator.
  4. Call the operator either by hitting the key combo Shift-Ctrl-M, or by selecting the menu Object -> Loaded Matchstick Mesh at the bottom of the "Object" menu in Object mode.
  5. Expand the Loaded Matchstick Mesh menu and adjust the displacement and rotation exaggeration sliders as well as the bevel radius to your liking. Note that you might want to go into Wireframe Viewport Shading for performance reasons. If there is lag, it is most likely due to the Viewport shading. Mark the "physically correct" checkbox for turning off internal pre-scaling. For exaggeration factors equal to one, the displacements and rotations are then the approximately physically correct ones for a realistic thin timber frame structure with circular cross sections. Most likely, the displacements and rotations are too small too see, unless your structure is really large. Note that in the physically correct setting, the bevel depth influences both the material properties (are moment of inertia etc) as well as the self-weight simultaneously. Therefore, it is expected that the max displacements remain small. They are appended to the feedback the operator gives you. Units are assumed to be SI units. If you prefer to generate the bent shape as a curve rather than a mesh, unmark the "Generate Curve Mesh" checkbox.
  6. Once you like the shape, you might want to choose Material Preview Shading and increase the world opacity to enjoy the texture:

Output

Running matchstick the Matchstick operator "Loaded matchstick mesh" deforms your input mesh according to the chosen parameters, and places a textured curve mesh as well as a displaced copy of the mesh, whose name is the original name appended with "deformed", into the scene. Optionally the bent shape is represented as a curve instead of a mesh.

Examples

The downloaded folder contains a subfolder "exampleInputs" full of ... example inputs. Note that Blender saves selected vertices and the correct ones are saved in those example files, so you can skip the vertex selection part and can just call the operator on those input meshes.

Author

My name is Mathias Fuchs, I am a Mathematician by training and now specialize in custom finite element implementations for performance simulation and optimization. After some postdocs in statistics, I worked at Zaha Hadid Architects as a Senior Researcher. I've been mainly working with Rhino3D.
My main research is implementation of a heat transmission simulation for building energy efficiency together with an statistical learning estimator for material parameters and insulation characteristics. That work might also make it into Blender some day but will be released in Rhino first. Also, I'm the author of the "Tweener" plugin for Rhino3D, which allows to draw arbitrarily smooth tween lines on any kinds of surfaces. It might also be ported to Blender some day.
You can read more about me on https://mathiasfuchs.com.


Dev Fund Contributor
Published about 1 year ago
Blender Version 3.0, 3.1, 3.2, 3.3, 3.4
License Mit
Have questions before purchasing?

Contact the Creator with your questions right now.

Login to Message