Special Curves

This is a Blender add-on that gives you access to various types of procedural curve objects.
They are generated according to the curve, and you can easily change the parameters from panel.

The following items are included:

10 chains, 3 arrows, 3 plants, 3 roads, flag, 2 hoses, lightning, 2 pipes, 3 stairs, Stitches, RandomWire and CylinderLine.

Version 2.6 and later are only compatible with Blender 3.5 and above.

日本語のドキュメント

*In Blender 3.5 or higher, Shade Smooth does not work well with Arrow which Type is Round.

*Depending on each object, whether curves can be looped, whether an object can contain multiple splines, and whether UVs can be used vary.
For more information, see the Correspondence table

How to use

  • 3D View > Add > Special Curves > select anything.
  • Once you created object from above and select it, properties will appear in 3D View > N Panel > Item > Special Curves.
  • To convert mesh this object, press Convert to Mesh button in panel.

Minimum distance/maximum count of curve splits are set to prevent blender crashes in Preferences.

Parameters

Arrow

  • Type: Arrrow types(Round / Rect 1 / Rect 2).
  • Both Tip: Arrow directs both tip or not.
  • Root Scale(when Both Tip is 0): 1 is normal.
  • Curve Resolution: This determine arrow's smoothness.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Material: Set arrow's material from here.
  • Resolution(when type is Round): Resolution of side of cylinder.
  • Radius(when type is Round): Radius of cylinder.
  • Tip Radius Offset(when type is Round): Difference scale between cylinder radius and tip radius. 1 is same radius.
  • Tip Length(when type is Round or Rect 1):
  • Width/Height(when type is Rect 1 or Rect 2)
  • Tip Width Offset/Tip Height Offset(when type is Rect 1)
  • Tip Width/Tip Height/Tip Thickness(when type is Rect 2)
  • Both Side(when type is Rect2)

Chain

  • Type: Chain type(Chain / Round Chain / Circular / Rain / Rectangle / Ball / Circle / Band / Cuban Link / Custom Object).
  • Size: Size of each parts.
  • Rotation: Rotation value from neighboring parts.
  • Start/End: Trim value.
  • Distance: Each parts' distance.
  • Radius(when type isn't Band or Custom Object)
  • Resolution(when type isn't Band or Custom Object)
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Material: Set chain's material from here.
  • Circle Resolution(when type is Round Chain, Circular, Rain or Circle)
  • Width/Height(when type is Round Chain, Rectangle or Band)
  • Ball Subdivisions(when type is Ball)
  • Thickness/Depth(when type is Band)
  • Fillet Count / Fillet Rradius(when type is Band): Corner chamfer(Fillet Radius is limited to avoid overlapping geometry).
  • Clip Shape(when type is Cuban Link): Clipping top and bottom shape.
  • Subdivide(when type is Cuban Link): Subdivision count. UV only works when this value is 0.
  • Main/Start Point/End Point Object(when type is Custom Object): Object to generate.
  • Use Custom Alignment(when type is Custom Object): If on, You can manually set each object's direction. If off, every objects face same direction.
  • Align Direction(when Use Custom Alignment is on): Which axis of the object should be oriented with respect to the normals and tangents of the curve.
    ***Don't set same value between Normal and Tangent.***
  • Rotation Axis(when Use Custom Alignment is on): which axis the Rotation value affects.

Plant

Type:Plant type[Thorn / Vine / Cactus]

Common to all types
  • Fill Caps: Close tip faces
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Sync Resample (except Vine): Synchronize the number of curve divisions of the stem and the number of thorns generated.
  • Use UV
  • Shade Smooth
  • Auto Smooth Angle(When Shade Smooth is on)
Thorn
  • Stem
    • Distance(when Resample By Distance is on): Distance between divisions of the curve of the main part (stem)
      ***Setting this value too low can crash Blender.***
      To prevent this, the distance is limited by the "Minimum Distance" preference.
    • Count(when Resample By Distance is off): The number of divisions in the curve of the main part (stem)
      ***Setting this value too high can crash Blender.***
      To prevent this, the distance is limited by the ”Maximum Count” preference.
    • Radius: Stem Radius
    • Resolution: Number of vertices in the cross section of the stem
    • Tip Shrink: If 1, Stem shrink towards the tip
    • Material: Stem material

  • Thorn
    • Distance(when Resample By Distance is on): Distance between divisions of the curve that generate thorns
      ***Setting this value too low can crash Blender.***
      To prevent this, the distance is limited by the "Minimum Distance" preference.
    • Count(when Resample By Distance is off): The number of divisions in the curve that generate thorns
      ***Setting this value too high can crash Blender.***
      To prevent this, the distance is limited by the ”Maximum Count” preference.
    • Thorn Radius: Thorn Radius
    • Resolution: Number of vertices in the cross section of the thorn
    • Length: Thorn length
    • Length Random Factor: Randomness of thorn length
    • Length Seed: Seed of randomness of thorn length
    • Offset: How far away thorn from stem
    • Exponent: shape of thorn
    • Random Rotation: If 0, thorns will line up in opposite 2 directions
    • Rotation Seed: Seed of random rotation
    • Scale along Curve: If 0, thorn scale down towards the tip.
    • Delete Start Point: The number of thorn to remove from the start of the curve
    • Delete End Point: The number of thorn to remove from the end of the curve
    • Probability: The rate at which thorn are generated
    • Probability Seed: Seed of probability
    • Material: Thorn material
Vine
  • Use Curve's Tilt: Use the tilt of the curve for twisting
  • Tilt(When Use Curve's Tilt is off)
  • Radius: Overall Radius
  • Count: Vine count
  • Resolution: The number of vertices in each section
  • Tip Shrink: Gather the tips together
  • Material
Cactus
  • Stem
    • Distance(when Resample By Distance is on): Distance between divisions of the curve of the main part (stem)
      ***Setting this value too low can crash Blender.***
      To prevent this, the distance is limited by the "Minimum Distance" preference.
    • Count(when Resample By Distance is off): The number of divisions in the curve of the main part (stem)
      ***Setting this value too high can crash Blender.***
      To prevent this, the distance is limited by the ”Maximum Count” preference.
    • Radius: Sten radius
    • Resolution: Number of protruding parts of the stem
    • Inner Scale: Inner radius of the cross section
    • Inflation: Inflation of the stem cross section
    • Auto Shrink: If on, object will automatically shrink like cactus shape.
    • If Auto Shrink off
      • Minimum Radius: Tip's minimum radius
      • Shrink From: 0 is from root. 0.5 is from half
      • Exponent: How to shrink
    • Material: Stem material

  • Thorn
    • Distance(when Resample By Distance is on): Distance between divisions of the curve that generate thorns
      ***Setting this value too low can crash Blender.***
      To prevent this, the distance is limited by the "Minimum Distance" preference.
    • Count(when Resample By Distance is off): The number of divisions in the curve that generate thorns
      ***Setting this value too high can crash Blender.***
      To prevent this, the distance is limited by the ”Maximum Count” preference.
    • Radius: Thorn radius
    • Length: Thorn Length
    • Resolution: Number of vertices in the cross section of the thorn
    • Offset: How far away thorn from stem
    • Tip / Root Delete Factor: Delete needle from tip / root. 0 is delete nothing, 1 is delete everything.
    • Material: Thorn material

Road

Type:Road type[Cobblestone / Brick / Railroad]

Common to all types
  • Width
  • Depth
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Shade Smooth
  • Auto Smooth Angle(When Shade Smooth is on)
  • Use UV
  • Road Material
  • Stone(Rail) Material
Cobblestone
  • Width Count: The number of widths
  • Gap
  • Scale: Scale of the base noise octave on changing stone shape
    The larger the value, the finer the shape changes
  • Seed: Random seed
  • Stone Depth
  • Factor: Influence of changing shape
  • Boundary Type
Brick
  • Gap1 / Gap2: Gap of each axis
  • Stone Depth
  • Offset
  • Width Count: The number of widths
Railroad
  • Radius: Radius of railroad ties.
  • Resolution: Resolution of railroad ties
  • Bevel Count / Radius: Corner chamfer(Bevel Radius is limited to avoid overlapping geometry)
  • Rotation: Railroad ties' rotation
  • Rail Scale: Scale of entire rail
  • Rail Width Offset: Spacing between rails
  • Rail Height Offset
  • If on, you can manually change rail shape with below parameters.
    • Width / Height / Height Offset 1,2,3,4,5 / Width Scale 1,2,3

Cable

  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Cable Count
  • Radius
  • Resolution: Number of vertices in the cable cross section
  • Fill Caps: Close the tip faces
  • Location Offset: Initial position deviation for each cable
  • Noise Offset: Center part offset
  • Noise Strength
  • Noise Scale: Scale of the base noise octave on changing cable shape.
    The larger the value, the finer the shape changes
  • Noise Detail
  • Noise Similarity: If 0, every cable shape will be same
  • W: Texture coordinate to evaluate the noise at
  • Pinch: Whether the tip part is affected by noise
  • Pinch Range:Area affected by noise
  • Pinch Offset
  • Cyclic UV: If the curve is cyclic and you want to use uv's x, turn it on
  • Material

Flag

  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • String Res Distance / Flag Count by Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • String Res Count / Flag Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Resolution: Number of vertices in the cross section of the string
  • Radius: String radius
  • Fill Caps: Close the tip faces
  • Material
  • Width: Flag width
  • Length: Flag length
  • Tip Scale: Tip edge scale. If 0, each flag will be triangle.
  • Remove Both Tip
  • Fit along Curve: A feature to use when the flag does not follow the curve.
    Align the root vertex of the flag with the curve.
    Smaller/larger values for String Res Distance / Sting Res Count should give a better fit.
  • Resolution: Flag Resolution

Hose

  • Type
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Resolution: Number of vertices in the cross section
  • Radius
  • Radius Offset: Thick Radius Offset
  • Step: Interval between points to be offset.
    if 2, places that are offset and places that are not are alternated.
  • Step Offset
  • Fill Caps: Close the tip faces
  • Numerator(when Type is 1): As this value increases, the offset point spreads out.
    If it becomes more than the value of step, it sticks.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Material

Lightning

  • Noise W: Texture coordinate to evaluate the noise at
  • Seed: Seed of randomize forks
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Material
  • Trim
    • Start: From 0 to 1, it disappears from the root to the tip
    • End: From 1 to 0, it disappears from the tip to the root
    • Without Wiggle: rom 1 to 0, it disappears from the tip to the root without wiggle
  • Main Noise / Fine Tune Noise
    • Scale: Scale of the base noise octave on changing lightning shape
      The larger the value, the finer the shape changes.
    • Boost: Noise strength
  • Fork1 / Fork2 (Fork 1 is generated from main lightning, Fork2 is generated from Fork1)
    • Probability: Proportion to generate
    • Radius
    • Length
    • Noise Scale: Scale of the base noise octave on changing lightning shape
      The larger the value, the finer the shape changes
    • Noise Boost: Noise strength

Pipe

Connectors are generated at the control point positions

  • Type
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Resolution: Number of vertices in the cross section
  • Radius
  • Radius Random
  • Seed: Seed of Radius Random
  • Material
  • Connector
    • Depth
    • Hide Start / End
    • Material
    • [When Pipe Type is 0]
      • Type
      • Resolution: Number of vertices in the cross section
      • Radius Offset: Difference from pipe radius
      • [When Connector type is 1]
        • Extrude
        • Step: Spacing to extrude faces
        • Offset1
        • Offset2
    • [When Pipe Type is 1]
      • Width
      • Height
      • Thickness
  • Bolt(when Pipe Type and Connector Type are 0)
    • Count: They will be arranged in a circle
    • Radius
    • Depth
    • Position Offset: Offset to Connector Radius
    • Material

Stair

  • Type
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Width
  • Material
  • Handrail
    • Resolution: Number of vertices in the cross section
    • Width
    • Radius
    • Z Offset
    • Tilt
    • Tip Extrude
    • Shape Scale
    • Material
  • Baluster
    • Type
    • Resolution
    • Resolution along Z
    • Depth
    • Radius
    • Z Offset
    • Material
  • Stringer(when Stair Type is 0)
    • Depth
    • Thickness
    • Z Offset
    • Material

Stitches

  • Type: Stitches curve type(Bevel / Bezier)
  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Resolution: Number of vertices in the stitches cross section
  • Radius
  • Width: Width of tips
  • Height Offset
  • Center Distance(when type is Bevel): Distance of center 2 points.
  • Center Radius Factor(when type is Bevel): Radius factor of center 2 points
  • Bevel Count(when type is Bevel): Bevel count of 2 angles
    The higher the value, the smoother the effect
  • Bevel Radius(when type is Bevel): Radius of 2 bevels
    The higher the value, the smoother the effect
  • Fill Caps
  • Use UV: You can use each uv attributes when you turn this on
    This may slow your pc
  • Angle: Angle of stitch along curve
  • Random Angle
  • Random Seed
  • ZigZag
  • Cross
  • Material
  • Center Handle Width(when type is Bezier): Type "Bezier" controls stitch by 3 control points
  • Tip Handle Width(when type is Bezier)
  • Tip Handle Height(when type is Bezier)

RandomWire

  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Line:Make wire from one line
  • Curve Radius: Radius of base curve
  • Curve Resolution: Resolution of base curve
  • Triangulate: Convert faces of base curve to triangle
  • Delete Geo Factor: Percentage of deleting geometry
  • Delete Geo Seed: Random seed of deleting geometry
  • Merge Distance: Merge each vertices by distance
  • Noise
    • Scale
    • W
    • Size
    • Seed
  • Wire
    • Radius
    • Resolution
    • Material
  • Sphere
    • Radius
    • Subdivision
    • Material
  • Face
    • Has Thickness
    • Material

CylinderLine

  • Resample By Distance: If on, the number of curve divisions is determined by the distance.
    If off, it is determined by count.
  • Distance(when Resample By Distance is on): Distance between divisions of the curve
    ***Setting this value too low can crash Blender.***
    To prevent this, the distance is limited by the "Minimum Distance" preference.
  • Count(when Resample By Distance is off): The number of divisions in the curve
    ***Setting this value too high can crash Blender.***
    To prevent this, the distance is limited by the ”Maximum Count” preference.
  • Shade Smooth
  • Auto Smooth Angle(when Shade Smooth is on)
  • Resolution
  • Radius
  • Fillet Count: Bevel count
  • Fillet Radius: Bevel radius
  • Thickness
  • reverse: Reverse order
    Rotation and scale affect by order
  • Material
  • Rotaiton
    • Type(Index / Object): Rotate according to index order or distance to a given object
    • Initial Rotation: Rotation of whole cylinder
    • Rotation: In index type, last one rotates this value
    • In object type, the cylinder which distance to the specified object is 0 will rotate this amount
    • Random Value
    • Random Seed
    • Affect 1st: Affect or not rotation value for 1st cylinder
    • Object(when type is Object): Distance between this and each cylinder affect rotation
    • *Object's scale affect rotate range
    • Flip Influence: The further away the object is, the more it will rotate
  • Scale
    • Type(Radius / Index / Object): Scale according to radius of curve, index order or distance to a given object
    • Scale
    • Random Value
    • Random Seed
    • Affect All Axis: If you turn this on, the scale affects also thickness
    • Index Factor(when type is Index)
    • Object(when type is Object): Distance between this and each cylinder affect scale
    • Flip Influence: The further away the object is, the more it will scale

Correspondence table

Arrow Chain Plant Road Cable Flag Hose Lightning
Cyclic
Multiple Spline in 1 Object *〇
UV *〇 *〇
Pipe Stair Stitches RandomWire CylinderLine
Cyclic
Multiple Spline in 1 Object
UV

**Arrow UV is valid only for round and rect1 X

*Ball of Chain doesn't correspond for Multiple Spline in 1 Object

*To use UV to Cuban Link of Chain, the value Subdivide need to be set 0

*UV's "z" and caps_mask doesn't correspond for Multiple Spline in 1 Object

UV

Use Attribute (and Separate XYZ) node in Shader Editor to use uv
Returns a value between 0 and 1 for a limited orientation for each curve
When multiple spline in one object, uv z and caps_mask can't use

To use UV in “Chain”, “Plant”, “Road”, “Stair”, and “Stitches”, turn on “Use UV” in the panel.
*This may not be necessary if you are using Blender 4.1 or later.

*UV does not work in Blender 3.6

Arrow(Round or Rect1 only)
Chain
Plant

The Y in Vine does not follow the circumference of a curve like the other two.

Vine's Z can't use.

Road

Railroad's Z can't use.

Cable

Cable's Z can't use.

Flag

Flag's Z can't use.


Hose
Pipe

Pipe's Z can't use.

Connector of Pipe type 1 can't use Z.

Stair

Baluster's Z can't use

Stitches

*For the sake of explanation, I have added Add and Modulo and rotated the UVs to make it easier to understand.


If "caps_mask" is specified for attribute, the caps part will be white and the other parts will be black.

Thorn, Cactus, Cable, Flag, Hose use "caps_mask".
Pipe's connector use "connector_caps_mask".
Stairs's handrail use "handrail_caps_mask".

Convert selection to Special Curve

You can convert selection to Special Curve when you're selecting mesh and in Edit Mode.

Note

  • To use UV by yourself, you need to convert object to mesh.
  • Set parameter "Distance" in chain to near 0, Blender may slow your PC down.
  • Geometry can collapse on sharp turns (especially on road).
  • In Cobblestone, If the geometry density is set too high, the faces will overlap and the appearance will be distorted.

Update

3.1.1
Fixed an issue where the Material field of the Plant was not displayed
Added Attribute List Panel
3.1.2
Compatible with Blender 4.2
3.1.1
Fixed bug of stair
3.1.0
Add Stitches, RandomWire and CylinderLine
Realize Instances is no longer removed
Some panels improved usability.
3.0.6
Fixed an issue where icons were not visible
3.0.5
Fixed issue that shading turns black when attribute "uv" used in Cycles. ("uv" turned into "uv_SC")
3.0.4
Fixed some issues
Added caps_mask attribute for some type

License

GPLv3
This contains geometry node function called CurveToMeshUV made by Stephan Kellermayr.