AnyIK (IK, Look and foot placement \w high heel support) [RELEASED][3.0]

Changelog

2.0r8

  • Fixed an editor script error that occurs when animator is not humanoid.
  • Added methods to IKController interface to get and set weight (Not usable on foot placement IK controller since it automatically adjusts each IK weight)

2.0r7

  • Changed “on ground” check and IK process criteria to perform better when foot position is under ground level.

2.0r6

  • Added hip vertical movement option to IK chain. (When selected hips moved to match IK target)

2.0r5

  • Added rotation leftover processing (when end effector is limited and cannot match target rotation, leftover rotation can be passed to next bone)
  • Fixed inaccurate IK processing when parent bone is rotated by another IK script by matching taret rotation option.

2.0r4

  • Added layers support to AnyIKFootPlacementController script. Now you can select which layers to consider as “floor”.
  • Added Mixamo bone structure template.

2.0r3

  • Added option to not use bone structure template.
  • Added a sample no BS (bone structure) bone limit template in bone limit list

2.0r2

  • Added iClone G6 and UMA Bone Structure Templates
  • Added a utility script (AnyIKAnimatorRelay) for having AnyIK scripts and Animator on different game objects. This is especially useful for dynamically created characters like UMA.
  • Heel angle now can be negative, which will rotate foot up instead of down.

2.0r1

  • Simultaneous script processing (high accuracy with common bones through IK chains)
  • Automatic humanoid animator detection
  • Bone structure presets and bone limit presets added (For best bone limit and correct rotations across different character models)

1.0.r4

  • Added a sample scene to demonstrate Foot Placement. (Robot Kyle and some of Standart Assets used for this scene. These are free Unity assets and used for demonstration purpose only.)

1.0.r3

  • Added heel processing options to AnyIKFootPlacement script
  • Added AnyIKHeelController script
  • Improved foot placement

1.0.r2

  • Bug fixes

1.0.r1

  • Initial release


Available in Asset Store

* v.2.0 is released

AnyIK provides scripts that enables you to define IK chains (AnyIKChainController) by the character’s rig’s bones. Animator component is required but model can be humanoid or not. When the model is humanoid, it is automatically detected by script and many of the settings will be handled for you.

Starting from v2.0 forward, IK chains are executed simultaneously. This means accurate IK targetting regardless of execution order. Common bones will not cause inaccuracy and will be processed by each chain they are part of simultaneosly, rotating to accomodate all of them.

Since 2.0r3 update you may opt not to use bone structure templates. In that case model’s initial pose (T-Pose, A-Pose etc) will be used as reference pose. Check the guide for details.

A comprehensive editor inspector is provided for flexible customization. Features of scripts are as follows:

IK Chain (AnyIKChainController):
– Select from unity humanoid bones or use your skeleton’s bone transforms.
– Use unity humanoid muscle limits when using humanoid or define your own rotation constraints.
– Add as many bones as you like to the IK chain. (Every “add” action will add parent bone / transform to the chain)
– Add multiple IK chains to same character by adding more than one AnyIKChainController to it.

Look At (AnyIKHeadLookController):
– Use unity humanoid head or define your own transform as head.
– Optionally add more bones to head look chain.
– Optionally include eyes in “look at”.
– Target can be a transform or a humanoid bone of a humanoid character (ie. head, left hand etc.).

Foot placement (AnyIKFootPlacementController) :
– Rotation restrictions.
– Adjustment of hips to get the lowest foot on the ground.
– Ability to define hips offset.
– Ability to enable heel processing.

Product page
Tutorial
Demo (PC)

1 Like

Soon to be released v.2.0 introduces bone limit and bone structure templates. There is a DefaultPositionDetectorScene provided to help you create a custom template for your model.

Current available tempaltes:

  • Bone Limit Templates
  • Default Unity Bone Limits
  • AnyIKDefault limits (slightly modified unity defaults for better foot placement visuals basically)
  • Bone Structure Templates
  • MCS / DAZ
  • Makehuman
  • Robot Kyle

The plan is to add more templates so you won’t need to create a custom template. iClone (working with Izzy) template and UMA template is in developement. (UMA is a bit problematic at the moment because it instantiates the GameObject with animator at runtime. Working on that…)

So if you want any other model added as a template just post it here, we’ll put it on the list. (You can always create a custom template, It’s described in the manual)

Giving out AnyIK vouchers!

3 people who will post in this thread this weekend (before December 12th, 2016 00:00:01 GMT) will receive an AnyIK voucher to download AnyIK from asset store for free.

Winners will be selected randomly and will be announced in this thread on December 12th.

Any post will do, but it would be nice to hear which character model (MCS, Makehuman etc.) you will use AnyIK on.

So, start posting to enter new year with AnyIK

Interesting… is it only compatible with certain systems or can it be used with a custom character model?

Your domain name http://o3n.org is not working, its also linked by you… seems only the subdomain with ‘www’ http://www.o3n.org is working :slight_smile:

also assets looks very handy wouldn’t mind :slight_smile: I’d likely only use with my own character not makehuman.

We are using makehuman and UMA at the moment but still unsure which we will use for different things within the game as both have advantages and disadvantages.

this is a really nice offer, thank you.

It would be cool to earn a voucher. Right now I am using UMA, so I am glad to hear that UMA support is in development.

Thank you for keeping UMA in mind! :slight_smile:

This looks really impressive. The heel option is especially nice. Would love to see more hand placement and two-party character demonstrations.

Any chance of compatibility with Poser Pro 11 / Poser Pro Gamedev?

I noticed on incline the stepping looked a little bit jerky. I’m not familiar with IK kits but would that be something where the user could apply a bit of easing in/out?

this looks pretty good. so this is working with generic rig already?

this has the benefit over standard unity IK, that any bone can be IK-ed, like shoulders. so character could bend forward, to the side etc., right?
probably a long shot: can it achieve crouching (lowering hip bone) without feet IK-ed?

Short answer is it can be used by any character model but the presets that are available out of the box (more common models will be added, currently working on UMA and iClone) makes it one-click easy.

Long answer is a bit long but I’d like to post it here since it’s a common question. Here it goes (These are explained in detail in the manual btw):

AnyIK’s design has unity’s limb muscle limits as its basic referance. Here is a screenshot of this muscle limits. This position is where all rotations on all axes are considered 0 by mechanim animations. (When an animation doesn’t have rotation data for any bone it assumes this position too. So basically if you create an empty animation and put it on a character by an animator controller, when you run the game it will assume this position)

2881144--211534--panel007.png

AnyIK uses template files to convert rotations between this reference and the used model. Attached is a bone structure template file example (SampleCustomBoneStructureTemplate). These samples are provided in the package and you can add a custom template by simply creating a file similar to this and putting it’s name in inspector of the AnyIKBoneStructureController. (It might look like too complicated but there is a tool that does the most of the work for you, just read on)

If you have a look at the file you’ll notice there are two methods in it. GetDefaultPoseLocalRotations method represents the bone rotations of your model to assume the pose in the screenshot. You don’t have to type in these rotations yourself as there is a scene in the package, when run, gets your model in this position and writes the rotations to unity log. So what you need to do is open this scene, put your model on the scene (set the avatar of your model), run the scene and copy the log into your custom template file.

The other method (GetAxisConvertedVectorForHumanBone) in the template file is where AnyIK converts axis names and directions to unity limb limits as a reference. For example unity limit for a bone might be -90 to 90 on z axis. But in your model let’s say this axis actually the y axis and in reverse. This bone’s part in the method should look like this.

newMinVector = new Vector3(minVector.x, -maxVector.z, minVector.y);
newMaxVector = new Vector3(maxVector.x, -minVector.z, maxVector.y);

It’s all described in this tutorial.

That being said there is a way that you can skip this (tedious) axis mapping. (I strongly recommend that you do the axis mapping btw so you can use the provided unity and AnyIK default bone limits.) If you don’t do the axis mapping AnyIK will work but limits will be applied on wrong axes. You can manually correct the limits in the inspector for the defined bones in IK chain, or you can create a BoneLimitTemplate for your model in a similar way to creating a BoneStructureTemplate. (BoneLimitTemplate is used when you use the reset buttons for the bones in inspector)

That’s how the templates work in a nutshell. You can always ask for help by opening a ticket on o3n.org too.

2881144–211535–SampleCustomBoneStructureTemplate.cs (18 KB)

1 Like

Fixed it. Thanks for the heads up :wink:

I’ll try to demonstrate a two-party hands placement and put up a video when I have time.

I’d like to add poser in the list but I’ve done some search for a trial Poser Pro 11. No luck so far. If I had an fbx sample character I could get the template development going.

About the jerky stepping, can you post the time on video for the problem? I’ll check to see if anything’s not working as it should. That being said, foot placement IK checks the ground level beneath foot every frame and moves the foot accordingly. So, with the ground like steps movement might sometimes be too sudden. There could be a solution like checking forward but it would require more processing every frame.

Seems very good!
Count me in the giveaway :slight_smile: I will give it a try with my mixamo characters

AnyIK’s focus is on humanoid characters. But if your model is generic (not humanoid) but you are using an animator it should work. Admittedly non-humanoid rigs are less tested compared to humanoid ones.

Also non-humanoid rigs require more settings, for example bones cannot be defined by human body bone names, they should be assigned from the scene etc.

Your remark about the benefit over standard unity IK is right. You can define an IK chain starting from shoulder to spine. Another benefit would be defining 2 chains on same bone group. For example one chain from hand to shoulder and another chain from elbow to shoulder. You can make hand move to a point while keeping elbow at intended position.

Crouching is currently not supported but it’s an interesting concept and we’ll definitely look into it in the future, no promises that it will make it to the production though.

Less than two days to go – count me in! I’d like to give it a try on a custom model.

Very interesting. I am using some altered MCS models right now for my university project and even only to use the look at feature would be really awesome to use in the dialogues.

Looks interesting. Would be neat to see it work with Morph3d and Mixamo.

Hi, this asset looks like it is progressing nicely. Good work. I am using Morph3D.

Using Morph3d, looks like a nice package.