Search Unity

FINAL IK - Full Body IK, Aim, Look At, FABRIK, CCD IK... [1.0 RELEASED]

Discussion in 'Assets and Asset Store' started by Partel-Lang, Jan 15, 2014.

  1. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey,
    I don't think I could make FBBIK do that, not without restructuring it completely, and that would be breaking everyone's existing work. It'll have to be a new solver and component.
    But actually with a little hack you can make the stiff joints look better. Just find the distance between the thigh and the foot IK target. If it's longer than the length of the leg, stretch out the fixed joints. In psudocode the logic would look something like this:
    Code (CSharp):
    1. float lengthF = (target.position - thigh.position) / limbLength;
    2.             if (lengthF < 0f) return; // If the target is closer than the length of the limb, do nothing
    3.  
    4.             // Vector from the fixed joint to it's child
    5.             Vector3 toChild = fixedJoint.GetChild(0).position - fixedJoint.position;
    6.  
    7.             // Vector from the fixed joint to it's parent
    8.             Vector3 toParent = fixedJoint.parent.position - fixedJoint.position;
    9.  
    10.             // Rotation that stretches out the fixed joint
    11.             Quaternion stretchOut = Quaternion.FromToRotation(toChild, -toParent);
    12.  
    13.             // Use lengthF as the weight of the rotation, apply to the fixed joint
    14.             fixedJoint.rotation = Quaternion.Lerp(Quaternion.identity, stretchOut, lengthF) * fixedJoint.rotation;
    Cheers,
    Pärtel
     
  2. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey, thank you for the purchase!
    I'm not sure if missile command is a game where you can bring out the full potential of Final-IK, but anyway, if you have any questions, let me know :)

    Pärtel
     
  3. khos85

    khos85

    Joined:
    Jul 21, 2013
    Posts:
    541
    Hi Partel,
    I have successfully used your asset in various games, like it very much!
    I am planning another one where the human figure has already got several animations assigned that I do not want to get rig of, all I want Final IK to do is be able to make the hands (arms/some of the body) follow a handlebar, is that possible? Which one of the fbbik samples do you think might be useful to copy/use for my purpose, eg the driving rig?
    Thanks in advance for any advice given.
     
  4. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hi!
    Yes the "Driving" demo scene I believe would be the best way to start. Just make a duplicate of the character, pose it's hands to the handlebar, parent the hand bones to the handlebar and delete the rest of the character. Then just assign those duplicate hands as the hand effector Targets in the FBBIK inspector. Attach HandPoser.cs to the real hands of the character and assign the duplicates as "Pose Root" to take care of the fingers.

    Cheers,
    Pärtel
     
  5. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Hi! @Partel Lang I saw there has been an update recently. Is there any document or page on what has been updated?
     
  6. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey,
    Yes, click on the version number in the AS page to read the release notes. There is also a pdf included in the package "FinalIK Change Log", that contains the entire history.
     
  7. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    And is there any way to change the movement of the head bone with the interaction system?
     
  8. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Hi, Thanks Partel! I asked because I am always a bit cautious with updating. I can only read the manual when I update so there is my problem.

    EDIT: The AS page? Where can I find that page?
     
  9. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    By AS he means Asset Store. If you look at the version number there, it is a link. The link opens up to show what the changes are.
     
  10. Purpleshine84

    Purpleshine84

    Joined:
    Apr 8, 2013
    Posts:
    194
    Thank you, silly me!
     
  11. khos85

    khos85

    Joined:
    Jul 21, 2013
    Posts:
    541
    Cool, thanks Partel, great help as always!
     
  12. herrlynn

    herrlynn

    Joined:
    Aug 19, 2012
    Posts:
    3
    Hi

    I've recently tried to upgrade to 1.3 of Final IK and 0.3 of PuppetMaster, but following all the steps (new scene & deleting existing files etc.) 1.2 of Final IK is imported again. I've tried this twice and on a completely new project still 1.2 is imported and not 1.3 (unless the change log isn't uptodate on Final IK & PuppetMaster), do I need to be on a specific version of Unity ?, I'm on 5.2.4p1

    Thanks

    Marcus
     
  13. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey,
    It's weird I have not heard of this before. Unfortunately publishers can't download their own packages unless they buy them. :)
    The change log was updated alright so are you sure you clicked to "Download" the latest Final-IK in the Download Manager? If that's not it, maybe if you find the old version of Final-IK and delete it manually, then download again and reimport.

    Regards,
    Pärtel
     
  14. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    I've got a changelog pdf which mentions v1.3 so the file is ok.
     
    Partel-Lang likes this.
  15. gayani

    gayani

    Joined:
    Apr 8, 2015
    Posts:
    4
    Hello,

    Really loving the asset. Keep up the good work.

    I am animating a godzilla and have used CCD scripts for the limbs and Grounder IK for the legs. My problem is, the legs still cross the ground and does not seem like stable foot placements on the ground. I have attached a pic of the settings here. My understanding is that raycasting is used. Do I still need a rigid body and collider attached to the character?

    Thanks

     
  16. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey,
    It might be that the CCD just fails to reach the target with it's max iterations. It is not the best algorithm to use with animated characters, it lacks in accuracy and can get jammed if the leg is too straight. It can also snap from one pose to another if the animated starting pose is different.
    Can you use LimbIK instead for the grounding? If your leg has more than 3 bones, you can still use it, just skip some.
    It will be much faster and completely reliable.

    Cheers,
    Pärtel
     
  17. herrlynn

    herrlynn

    Joined:
    Aug 19, 2012
    Posts:
    3
    Hi

    My upgrade to FinalIK 1.3 & PuppetMaster 0.3 finally worked, had to delete the C:\Users\<USER>\AppData\Roaming\Unity\Asset Store-5.x folder so the 1.3/0.3 packages would download as it wouldn't automatically do it ?!.

    Nearly everything works but a couple of things appear to have broken, my character now requires a huge amount of force to knock them over, which looks wrong or I have to set CollisionResistance right down under 1, and even then it doesn't always happen, many times the spine will easy bend to a right angle and back again without losing balance.

    I've ensured all settings before and after the upgrade are the same, have removed any group overrides and even copied all the Puppet DEMO BehaviourPuppet values onto my character but still the same behaviour, if I revert back to 1.2 & 0.2 then it all works again. I'm currently going through all the PuppetMaster 1.3 file changes to see if there are changes that could affect this but wondered if there's anything else new we need to setup/change or at what point the PuppetMaster considers a pose to be unstable ?

    Thanks

    Marcus
     
  18. herrlynn

    herrlynn

    Joined:
    Aug 19, 2012
    Posts:
    3
    No probs, sorted it , had to rebalance my Knock Out Distance... :)
     
    Partel-Lang likes this.
  19. RickyX

    RickyX

    Joined:
    Jan 16, 2013
    Posts:
    280
    Hey Partel.
    I have this issue with FinalIK. I'm positioning my camera by just doing transform.position = ReferenceGameobject.position. And the reference gameobject is just an empty object attached to character's head bone. It always worked perfectly. Now i implemented FinalIK into the game, and i've set up AimIK and i like the results so much, it's AAA quality combined with the animations i have. But the issue is, the camera doesen't follow the head how it's supposed to, really wierd. The camera just stays at the original position of where the head would be if AimIK didn't effect it. But sometimes when i just keep looking at it for a few seconds, i notice the camera just twitches quickly to the position i want it to be, and then quickly goes back to the position i don't want it to be in, i don't know what's up with that. I don't think anything is overriding the position of camera from other scripts either. So what's up with this ? Thanks in advance.

    EDIT: I'm effecting 3 bones in AimIK, thoose are 3 spine bones and i don't need anything else there, it's just perfect.
     
    Last edited: Feb 11, 2016
  20. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey,
    It's just that you update your camera position before AimIK has solved.
    AimIK normally updates in LateUpdate, but if you take a look at the Script Execution Order, you'll see that it has set itself to a very high value, so it could update after you set your IK targets in LateUpdate. So the update order you have currently looks like this:

    1. Mecanim animates the character,
    2. You call camera.transform.position = ReferenceGameobject.position,
    3. AimIK updates, moving the head to another place and since the camera is not parented to it, it will not follow.

    Basically you'll just need to swap 2 and 3.

    You can do that by hooking in to the ik.solver.OnPostUpdate delegate like this:

    Code (CSharp):
    1.     public AimIK ik;
    2.  
    3.     void Start() {
    4.         ik.solver.OnPostUpdate += AfterIK;
    5.     }
    6.  
    7.     // Called by AimIK each time it is done updating
    8.     void AfterIK() {
    9.         transform.position = ReferenceGameobject.position;
    10.     }
    11.  
    12.     // Clean up the delegate
    13.     void OnDestroy() {
    14.         if (ik != null) ik.solver.OnPostUpdate -= AfterIK;
    15.     }
     
  21. RickyX

    RickyX

    Joined:
    Jan 16, 2013
    Posts:
    280
    I knew it... But i had to make a post just to make sure, and that's a nice solution to it too. Thanks Partel, it worked.
     
    Partel-Lang likes this.
  22. Ascensi

    Ascensi

    Joined:
    Sep 7, 2013
    Posts:
    579
    Hi Partel, I'm having an odd issue with the Third person grounder character. The demo works fine in a new project but its collision no longer works in my main project, the character just passes through objects. I've tested other rigid body objects and they work fine -gravity is enabled, trigger is disabled, capsule collider is enabled. Any idea what might be causing this?
     
  23. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Hiya,

    Bit confused what order of components for my unique use case: I need to use foot planting (grounder) and also aim punches / attacks (either or both arms) / swing AND also aim guns and also look at points of interest.

    Do I use all in one full body ik or do I stack stuff? quite confused.... also using puppet master with it... do I need some sort of bridge? If so why and how? :) thanks!
     
    Last edited: Feb 12, 2016
  24. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    I'm getting more and more curious about your game :D.
     
  25. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Everyone is. I spent 2-3 years just making the same game in different ways! :) I'm not naturally comfortable showing work though as it's hard to get across the end result with wip pieces.

    Sorry for offtopic, partel.
     
    Last edited: Feb 12, 2016
    Partel-Lang and Martin_H like this.
  26. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey, it's just that the layers and Layer Collision Matrix in your project is different from the default. Compare them and see what's wrong, probably the character's layer is not set to collide with the ground layer.

    Hey,
    You are probably on a tight budget with performance, so I'd recommend using LimbIK components for the legs and the GrounderIK to solve the grounding using them (like the Bot in the Grounder demo). Then you can use an AimIK component for aiming punches like in the "Aim Boxing" demo or aim guns. On top of that you can have another AimIK for the neck and head to take care of looking. Import the "Final-IK" package in Plugins/RootMotion/PuppetMaster/Integration, it has an AimIK demo set up with 2 AimIK components and PuppetMaster like that. The AimIKDemo.cs script is a good thing to get started with scripting.

    So basically just take the AimIK demo from the Final-IK integration package and add the 2 LimbIK components and a GrounderIK so your update cycle would look like this:

    1. LimbIK components update, Grounder updates automatically when they do, no need to worry about that.
    2. AimIK for the guns/punches solves
    3. AimIK for the head looking solves

    Cheers,
    Pärtel
     
    hopeful likes this.
  27. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Right! thank you Partel. So I'll just stack them all on the Anim gameobject and wire them up. I guess I should disable any of the elements I don't need at a particular time too.
     
  28. Ascensi

    Ascensi

    Joined:
    Sep 7, 2013
    Posts:
    579
    Thanks for the tip Partel! Physics Default wasn't checked for DatePicker, another imported asset I guess overwrote overwrote the default settings.
    @Partel Lang
    Hopefully this is my last issue, I don't know if it's currently possible but I would like to combine the grounder script with the Virtual Reality one.. I was thinking that I would have to disable some of the full body ik parts or redirect to the transforms of the driven VR ones.. is this possible? It would complete my character, eventually I'll be adding optional leap motion control for driving the arms, hands and fingers and in the future Sixsense type mocap. I'm a bit concerned because I read this section from your FAQ - Can I remove/add limbs to or from FBBIK?
     
  29. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Exactly, just let me know if you run into a problem :)

    Hey, you should be able to use the GrounderFBBIK component nicely together with FBBIK and FBBIKHeadEffector.
    You can disable limbs from being mapped by setting the limb's "Mapping Weight" to 0 in the FBBIK inspector.
    I answered that part in more detail in my reply to your email.

    Cheers,
    Pärtel
     
  30. MaxPower42

    MaxPower42

    Joined:
    Aug 1, 2015
    Posts:
    20
    I bought this amazing asset about half a year ago, when I started experimenting with Unity. A couple of months later I also had a look at UE4 and, well, I'm still using it.

    So, what I'm trying to say is that in the event that I should ever father any children, I would name my first-born son after you, if you would make a port of this incredible work of yours to UE4.

    UE4 offers a lot out-of-the-box, but inverse kinematics are rather rudimentary and the market place doesn't have anything in that area. :(

    edit: I would also pay another 100€ ...
     
    Last edited: Feb 20, 2016
  31. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey, MaxPower,

    It is a long term plan or something like that, but right now I dont have the time for it. If I had to maintain a parallel version, I'd hardly have any time left to support and develop further.

    Cheers,
    Pärtel
     
  32. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Final-IK 50% off in the Madness Sale! :)
     
  33. gayani

    gayani

    Joined:
    Apr 8, 2015
    Posts:
    4
    Thanks for the suggestion. I tried that, but still i can see instances like this:



    Any suggestions on how I can improve this?

    Thanks
     
  34. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey, I can't see that image, it's just a question mark. Maybe the link is broken?

    Pärtel
     
  35. MaxPower42

    MaxPower42

    Joined:
    Aug 1, 2015
    Posts:
    20
    I don't suppose I can teach you anything about programming, but couldn't you put all the actual "math" into a seperate stand-alone module/dll where all the solving etc. takes place? Then you would only have to maintain two interface versions that deal with the input/output from either engine, which are pretty much exactly the same, just different names for the same things.

    I don't want to bother you, just an idea.
    Then you could even sell that stand-alone IK solver to be used independently of any specific engine.
     
  36. ionside

    ionside

    Joined:
    Apr 7, 2011
    Posts:
    43
    Hi Partel, This seems like it would be a common problem so I apologize if it has already been answered (I did search through).
    I have a turret set up with Aim IK and the turret aims at an object attached to the mouse position. When passing 360 degrees the turret head flips out, is there any steps I should follow to prevent this?

    Thanks,
    Rob
     
  37. kirillrybin

    kirillrybin

    Joined:
    Jan 23, 2012
    Posts:
    15
    Hi. I want to solve this problem:

    Rotation Limit Angle and Hinge components don't work.
     
  38. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey,
    Yes, but actually the interface part is almost half of the entire thing... making things set up properly, validation and editor scripts. Math is the easy part :)

    Hey,

    That's a singularity issue, it always takes the shortest rotation from A to B.
    AimIK also has a Pole and a Pole Axis and Pose Weight, you can use it to fix another axis of the turret.
    But AimIK might not be the best solution for this, take a look at the "Turret" demo scene, it has a turret set up with rotation limits and a bit of very simple code.

    Hey,
    Which IK component are you using?
    You can assign a Bend Goal to fix the elbow bending direction.

    Regards,
    Pärtel
     
    ionside likes this.
  39. ionside

    ionside

    Joined:
    Apr 7, 2011
    Posts:
    43
    Brilliant Thanks for that. Admittedly didn't think to look for a turret demo, but there it is. :)
     
  40. mohoyoyo

    mohoyoyo

    Joined:
    Apr 14, 2015
    Posts:
    9
    Hi Partel, I'm keeping an eye of your dummies. Maybe are you using max-biped-skeletons?
    I ask 'casue maybe Bipeds are better than CATs in order to set a nice and proper Full Body Biped IK setting with the additional control of Shoulders Script.
    For example for shoulders in 3DSMAX:
    Biped: Clavicles are parented to the Neck
    CAT: Collarbones are parented to the Ribcage

    Maybe I'm asking nonsense, if so, my apologies :p
    Regards.
     
  41. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    1,035
    Been eyeing this for a while, couldn't resist with the madness store sale!
    Had a look at the samples, woa! It's even more than I expected.
    To be honest it's a little scary when you first try it, I already know how IK works as I studied motion builder recently, but here we are on a whole other level!!!!

    I have some questions:.

    -When defining a FBBIK the docs says:
    ik.solver.SetLimbOrientations(yourCustomBipedLimbOrientations);
    Any example of how to define yourCustomBipedLimbOrientations?
    In the video tutorial it seem the orientation is set automatically by editor, any way to save that as a preset?
    And if I have multiple rigs based on the same skeleton hierarchy, but with different bone positions will the preset works for all or I'll need to have one for each?
    For example with 2 rigs, one female with wider hips and smaller shoulder, and one male with smaller hips and wider shoulder

    - I can't understand the sample amplifier, how is it making the walk different?
    I mean the logic behind it, not how to setup it.
    It's very interesting for me as I need to create many different characters in my game and I can't create different animation for each, so it's nice to spice them up programmatically

    -How does solver iteration of FBBIK work? 0 mean no full body, so if you move a hand too far, the spine won't follow.
    What does 1 and above mean? What is actually iterating? All the joints?
    What about spine iterations? In which scenario are you supposed to tweak this?


    Thanks
     
  42. kirillrybin

    kirillrybin

    Joined:
    Jan 23, 2012
    Posts:
    15
    Biped IK. Not Limb IK.
     
  43. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Damn, looks like I missed a notification on this thread, sorry for the delay..

    It doesn't really matter where or how the character is created, as long as it has a hierarchical bone structure, it can be solved. Clavicles should be the parents of upper arms, that much it matters though.

    Hey, thanks for not resisting! :)

    I have 2 presets for limb orientations: BipedLimbOrientations.UMA and BipedLimbOrientations.MaxBiped.
    You can make your own if you add a "public BipedLimbOrientations myCustomPreset"; to a script, then fill it in in the editor. Bone positions and scale doesn't matter, only bone orientations relative to each other.

    To know how to fill in the custom limb orientations definition, you should imagine your character standing in I-pose (not T-pose) with legs together and hands on the sides...
    The Upper Bone Forward Axis is the local axis of the thigh/upper arm bone that is facing towards character forward.
    Lower Bone Forward Axis is the local axis of the calf/forearm bone that is facing towards character forward.
    Last Bone Left Axis is the local axis of the foot/hand that is facing towards character left.

    Amplifying works basically by just amplifying/dampering the positional motion delta of a bone relative to a reference point that could be another bone or the character's root for example. So if a hand moves the distance of X relative to the root of the character, Amplifier will make it move X * amplification instead.

    The iterations of FBBIK are basically like the iterations of a simple FABRIK/CCD/AimIK chain and also the internal constraints that maintain the distance between the shoulders and thighs. You can use if for LOD and optimizations.


    BipedIK just wraps a couple of LimbIK solvers so you can use bend goals there just as well.

    Cheers,
    Pärtel
     
  44. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    1,035
    Thank Partel! I started playing around, it's all clear now.
    I read in the change log, that since 1.1 Full body IK works in editor mode too. I would like to preview ik animations in the editor with Cinema Director asset.
    What method should I call to force the FBBIK to update in the editor?

    Thanks
     
  45. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey, you can use a script like this:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using RootMotion.FinalIK;
    4.  
    5. [ExecuteInEditMode]
    6. public class EditorIK : MonoBehaviour {
    7.  
    8.     public IK ik;
    9.  
    10.     void Start() {
    11.         ik = GetComponent<IK>();
    12.         ik.GetIKSolver().Initiate(ik.transform);
    13.     }
    14.  
    15.     void Update() {
    16.         // Fix Transforms (reset pose) otherwise IK will solve additively on top of itself frame by frame if no animation is playing to overwrite it
    17.         if (ik.fixTransforms) ik.GetIKSolver().FixTransforms();
    18.  
    19.         // If you need to sample animation, do it here
    20.  
    21.         // Update IK
    22.         ik.GetIKSolver().Update();
    23.     }
    24. }
    Add it to the same gameobject that has the IK component. It works with any IK component.
     
    00christian00 likes this.
  46. drewradley

    drewradley

    Joined:
    Sep 22, 2010
    Posts:
    3,063
    Got this in the madness sale and so far I am quite impressed. Perhaps it's my own inexperience, but I have no idea how to write my own scripts to change some of the variables in the AimIK script at runtime. I mean, I do know how to write my own scripts and know how to do what I want but I can't find where/what I need to change in the IK scripts! Let's say I wanted to lerp the weight on and off, or dynamically change the target, what do I need to get a reference to? I added "using RootMotion.FinalIK;" to my script and then made a variable to hold the AimIk script but when I tried to get access to the weight variable, nothing popped up so I opened AimIK, thinking it was a private variable or something and discovered that there is no variable in that script for "weight". Nor does it seem to be in either the IKSolverAim or IKSolver scripts as well.So where or where do I find these variables?

    Sorry if this has been asked and answered before but I just don't have time to comb through 34 pages on this thread.

    Thanks!
     
  47. Partel-Lang

    Partel-Lang

    Joined:
    Jan 2, 2013
    Posts:
    2,552
    Hey, thanks for the purchase!

    Code (CSharp):
    1. aim.solver.IKPositionWeight = something;
    2. aim.solver.target = something;
    There's no aim.solver.IKPositionWeight nor target in the script reference of IKSolverAim because they belong to the classes that IKSolverAim inherits from that are (according to the diagram on that page) IKSolverHeuristic and IKSolver. That is because heuristic solvers (Aim, CCD and FABRIK) share a lot of common logic.

    Anyway, It will be easier to learn though if you took the User Manual instead, there are code snippets for most of the stuff.

    Cheers,
    Pärtel
     
    drewradley likes this.
  48. drewradley

    drewradley

    Joined:
    Sep 22, 2010
    Posts:
    3,063
    Thanks so much! I went straight to the Extending Final IK page and couldn't find it.
     
  49. 00christian00

    00christian00

    Joined:
    Jul 22, 2012
    Posts:
    1,035
    Works, perfectly! Thanks
     
  50. Redrag

    Redrag

    Joined:
    Apr 27, 2014
    Posts:
    181
    Hi - this looks great. Could this be used to make rope? I have tried some other solutions using joints but they tend to be unstable under any stress.