【FinalIK】Full Body Biped IK

Full Body Biped IK 解析:

Final IK includes an extremely flexible and powerful high speed lightweight FBIK solver for biped characters.
Final IK 是一个基于双足行走人物的非常强大并灵活,高效率的FBIK (FullBodyIK:全身反向动力学系统)

FullBodyBipedIK maps any biped character to a low resolution multi-effector IK rig, solves it, and maps the result back to the character.
This is done each frame in LateUpdate, after Mecanim/Legacy is done animating, so it is completely independent from the animating system.

FullBodyBipedIK 将任何双足人物对应到分辨率多效应器的IK操纵器,解析它,并返回对应的结果人物
这是在Manim/Legacy动画完成后,在LateUpdate中完成的每个帧,因此它完全独立于动画系统。

链(Chains):

Internally, each limb and the body are instances of the FBIKChain class. The root chain is the body, consisting of a single node, and the limbs are it’s children. This setup forms the multi-effector IK tree around the root node.
本质的説每个肢体和身体都是FBIKChain类的实例,根链是身体,由一个节点组成,四肢是它的子物体。此设置在根节点周围形成多效应的IK树。

节点(Nodes):

Nodes are members of the Chains.
For instance, an Arm chain contains three nodes - upper arm, forearm and the hand.
Each node maintains a reference to it’s bone (node.transform).
When the solver is processing or has finished, the solved position of the bone is stored in node.solverPosition.

节点是链的成员。
例如,臂链包含三个节点——上臂、前臂和手。
每个节点维护对它的骨骼 (node(节点).transform)的引用。

效应器(Effectors):

FullBodyBipedIK has three types of effectors - end-effectors (hands and feet), mid-body effectors (shoulders and thighs) and multi-effectors (the body).

End-effectors can be rotated while changing the rotation of mid-body and multi-effectors has no effect.

Changing end-effector rotation also changes the bending direction of the limb (unless you are using bend goals to override it).

The body effector is a multi-effector, meaning it also drags along both thigh effectors (to simplify positioning of the body).

Effectors also have the positionOffset property that can be used to very easily manupulate with the underlaying animation.

Effectors will reset their positionOffset to Vector3.zero after each solver update.
FullBodyBipedIK 有三种效应器-末端效应器(手和脚),中体效应器(肩和大腿)和多效器(身体)。

末端效应器可以旋转,同时改变中体效应器的旋转,多效器没有效果。

身体效应器是多重效应器,意味着它也沿着两个大腿效应器拖动(以简化身体的定位)。

改变末端执行器旋转也会改变肢体的弯曲方向(除非您使用弯曲目标来覆盖它)

效果器还具有positionOffset属性,可用于非常容易地手动生成底层动画。

在每个解算器更新之后,效应器将将它们的位置偏移重设为矢量3.0。

拉、伸、推 (Pulling, Reaching and Pushing:):

Each chain has the “pull” property. When all chains have pull equal to 1, pull weight is distributed equally between the limbs.
That means reaching all effectors is not quaranteed if they are very far from each other.
The result can be adjusted or improved by changing the “reach” parameter of the chain, increasing the solver iteration count or updating the solver more than once per frame.
However, when for instance the left arm chain has pull weight equal to 1 and all others have 0, you can pull the character from it’s left hand to Infinity without losing contact.
The Push and Push Parent values determine how much a limb transfers energy to it’s parent nodes when the target is in reach.
Experiment with those values in the Scene view to get a better understanding of how they behave.
每个链条都具有“拉力”特性。当所有链条拉力等于1时,拉力权重在四肢之间均匀分布。
这意味着如果所有的效应物远离彼此,它们就不会被夸大。
可以通过改变链的“到达”参数、增加求解器迭代次数或每帧更新一次以上来调整或改进结果。
但是,例如,当左臂链的拉力重量等于1并且所有其他的都等于0时,您可以将角色从左手拉到无穷大,而不会失去。
Push and Push Parent值确定当目标到达时,肢体向其父节点传递能量的程度。
在场景视图中对这些值进行实验,以更好地理解它们的行为。

映射(Mapping):

IKSolverFullBodyBiped solves a very low resolution high speed armature.
Your character probably has a lot more bones in it’s spine though, it might have twist bones in the arms and shoulder or hip bones and so on.
Therefore, the solver needs to map the high resolution skeleton to the low resolution solver skeleton before solving and vice versa after the solver has finished.
There are 3 types of mappers - IKMappingSpine for mapping the pelvis and the spine, IKMappingLimb for the limbs (including the clavicle) and IKMappingBone for the head.
You can access them through IKSolverFullBody.spineMapping, IKSolverFullBody.limbMappings and IKSolverFullBody.boneMappings

IKSOLVER FUBBODIPED解决了一种非常低分辨率的高速电枢。
你的角色可能有更多的骨骼在脊椎,它可能有扭曲的骨骼在胳膊,肩膀或臀部骨骼等等。
因此,求解器需要在求解之前将高分辨率的骨架映射到低分辨率的求解器骨架,反之亦然,在求解器完成之后。
有三种类型的映射器:
IKMappingSpine用于映射骨盆和脊柱,IKMappingLimb用于四肢(包括锁骨)和IKMappingBone用于头部。

您可以通过IKSolverFull…spineMapping、IKSolverFull…limbMappings和IKSolverFull…boneMappings访问它们

局限性:

FullBodyBipedIK does not have effectors for the fingers and toes.
Solving fingers with IK would be an overkill in most cases as there are only so few poses for the hands in a game.
Using 10 4-segment constrained CCD or FABRIK chains to position the fingers however is probably something you don’t want to waste your precious milliseconds on.
See the Driving Rig demo to get an idea how to very quickly (and entirely in Unity) pose the fingers to an object.

FullBodyBipedIK没有手指和脚趾的效应器
在大多数情况下,用IK解决手指问题是一种繁琐了,因为在游戏中手只有很少的姿势。
然而,使用10个4段受限的CCD或FABRIK链来定位手指可能是你不想浪费宝贵的毫秒的东西。
参见驾驶演示,了解如何非常快速(完全统一)将手指摆到物体上。

FullBodyBipedIK samples the initial pose of your character (in Start() and each time you re-initiate the solver) to find out which way the limbs should be bent.
Hence the limitation - the limbs of the character at that moment should be bent in their natural directions.
Some characters however are in geometrically perfect T-Pose, meaning their limbs are completely straight.
Some characters even have their limbs bent slightly in the inverse direction (some Mixamo rigs for example). FullBodyBipedIK will alarm you should this problem occur.
All you will have to do, is rotate the forearm or calf bones in the Scene view slightly in the direction they should be bent. Since those rotations will be overwritten in play mode by animation anyway, you should not be afraid of messing up your character.

FullBodyBipedIK对角色的初始姿势进行采样(在Start()中,并且每次重新启动求解器时),以找出肢体应该以哪种方式弯曲。
因此,这个角色的局限性在于,此时的角色肢体应该向着自然的方向弯曲。
然而,有些角色在几何学上是完美的T-姿态,这意味着他们的肢体是完全笔直的。
有些角色的肢体甚至稍微向相反方向弯曲(例如(Mixamo rigs)下次讲的案例)。FullBodyBipedIK 会提醒你应该出现这个问题。
你所要做的就是转动前臂或小腿的骨头,在场景视图中稍微朝它们应该弯曲的方向转动
由于这些轮换将在播放模式下被动画覆盖,所以你不要害怕弄坏你的角色。

FullBodyBipedIK does not have elbow/knee effectors. That might change in the future should there be a practical demand for them. Elbow and knee positions can still be modified though as bend goals are supported.
FullBodyBipedIK 没有肘/膝效应器。如果有实际的需求,未来可能会发生变化。肘和膝盖的位置仍然可以修改,虽然弯曲目标得到支持。

Additional bones in the limbs are supported as long as their animation is twisting only. If the additional bones have swing animation, like for example wing bones, FBBIK will not solve the limb correctly.
只要他们的动画只是扭动,四肢的额外骨骼就会被支撑。如果额外的骨骼有摆动动画,比如翅膀骨骼,FBBIK将不能正确地解决肢体。

FullBodyBipedIK does not rotate the shoulder bone when the character is pulled by the hand.
It will maintain the shoulder bone rotation relative to the chest as it is in the animation.
In most cases, it is not a problem, but sometimes, especially when reaching for something above the head, having the shoulder bone rotate along would make it more realistic.
In this case you should either have an underlaying reach up (procedural) animation that rotates the shoulder bone or it can also be rotated via script before the IK solver reads the character’s pose.
There is also a workaround script included in the demos, called ShoulderRotator, just add it to the FBBIK game object.

当人物的手被拉的时候 FullBodyBipedIK 不会旋转他的肩膀
它将保持肩骨旋转相对于胸部,因为它在播放动画中。
在大多数情况下,这并不是问题,但有时,尤其是当伸手去拿头上的东西时,让肩部骨头顺着旋转会使它更真实。
在这种情况下,你应该有一个底层伸展(程序)动画旋转肩骨,或者也可以通过脚本旋转之前,IK求解器读取字符的姿态。
演示中还包括一个解决脚本,称为.lderRotator,只需将其添加到FBBIK游戏对象
Demos(演示文稿)中也包含了一个解决方案脚本,叫ShoulderRotator,只需把它添加到FBBIK游戏对象

When you move a limb end-effector and the effector rotation weight is 0, FBBIK will try to maintain the bending direction of the limb as it is animated.
When the limb rotates close to 180 degrees from it’s animated direction, you will start experiencing rolling of the limb, meaning, the solver has no way to know at this point of singularity, which way to rotate the limb.
Therefore if you for example have a walking animation, where the hands are down and you want to use IK to grab something from directly above the head, you will have to take the inconvenience to also animate the effector rotation or use a bend goal, to make sure the arm does not roll backwards when close to 180 degrees of angular offset.
This is not a bug, it is a logical inevitability if we want to maintain the animated bending direction by default.

当你移动一个肢体末端执行器,并且执行器的旋转重量是0时,FBBIK将试图保持肢体的弯曲方向,因为它是动画。
当肢体从其动画方向旋转接近180度时,您将开始体验肢体的滚动,这意味着,求解器在这个奇异点无法知道肢体以何种方式旋转。
因此,例如,如果你有一个行走的动画,其中双手向下,你想用IK从头顶直接抓取东西,你将不得不不便也动画效果器旋转或使用弯曲目标,以确保当手臂不向后滚动时,接近180度的角偏移。
这不是一个bug,如果我们想在缺省情况下保持动画的弯曲方向,这是一个逻辑上的必然性。

FullBodyBipedIK considers all elbows and knees as 3 DOF joints with swing rotation constrained to the range of a hemisphere (Since 0.22, used to be 1 DOF).
That allows for full accuracy mapping of all biped rigs, the only known limitation is that the limbs can’t be inverted (broken from the knee/elbow).

FullBodyBipedIK认为所有的肘部和膝盖都是3自由度关节,摆动旋转限制在半球的范围内(开始为0.22,以前是1自由度)。
这允许所有双足人物的完全精确映射,唯一已知的限制是肢体不能倒立倒转(膝盖/肘部会损坏)。

开始:

Add the FullBodyBipedIK component to the root of your character (the same GameObject that has the Animator/Animation component)
把FullBodyBipedIk 组件加到人物的根(root)上(这个物体拥有Animator/Animation组件)

Make sure the auto-detected biped references are correct
确保IK References自动引用的骨骼正确

Make sure the Root Node was correctly detected. It should be one of the bones in the lower spine.
确保正确检测到根节点。它应该是下脊椎骨之一。

Take a look at the character in the scene view, make sure you see the FullBodyBipedIK armature on top the character.
看一下场景视图中的角色,确保你看到角色顶部的FullBodyBipedIK 链枢。

Press Play, weigh in the effectors
点击Play,改变效应器组件的权重(weigh)

访问效应器:

public FullBodyBipedIK ik;
void LateUpdate () {
	//将左手效应器position位置设置为世界空间中的一点。如果执行器的位置权重为0,则没有效果。
    ik.solver.leftHandEffector.position = something; 
    
 	//设置左手效应器rotation旋转到世界空间中的一个点。如果执行器的旋转重量为0,则没有效果。
    ik.solver.leftHandEffector.rotation = something;
    
  	//左手效应器的Position位置 的 weight权重,左手将会被ik.solver.leftHandEffector.position.牵引
    ik.solver.leftHandEffector.positionWeight = 1f;
    
    //左手效应器的Rotation旋转 的 weight权重,左手将会被ik.solver.leftHandEffector.rotation.牵引
    //注意,如果你只想转动手,但不要改变手臂弯曲,
    //最好是在FBBIK完成更新之后旋转手骨(使用OnPostUpdate委托)
    ik.solver.leftHandEffector.rotationWeight = 1f;
  	
  	//从它的动画位置抵消手。如果效应器位置权重为1,则没有效果。
  	//请注意,在每次更新之后,效应器会将其位置偏移量重置为Vector3.0,因此可以(并且应该)额外使用它们。
  	//这使您可以通过多个脚本轻松编辑值。
    ik.solver.leftHandEffector.positionOffset += something; 
    
  	//效应器模式是在不改变权重时改变肢体的行为方式。
  	//自由意味着节点完全处于solver解算器的支配之下。
  	//如果您在平滑性方面有问题,请尝试将手的效果器模式更改为  MaintainAnimatedPosition or MaintainRelativePosition
  	//MaintainAnimatedPosition  在每个内部求解器迭代中将节点重置为骨骼的动画位置。
  	//这对脚是最有用的,因为通常你需要它们在动画中。
  	//所以如果你从左手拉这个角色,右臂会随着胸部旋转。
  	//通常情况下,你不想用这种行为来支撑腿。
    ik.solver.leftHandEffector.maintainRelativePositionWeight = 1f;//保持相对位置的权重
  	
  	//身体效应器是多重效应器,意味着它也与求解器中的其他节点(即左大腿和右大腿)一起操作。
  	//所以你可以用它来移动身体的效应器和大腿骨。如果我们将子节点设置为FALSE,大腿节点将不会被身体效应器改变。
    ik.solver.body.effectChildNodes = false;
   
   //其他效应器:右手效应器,左脚效应器,右脚效应器,左肩效应器,右肩效应器,左大腿效应器,右大腿效应器,身体效应器
   //你也可以通过以下方式找到一个效应器:
    ik.solver.GetEffector(FullBodyBipedEffector effectorType);
    ik.solver.GetEffector(FullBodyBipedChain chainType);
    ik.solver.GetEndEffector(FullBodyBipedChain chainType); //返回仅手或脚效应器
}

访问链:

public FullBodyBipedIK ik;
void LateUpdate () {
	//改变左臂的拉力值
    ik.solver.leftArmChain.pull = 1f; 
	//改变左臂的伸臂值
    ik.solver.leftArmChain.reach = 0f; 
    //其他链:右臂链、左臂链、右臂链、链(根链)
    //你也可以通过以下方法找到别的链:
    ik.solver.GetChain(FullBodyBipedChain chainType);
    ik.solver.GetChain(FullBodyBipedEffector effectorType);
}

访问映射

public FullBodyBipedIK ik;
void LateUpdate () {
    ik.solver.spineMapping.iterations = 2; // 改变脊柱映射迭代
    ik.solver.leftArmMapping.maintainRotationWeight = 1f; // 让左手保持旋转。
    ik.solver.headMapping.maintainRotationWeight = 1f; // 使头部保持其旋转的动画。
}

在运行的时候加FullBodyBipedIK (UMA)

public FullBodyBipedIK ik;
void LateUpdate () {
	//改变脊柱映射迭代
    ik.solver.spineMapping.iterations = 2; 

	//让左手保持旋转。
    ik.solver.leftArmMapping.maintainRotationWeight = 1f;

	//使头部保持其旋转的动画。
    ik.solver.headMapping.maintainRotationWeight = 1f; 
}
Adding FullBodyBipedIK in runtime (UMA):

//需要导入RootMotion 命名空间,因为需要 theBipedReferences(双足参考文献)
using RootMotion; 

FullBodyBipedIK ik;
// 无论何时在运行时都需要调用此方法。
// 请注意,FBBIK将在开始时采样角色的姿态,因此在调用此方法时,
// 人物的四肢应该在自然的向上弯曲。
void AddFBBIK (GameObject go, BipedReferences references = null) {
    if (references == null) { 
    // 自动检测两足动物的定义,如果我们还没有
        BipedReferences.AutoDetectReferences(ref references, go.transform,BipedReferences.AutoDetectParams.Default);
    }
    //添加组件
    ik = go.AddComponent<FullBodyBipedIK>(); 
    
    // Set the FBBIK to the references. You can leave the second parameter (root node) to null if you trust FBBIK to automatically set it to one of the bones in the spine.
    //设置FBBIK的references.如果你对FBBIK 的自动识别有信心你可以让第二个参数(root node [根节点])为空
    ik.SetReferences(references, null);
    
    // 使用预定义的肢体方向来防止可能的姿势取样问题(0.22版本)
    //四肢方向定位为UMA的骨骼
    ik.solver.SetLimbOrientations(BipedLimbOrientations.UMA); 
    //四肢方向定位为Max的双足骨骼
    ik.solver.SetLimbOrientations(BipedLimbOrientations.MaxBiped); 
    // or..
    ik.solver.SetLimbOrientations(yourCustomBipedLimbOrientations); 
    //自定义的肢体方向定义
    // 要知道如何填写自定义肢体姿势的定义,你应该想象你的角色站在I姿势(不是T姿势),双腿并拢,双手放在两边…
    //上骨前轴是大腿/上臂骨面向角色前方的局部轴。.
    // 下骨向前轴是小腿/前臂骨的局部轴,它面向角色向前。
    // 最后的骨左轴线是朝向左边的脚/手的局部轴
}

解决头部

Final IK 0.5 introduced the FBBIKHeadEffector component that enables us to use the FullBodyBipedIK component to map a character to the target position and rotation of the head.
最终的IK 0.5版本 引入了FBBIKHeadEffector组件,它使我们能够使用FullBodyBipedIK组件将字符映射到目标位置和头部的旋转。

Please take a look at the “Head Effector” demo scene to see how it can be set up.
请看一看“Head Effector”演示场景,看看它是如何设置的。(下次会说)

This is useful in particular for VR developers. You can download the Oculus VR demo scenes for Final IK for Unity4 and Unity5.
这特别适用于VR开发人员。您可以下载Oculus VR演示场景,为Final IK的Unity4和Unity5。

优化FullBodyBipedIK

You can use renderer.isVisible to weigh out the solver when the character is not visible.
当角色是不可见的时候你可以使用Renderer.isVisible 去改变求解器的权重

Most of the time you don’t need so many solver iterations and spine mapping iterations.
Sine FinalIK 0.4, we are able to set solver iteration count to 0, in which case the full body effect will not be solved.
This allows for easy optimization of IK on characters in the distance.

大多数时候,你不需要这么多的求解迭代和脊柱映射迭代。
自从FinalIk 0.4版本 我们能够将求解器迭代计数设置为0,在这种情况下,全身效应将无法得到解决。
这允许在距离上的角色上容易地优化IK。

Keep the “Reach” values at 0 if you don’t need them. By default they are 0.05f to improve accuracy.
如果你不需要的话,把“Reach”值保持在0。默认情况下,它们是0.05F,以提高精度

Keep the Spine Twist Weight at 0 if you don’t see the need for it.
如果你看不到脊柱的需要,保持脊柱扭转权重在0。

Also setting the “Spine Stiffness”, “Pull Body Vertical” and/or “Pull Body Horizontal” to 0 will slightly help the performance.
此外,将“Spine Stiffness(脊柱刚度)”、“Pull Body Vertical (垂直拉动身体)”和/或“Pull Body Horizontal(水平拉动身体)”设置为0将稍微有助于性能。

You don’t need all the spine bones in the spine array.
FBBIK works the fastest if there are 2 bones in the spine, the first one listed as the Root Node, and the other one the last bone in the spine (the last common ancestor of both arms).
Having less bones in the Spine makes it more rigid, which in some cases might be even a better, more natural looking solution.

你不需要脊柱列表中所有的脊柱骨
如果脊椎中有两块骨头,FBBIK的工作速度最快,第一块被列为根节点,而另一块被列为脊椎中的最后一块骨头(两臂最后的共同祖先)。
脊椎骨头较少会使人物其更加生硬,但在某些情况下,这也可能是更好、更自然的解决方案。

组成变量 (Component variables):

在这里插入图片描述

TimeStep - if zero, will update the solver in every LateUpdate(). Use this for chains that are animated. If > 0, will be used as updating frequency so that the solver will reach its target in the same time on all machines

FixTransforms - if true, will fix all the Transforms used by the solver to their initial state in each Update. This prevents potential problems with unanimated bones and animator culling with a small cost of performance

References - references to the character bones that FullBodyBipedIK needs to build it’s solver. The eyes are not necessary.

TimeStep-如果为零,将更新每个LATEUPDATE()中的求解器。将其用于动画化的链。如果>0,则用作更新频率,以便求解器在所有机器上同时达到其目标

FixTransforms-如果true,将在每次更新中将解决器所使用的所有Transfrom固定到它们的初始状态。这防止了未激活的骨骼和以较小的性能成本剔除动画的潜在问题。

References-必需要引用人物的骨骼到FullBodyBipedIk,但眼睛是不一定需要的。

求解器的变量

rootNode - the central bone in the body. 2 triangles should be visible in the Scene view, the chest and the hips, connected by the rootNode.

weight - the solver weight for smoothly blending out the effect of the IK

iterations - the solver iteration count. If 0, full body effect will not be calculated. This allows for very easy optimization of IK on character in the distance.

rootNode - 体内的中心骨.在场景视图中,2个三角形应该是可见的,胸部和臀部通过根节点连接。

weight - 求解器的权重,平滑的影响 混合IK

iterations-求解器迭代计数。如果为0,则不会计算全身效应。这使得在距离上的字符的IK非常容易的优化。

Body变量:

Target - the target Transform of the body effector. If assigned, solver.bodyEffector.position will be automatically set to the position of the target.

Position Weight - the position weight of the body effector. If weighed in, the body will be pinned
solver.bodyEffector.position. This overrides bodyEffector.positionOffset.

Use Thighs - if true, any effect on the body effector will be also applied to the thigh effectors. This makes it easier to move the lower body around.

Spine Stiffness - the stiffness of spine constraints. Lower values “crack” the spine.

Pull Body Vertical - weight of hand effectors pulling the body vertically (relative to root rotation).

Pull Body Horizontal - weight of hand effectors pulling the body horizontally (relative to root rotation).

Spine Iterations - the number of iterations of the FABRIK algorithm. Not used if there are 2 bones assigned to Spine in the References.

Spine Twist Weight - the weight of twisting the spine bones gradually to the orientation of the chest triangle. Relatively expensive, so set this to 0 if there is not much spine twisting going on.

Maintain Head Rot - if 1, the head will be rotated back to where it was (in world space) before solving FBBIK.

Target-身体目标的效应器的Transform,如果分配,solver.bodyEffector.position 将自动设置到目标的位置。

Position Weight-身体效应器的位置权重,如果改变权重,身体将会连接 solver.bodyEffector.position 优先于 bodyEffector.positionOffset.

Use Thighs - 如果true,对身体效应器的任何影响也将应用于大腿效应器。这使得较低的身体更容易移动。

Spine Stiffness - 脊椎约束的刚度。较低的值“断开”脊柱。

Pull Body Vertical-手效应器的权重垂直地拉动身体(相对于根旋转)。

Pull Body Horizontal - 手效应器的权重水平拉动身体(相对于根旋转)。

Spine Iterations -FABRIK算法的迭代次数。如果在参考文献中有2个骨头分配给脊柱,则不使用。

Spine Twist Weight-脊椎骨扭转的重量逐渐变为胸骨三角的方向。相对花费内存,所以如果没有太多的脊柱扭转,设置为0。

Maintain Head Rot-如果是1,在解决FBBIK之前,头部将被旋转回到它所在的地方(在世界空间中)。

肢干的变量

Target - the target Transform of the effector. If assigned, effector.position will be automatically set to the position of the target.

Position Weight - the position weight of the effector. If weighed in, the effector bone will be pinned to effector.position. This overrides effector.positionOffset.

Rotation Weight - the rotation weight of the effector. If weighed in, the limb will be rotated to effector.rotation. This also changes the bending direction of the limb. If the bending direction assumed by the solver is disagreeable, set rotation weight to 0 and either just rotate the hand/foot after FBBIK is done or use a Bend Goal for full precision.

Maintain Relative Pos - if 1, the (unweighed) limb will rotate along with the chest/hip triangle.

Pull - the weight of pulling the parent chain. If this limb is the only one to have full pull and the others have none, you will be able to pull the character from that end effector without ever loosing contact.

Reach - pulls the first bone of the limb closer to the last bone.

Push - the weight of the end-effector pushing the shoulder/thigh when the end-effector is close to it.

Push Parent - the amount of push force transferred to the parent (from hand or foot to the body).

Reach Smoothing - smoothing the effect of the Reach with the expense of some accuracy.

Push Smoothing - smoothing the effect of the Push and Push Parent with the expense of some accuracy.

Bend Goal - if assigned, will bend the limb to the direction from the shoulder/thigh to the Bend Goal.

Bend Goal Weight - the weight of bending the limb towards the Bend Goal.

Mapping Weight - if 0, the limb will not be mapped, meaning the bones of the limb will not be rotated at all even if the effectors are weighed in.

Maintain Hand/Foot Rot - if 1, will rotate the hand/foot back to where it was (in world space) before solving FBBIK. This is usually useful for keeping the feet aligned to the surface when changing the position of the body or the height of the feet.

Target - 效应器的目标Transfrom。如果分配,效果。位置将自动设置到目标的位置。

Position Weight - 效应器的位置权重。如果改变权重,效应骨将被固定到作用位置( effector.position)。这抵消了效应.位置偏移(effector.positionOffset.).

Rotation Weight -效应器的旋转权重,如果改变权重,肢体将旋转到 effector.rotation 效果。

Maintain Relative Pos -如果1,(未改变权重)肢体将随着胸/髋部三角形旋转。

Pull - 拉动父级的链,如果这个肢体是唯一一个有完全拉力的,而其他的则没有。您将能够拉动字符从端部执行器,从来没有松弛联系。

Reach -拉动肢体的第一块骨接近最后一块骨头。

Push-当末端执行器接近时,末端执行器推动肩部/大腿的重量。

Push Parent -向父级传递的推动力量(从手或脚到身体)

Reach Smoothing -平滑精度的影响,以一定的精度费用

Push Smoothing -以一定的精度平滑推送和推送身体体的效果

Bend Goal -如果分配,将弯曲肢体从肩部/大腿到弯曲目标的方向。

Bend Goal Weight -弯曲肢体向弯曲目标弯曲的权重。

Mapping Weight - 如果0,则肢体将不被映射,这意味着即使将效应器称入,肢体的骨头也不会被旋转。

Maintain Hand/Foot Rot - 如果1,在解决FBBIK之前,将手/脚旋转到它所在的地方(在世界空间中)。当改变身体的位置或脚的高度时,这对于保持脚与表面对齐通常是有用的。

在这里插入图片描述

相信很多读者看的有点蒙,我也是ヘ( ̄ω ̄ヘ) ,但是看以下图你就知道IK的强大之处了:
搬箱子:
在这里插入图片描述
捡东西,开门,按按钮,踩,坐。。。

在这里插入图片描述
甚至。。。。

在这里插入图片描述

看到IK的强大之处吧 (。・ω・。)。
接下来将会不定期的解析一些官方DEMO.

官网链接:http://www.root-motion.com/finalikdox/html/index.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值