Website powered by

Unreal Engine Blueprint System - Catenary Curve

Here's a blueprint I built to procedurally generate a rope using catenary curves. It's available as a Tier 2 reward on my Patreon : https://www.patreon.com/GhislainGir

It's able to instantiate meshes along the rope in all sort of ways, with a ton of controls for their position, rotation, swing and so on. It can also spawn anchor meshes at the start & end points of the rope.

Demonstration of using a catenary curve to create a swinging rope & lanterns procedural blueprint actor

Quick overview of the settings.

Stiffness controls.

Stiffness controls.

We can drive the anchor point and have a mathematically driven, natural-looking hanging rope.

We can drive the anchor point and have a mathematically driven, natural-looking hanging rope.

Control for the amount of mesh to instanciate along the rope.

Control for the amount of mesh to instanciate along the rope.

Offset the start & end points at which meshes are instanciated along the rope.

Offset the start & end points at which meshes are instanciated along the rope.

Global rotation control for the instanciated meshes.

Global rotation control for the instanciated meshes.

Randomized rotation control per instance.

Randomized rotation control per instance.

Randomized offset along the rope.

Randomized offset along the rope.

Randomized scale.

Randomized scale.

Align instanciated meshes along the rope.

Align instanciated meshes along the rope.

Controls to enable or disable anchor meshes at the start/end points of the rope.

Controls to enable or disable anchor meshes at the start/end points of the rope.

Shader-driven fake GI for both lanterns & rope.

Shader-driven fake GI for both lanterns & rope.

A blueprint function library allows you to output a number of points on a catenary curve, given a start and end point in world space and a stiffness amongst other parameters.

A blueprint function library allows you to output a number of points on a catenary curve, given a start and end point in world space and a stiffness amongst other parameters.

A parent blueprint is used to construct the rope and its anchors (optional).

A parent blueprint is used to construct the rope and its anchors (optional).

The rope itself is built via a procedural mesh component. Nothing is ticking. It's all built during a construction script and then the swing is shader-driven.

The rope itself is built via a procedural mesh component. Nothing is ticking. It's all built during a construction script and then the swing is shader-driven.

A child blueprint is then in charge of spawning extra meshes along the rope, like my lanterns, via an instanced static mesh component. It's using custom primitive data for the lantern instances to have them swing via a shader-driven effect.

A child blueprint is then in charge of spawning extra meshes along the rope, like my lanterns, via an instanced static mesh component. It's using custom primitive data for the lantern instances to have them swing via a shader-driven effect.