Welcome to Full Rig


Thank you for buying our Full Rig Asset for Unity. Full Rig is a shader based system that will add great looking animated ropes, chains and similar objects to your projects. All the animation and deformation is done via a shader making it super fast in any project. Easily have 100's of fully animated ropes in your scene.

Full Rig makes use of catenary curves to model the natural looking sag you get in rope type objects. All of the maths to handle the deformation and shape of the rope is handled in the Vertex Shader so hardly any CPU time is needed to run the objects in the scene, this allows you to add as many ropes as you need without worries of frame rate.

The asset comes with an included set of rope types and rope end objects, the included rope types cover single rope, single cable, small chain, big chain, rusty chain, 2, 4 and 6 ropes for the various pulley types and even a Hammock example to show it doesn't have to be just ropes that Full Rig can do for you.

Full Rig also allows you to pick and choose how your ropes are connected to game objects, you can cycle through the various included end objects included in Full Rig such as knots, rope loops, pulleys etc. Of you can easily add your own objects to suit your project. And the ropes can also apply forces if connected to rigidbodies.

Building your ropes in Full Rig is made easy with custom inspectors and gizmos to make snapping your rope ends to other game objects in the scene very quick and easy or even connecting ropes ends to other ropes allowing you to build up nets or other similar objects.

Ship Fully Rigged With Sails

A net made from Connected Ropes

Installation


By default Full Sails includes the shader for the Built In pipeline. After installing the asset the Rope Shader will be available to select in the material like any other shader.

If you are using HDRP or URP pipelines you will find a couple of rar files in the 'Shaders/HDRP' and 'Shaders/URP' folders, they each contain a unitypackage with the shader graphs and shader source code for each pipeline, extract the unitypackage file to a folder and then go to the Assets menu and 'Import Package/Custom Package' and choose the file you extracted from the rar file.

If you are using the HDRP or URP pipeline then you may see an error in the console in the RigCamera.cs script, if you open that script and comment out the top line that will stop the error. Or if you are not using the demo scene you can just delete that script as it is only used to control the camera in the demo scene.

Quick Setup


To add a new Rope to a scene go to the Prefabs folder of the Full Rig install, in there you will find 'Rope Prefab', this is a simple single rope with no end objects applied, drag this to the scene and place it where you want.

Once the rope is in the scene and the Move Tool is selected you will see two position handle gizmos, one is for the start of the rope and the other one is for the end of the rope.

By default dragging and end will only move that end, if you hold down the 'B' key then both ends of the rope will be moved at the same time. Usually when making ropes you will want to attached the ends to other objects in the scene, you can either do this by selecting the object in the Inspector in the 'Start' and 'End' section or you can use the much easier way of using the built in snapping system.

There are two different modes to the snapping, the first snaps the end of the rope to a position but does not attach it, and the second way snaps to the object and attaches it. Once a rope is attached to an object in the scene moving that object will move the end of the rope as well. To activate the snapping you just need to hold down the 'Z' key for snapping without attaching, or the 'X' key to snap and attach. When these keys are held down you will see small circles appear in the scene showing all the possible snap points. If you drag the rope end to be near one of the circles a line will be drawn to that target and its name will be displayed, if you release the mouse button the snap action will happen.

The targets for attaching can be normal GameObjects in the scene in which case the snap circle will be shown where the object position is, or you can also attach rope ends to other ropes, in this case the middle of any rope in the scene is also show as a target. If you attach an end of the rope to another rope you will then see a 'Move' gizmo appear, dragging this will move the attach point along the target rope.

There maybe occasions when more than one object is in the same position, if that is the case the message will show that there are multiple choices and pressing the 'C' key will cycle through the objects.

Once an end of the rope is attached to a target object the position gizmo will no longer appear for that end. If the start of the rope is attached there will be a new set of gizmos displayed. The dot in the middle can be clicked to disconnect the object. You can also Disconnect an object by clicking the 'Disconnect' button in the inspector, or you can press 'A' to disconnect the start of the rope or 'S' to disconnect the end of the rope. If the rope is not attached pressing 'A' or 'S' will reattach the rope end to the nearest object in range.

Also on the gizmo at the start of the range are 3 slider handles, one can be used to change the length of the rope. The next can be used to change the width of the rope, this will change the width at both the start and end of the rope, there are values in the inspector as well to change the star and end widths separately. And lastly there is the stretch option, this controls how much the rope will sag when the distance between the start and end attach points is less than the rope length.

At the other end of the rope there is also another Disconnect gizmo.


Uv Mapping example and pivot location for sail meshes

Showing the Rope Adjust and Disconnect Gizmos

Ropes

Full Rig comes with a selection of rope and chain types for you to use and when you are editing a rope if you press the '3' key you can cycle through all the rope styles in the project until you get the one you need. Ropes dont have to be single stranded, you can have two, four six rope meshes for using with pulleys, or you can have a chain object even a Hammock or objects like that.

You will likely want to add you own ropes to the system to suit your projects needs. If so you need to model the rope mesh so that the pivot point is at one end of the rope and the other end of the rope is 1m away on the X axis, with Z axis going across and the Y axis up. The mesh will be scaled along the xaxis to fit the distance between the end points.

It is important that there are enough vertices along the length of the rope object so that the Vertex shader can deform the rope smoothly. Below is an example of a chain mesh showing the Pivot point and Axis direction.

Uv Mapping example and pivot location for sail meshes

Chain Rope mesh showing pivot location and axis

Adding New Ropes

When editing a rope you can cycle through different rope type with the '3' key. To add a rope to this you need to create a 'Rope Type asset. To do this go to the 'Assets/Create Other/Full Rig/Rope Type' menu. This will create a new Rope Type asset in your project, rename it to something suitable.

In the inspector you can then select the mesh that the rope will use, if you have created your own rope object and imported it into Unity then you would select the mesh for that object. You can also select the Material to use for the rope. Note this material should have the Full Rig Rope Shader applied to it.

The Rope Num value is not currently used but defines the number of strands the rope has. This will be used later to filter rope end objects.

Once that is done then the Rope Type will be available when you cycle through rope types with the '3' key when editing a rope.

Uv Mapping example and pivot location for sail meshes

Rope Ends

Full Rig allows you to not only add ropes but you can also add objects at the start and end of the ropes allowing you have such things as pulleys or shackles.

Once a rope is in the scene you can select an end object in the Inspector in the 'Start Connect' and 'End Connect' sections. The object selected here will be repositioned at the start or end of the rope. It is important that the end objects have their pivots in the correct place which is the attach point on the mesh. If you have an object that the pivot is not in the right place then you can always make that object a child of an empty game object and adjust the pivot that way or make use an asset to adjust the pivot point of the mesh. It also important for the Z direction of the end object to be pointing along the direction the rope will be going.

An easier way to set the rope end objects is to press the '1' key to cycle through the defined end objects in the project for the start of the rope, and press '2' to cycle through the end objects for the end of the rope. These objects are defined by a scriptable object so you can add you own end objects to cycle through very easily.

When an end object is selected for the rope you will see a small white square at that end of the rope, this square indicates how far along the rope will be used to calculate the rotation of the end object, you can change this value in the inspector in the 'Start Connection' and 'End Connection' sections. Note when you edit these values you are editing the saved value that is used by all the ropes that use that particular end object. The 'Connect Tangent' value controls how far along the rope the look happens.

Also for the end objects you can define the point at which the rope actually starts, this is useful for things like pulleys when you don't actually want the rope going all the way to the attach point. For more info on these values see the End Objects section.

You can control per rope the point at which the rope starts for both the start and end of the rope, this adds to the values defined in the Rope End Object itself. You can also control the width of the rope which allows you to have a thick rope tapering to a thin rope if you needed it. And if your rope type is more than a single strand, ie for say 4 rope pulleys the Horizontal and Vertical Strand Adjust values allow you to adjust the spacing of the rope strands to match the end objects being used.

Uv Mapping example and pivot location for sail meshes

Showing End Object Look Target

Adding New Rope Ends

Full Rig comes with various rope ends include for you to get you started but at some point you will want to use your own objects, this section will guide you through that process.

To start with your model should have its pivot not in the middle of the object but at the point where the object will connect to the world, so in the pulley example below the pivot is located in the end shackle. Also it is important for the Z forward direction to be along the direction from the center of the object to the pivot. This is so the lookat calculation will rotate the object correctly when attached to the end of the rope. The Axis can be seen in the image below.

Uv Mapping example and pivot location for sail meshes

Rope End Pivot Location and Direction

Once you have your model imported into Unity make a prefab out of it and add it to your project in the normal way. Then you should create a 'Rope End' asset by going to the 'Assets/Create Other/Full Rig/Rope End Object' this will create a new Rope End object in your project. Rename it to a suitable name.

When you select it the inspector will show various values which you can use to set up the object so it can be used by the rope system. The first param 'Rope Start' is used to tell the rope how far along the mesh should start, so for example if your end object was a small knot then you can leave this as 0 as you would want the rope to start at the attach point, but if your end object was say a rope loop then you would not want the rope mesh to go all the way to the start as it would look odd, you would want the rope to start at the end of the loop object, so increase this value to move the end.

It is best to edit these values when the object is actually used by a rope as it is easier to see what the values do. So if the object is being used by a rope these values will appear in the rope inspector and changing them there will change the actual scriptable object in the project so the values will be used by all the ropes using this end object.

Next is the Tangent value, this is used to compute the rotation of the end object and is the distance down the rope the look at will use as the target vector for the look at. So again if you had a very small knot as the end then the tangent value would be very small, but if you had a big long rope loop then the tangent value would need to be bigger. Again best to edit this when the object is being used.

Adjust X and Adjust Y are used when the object is used with a multi strand rope, it will adjust the spacing of the rope strands vertically and horizontally. This is useful for say pulley objects so you can align the ropes correctly.

Rope Type is not currently used but says which ropes the rope end object can be used with, this will likely be implemented in a near release, it will filter the rope ends when cycling through them to only the ones that having matching rope types to the actual rope type being used.

And finally is the prefab to use as the object, and this is where you will select the prefab you made earlier. Once done then this object will be available to use as an end object and will appear when you cycle the end objects when editing a rope.

Uv Mapping example and pivot location for sail meshes

Showing End Object Look Target

Rope Component


The Rope component is used to control the look of the rope and calculates the values used by the Rope Shader.

It will calculate the params needed to compute the shape of the rope for the current end points and settings. Once the values have been computed it does need to be recomputed unless the distance changes between the end points of the rope or another value such as length or stretch is changed. This means if you have a scene with a lot of ropes in it for say something like a power line where the end points will never change then the CPU use is virtually 0ms for each rope so you can have a lot of them without any impact on performance. Even if the values do need to be recomputed then it is still a very quick calculation so again you would need to to have a lot of ropes constantly changing to see any effect on performance. This will be improved in a future update when all the calcs will be moved to Jobs and burst.

The Rope Component also allows you to attach objects to the ropes, great for rigging mice for example. In the Attached object section you can add as many object as you like by clicking the '+' button. When an object is added you can select the object from the scene you wish to attach, you can also set its rotation to match your needs. The Alpha value is used to position the object along the rope, so a value of 0 will be right at the start of the rope, 1 right at the end and 0.5 will be in the middle.

The Rope component will keep and eye on the distance of the end points of the rope for you, but if you change any of the other params via script then you must also call SetDirty() to tell the rope that something has changed and it needs to recompute the values.

Uv Mapping example and pivot location for sail meshes

Rope Component Inspector

Params

In the Inspector you will see various params and we shall go through them here in detail.

Set Length

This button will set the length of the rope to the current distance between the end points, this will cause the rope to be straight. You can then use the Length Gizmo to adjust the length of the rope or the length value below.

Length

This is the current upstretched length of the rope.

Info

The info section shows the current arc length, distance and direction of the rope.

Stretch

The value is used by the Catenary curve so say how long the rope is when it sagging, you can control if the rope hardly sags as the end points come together of if the rope really stretches as it sags.

Rope Force

If an end of a rope is attached to a Rigidbody then this value control how much force is applied to that body when the rope is being stretched.

Swing Angle

All the ropes can be told to swing which is handled by the shader. This value controls how far the rope swings, this value is in radians.

Swing Freq

This controls how fast the rope swings.

Swing Offset

This value offsets the swing effect so you can have it different for side by side ropes etc.

Start Attach

To which Gameobject is the start of the rope attached.

Disconnect

Click this button to disconnect the start of the rope if it is attached.

Rope Start

Controls how far from the start of the rope the rope mesh actually begins. This is applied on top of any value set in the current end object.

Start Width

The width of the start of the rope. This is on top of any value set in the current end object.

Start Connect

The object that is being used as the start end object. This is not a scene object but a 'Rope End' scriptable object. See the Rope End section for more info.

Rope Pos Start

If the start of the rope is attached to another rope this value controls how far along that rope it is attached.

Horizontal Strand Adjust

If the rope mesh you are using has more than one strand then you can use this to space the ropes horizontally to match your end object.

Vertical Strand Adjust

If the rope mesh you are using has more than one strand then you can use this to space the ropes vertically to match you end object.

End Attach

To which Gameobject is the end of the rope attached.

Disconnect

Click this button to disconnect the end of the rope if it is attached.

Rope End

Controls how far from the end of the rope the rope mesh actually begins. This is applied on top of any value set in the current end object.

End Width

The width of the end of the rope. This is on top of any value set in the current end object.

End Connect

The object that is being used as the end object. This is not a scene object but a 'Rope End' scriptable object. See the Rope End section for more info.

Rope Pos End

If the end of the rope is attached to another rope this value controls how far along that rope it is attached.

Horizontal Strand Adjust

If the rope mesh you are using has more than one strand then you can use this to space the ropes horizontally to match your end object.

Vertical Strand Adjust

If the rope mesh you are using has more than one strand then you can use this to space the ropes vertically to match you end object.

Attached Objects

Here you can objects to be positioned along the rope.

Obj

The actual gameobject to position on the rope.

Rot

You can adjust the rotation of the attached object with these values in degrees.

Alpha

How far along the rope to put the object, 0 being the start 1 being the end, 0.5 in the middle

Start Connection

If you have a start end object then its values will be shown here. See Rope End for more info.

End Connection

If you have an end object then its values will be shown here. Ser Rope End for more info.


Hot Keys

Below are the various Hot Keys that can be used when working with Ropes in the scene.

1 - Cycle through Rope Start End Objects (Left Shift to cycle in other direction)

2 - Cycle through the Rope End Objects (Left Shift to cycle in other direction)

3 - Cycle through Rope Types (Left Shift to cycle in other direction)

A - Disconnect/Connect Start of Rope

S - Disconnect/Connect End of Rope

Z - Snap Rope end to target position

X - Snap Rope end to target position and attach

C - Cycles through snap targets if more than one in the same position

B - Hold to drag both start and end of rope at same time

Rope Shader

The Rope shader is a simple Surface shader with support for base color, Albedo texture and Glossiness. We may add more features to the general shading if needed in future updates. The Rope shader also holds a few values that control the swinging animation of the rope. There is also a value to stop the shader from adjusting the uv values of the rope mesh which is useful for objects such as Hammocks where you don't want to the uvs automatically scaling to match the length of the rope object. By default the shader will adjust the uv's for a rope that is stretched so that the texture does not become very stretched as well.
Uv Mapping example and pivot location for sail meshes

Params

Below outlines what each param does on the shader.

Color

This can be sued to tint the end color of the rope material.

Main Texture

The texture to apply to the rope

Glossiness

How shiny the rope object is, most ropes this should be close to zero.

Swing Phase Off

An offset added to the time value to change the position of the swing relative to other ropes sharing the same material. Value is set from the rope component

Swing Angle

The maximum angle the rope can swing through in radians. Value is set from the rope component.

Swing Freq

How fast the rope swings. Value is set from the rope component.

Stretch UVs

If this value is 0 the uvs will not be adjusted, if 1 then they will be adjusted to match the rope length.

Version Changes

Version 1.07
Fixed URP shader graph not having the custom UI attached
Fixed HDRP shader graph not having the custom UI attached
Change to URP shader graph _Smoothness is now _Glossiness
Change to HDRP shader graph _Smoothness is now _Glossiness
Fixed some param names being wrong in HDRP graph causing UI errors

Version 1.06
Full Rig compatible with Unity 2023
Full Rig compatible with Unity 2022
Full Rig compatible with Unity 6

Version 1.05
Fixed an issue where if you installed Full Rig after Full Sail in a project the Full Sail material would have its shader changed

Version 1.04
Fixed the scaling being lost on end objects when cycling through them.
Fixed M key not working in the demo scene to drag the big (hold M and move mouse to move the beam)

Version 1.03
Demo scene can now use old or new input system. Thanks to IrishJohnGames for the conversion.
Controls Help added to demo scene

Version 1.02
Added missing URP and HDRP files.

Version 1.01
Fixed the demo scene.

Version 1.0
Original release

Tutorial Videos

Below you will find some tutorial videos which will explain the shader params and features and some guides on using Full Rig in your projects.