Difference between revisions of "VRIK (Component)"
Jump to navigation
Jump to search
(adds qualifiers to field names) |
(More descriptions for the spine parameters.) |
||
Line 54: | Line 54: | ||
|defaultLocalRotations|FloatQ| | |defaultLocalRotations|FloatQ| | ||
|DebugVisuals|Bool| Enables Debug visuals | |DebugVisuals|Bool| Enables Debug visuals | ||
− | |PlantFeet|Bool| When enabled feet positions will be prioritized over anything else including | + | |PlantFeet|Bool| When enabled feet positions will be prioritized over anything else including HeadTarget. (Causes issues with walking) If true, will keep the toes planted even if the HeadTarget is out of reach, so this can cause the camera to exit the head if it is too high for the model to reach. |
|spine.Initiated|Bool| | |spine.Initiated|Bool| | ||
− | |spine.HeadTarget|Slot| | + | |spine.HeadTarget|Slot| Typically the position and rotation of the HMD tracker. |
− | |spine.PelvisTarget|Slot| | + | |spine.PelvisTarget|Slot| Typically the position and rotation of the hip tracker. |
− | |spine.PositionWeight|Float| | + | |spine.PositionWeight|Float| Positional weight of the HeadTarget. |
− | |spine.RotationWeight|Float| | + | |spine.RotationWeight|Float| Rotational weight of the HeadTarget. |
− | |spine.PelvisPositionWeight|Float| | + | |spine.PelvisPositionWeight|Float| Positional weight of the PelvisTarget. |
− | |spine.PelvisRotationWeight|Float| | + | |spine.PelvisRotationWeight|Float| Rotational weight of the PelvisTarget. |
− | |spine.ChestGoal|Slot| | + | |spine.ChestGoal|Slot| If ChestGoalWeightis greater than 0, the chest will be turned towards this slot. |
− | |spine.ChestGoalWeight|Float| | + | |spine.ChestGoalWeight|Float| Weight of turning the chest towards the ChestGoal. |
|spine.MinHeadHeight|Float| Minimum Head height allowed by the IK solver (Nonfunctional) | |spine.MinHeadHeight|Float| Minimum Head height allowed by the IK solver (Nonfunctional) | ||
− | |spine.BodyPosStiffness|Float| How much the body will try to move with the | + | |spine.BodyPosStiffness|Float| How much the body will try to move with the HeadTarget. |
− | |spine.BodyRotStiffness|Float| How much the body will try to rotate with the | + | |spine.BodyRotStiffness|Float| How much the body will try to rotate with the HeadTarget. |
− | |spine.NeckStiffness|Float| | + | |spine.NeckStiffness|Float| How much the chest will rotate when the head is rotated. |
− | |spine.RotateChestByHands|Float| How much the chest rotates based on | + | |spine.RotateChestByHands|Float| How much the chest rotates based on hand movement. |
− | |spine.ChestClampWeight|Float| How much the chest can rotate with 0 being full movement and 1 being no movement | + | |spine.ChestClampWeight|Float| How much the chest can rotate relative to the head with 0 being full movement and 1 being no movement. A value of 0.5 allows 90 degrees of rotation for the chest relative to the head. A value of 0 allows 180 degrees and a value of 1 means the chest will be locked relative to the head. |
− | |spine.HeadClampWeight|Float| How much the head can rotate with 0 being full movement and 1 being no movement | + | |spine.HeadClampWeight|Float| How much the head can rotate relative to the HeadTarget with 0 being full movement and 1 being no movement. A value of 0.5 allows 90 degrees of rotation for the head relative to the HeadTarget. A value of 0 allows 180 degrees and a value of 1 means head rotation will be locked to the HeadTarget. |
|spine.MoveBodyBackWhenCrouching|Float| How much the body will move backwards when crouching | |spine.MoveBodyBackWhenCrouching|Float| How much the body will move backwards when crouching | ||
− | |spine.MaintainPelvisPosition|Float| How much the pelvis will move with the feet instead of the | + | |spine.MaintainPelvisPosition|Float| How much the pelvis will move with the feet instead of the HeadTarget. |
− | |spine.MaxRootAngle|Float| How much | + | |spine.MaxRootAngle|Float| How much the HeadTarget must rotate for the whole body to rotate (in degrees). |
− | |spine.IKPositionHead|Float3| | + | |spine.IKPositionHead|Float3| The solved position for the head. Driven. |
− | |spine.IKRotationHead|FloatQ| | + | |spine.IKRotationHead|FloatQ| The solved rotation for the head. Driven. |
− | |spine.IKPositionPelvis|Float3| | + | |spine.IKPositionPelvis|Float3| The solved position for the pelvis. Driven. |
− | |spine.IKRotationPelvis|FloatQ| | + | |spine.IKRotationPelvis|FloatQ| The solved rotation for the pelvis. Driven. |
− | |spine.GoalPositionChest|Float3| | + | |spine.GoalPositionChest|Float3| The solved goal position for the chest. Driven. |
− | |spine.headHeight|Float| Head height while standing. Used for calculating MoveBodyBackWhenCrouching | + | |spine.headHeight|Float| Head height while standing. Used for calculating MoveBodyBackWhenCrouching. |
− | |spine.anchorRelativeToHead|FloatQ| Root rotation relative to | + | |spine.anchorRelativeToHead|FloatQ| Root rotation relative to HeadTarget. |
− | |spine.pelvisRelativeRotation|FloatQ| Pelvis rotation relative to | + | |spine.pelvisRelativeRotation|FloatQ| Pelvis rotation relative to HeadTarget. |
− | |spine.chestRelativeRotation|FloatQ| Chest rotation relative to | + | |spine.chestRelativeRotation|FloatQ| Chest rotation relative to HeadTarget. |
|spine.chestForward|Float3| Chest Forward Vector | |spine.chestForward|Float3| Chest Forward Vector | ||
|spine.pelvisForward|Float3| Pelvis Forward Vector | |spine.pelvisForward|Float3| Pelvis Forward Vector |
Revision as of 20:33, 15 October 2021
This article or section is a Stub. You can help the Neos Wiki by expanding it.
Intoduction
Oof
— Epsilion
The VRIK component is used to configure Inverse Kinematics on an avatar, for posing joints based on the position of IK Targets such as a VR HMD, hand tracking, or Vive Trackers
This component is automatically configured when importing a mesh with a detectable humanoid rig, and generally should not be modified unless you know what you are doing.
Documentation on this component may take some time, as it is very complex, and not commonly used.
Usage
All weight values are 1-0, excluding clamps which are inverted 0-1. As usual for Neos, you can overdrive some of them with interesting results.
Fields | ||
---|---|---|
Name | Type | Description |
persistent
|
Bool | Determines whether or not this item will be saved to the server. |
UpdateOrder
|
Int | Controls the order in which this component is updated |
Enabled
|
Bool | Controls whether or not this component is enabled |
FixTransformsEnabled
|
Bool | Clamps IK transforms to reasonable values and Resets IK every update. |
componentInitiated
|
Bool | |
IKPosition
|
Float3 | |
IKPositionWeight
|
Float | Weight of the IK |
SimulationSpace
|
Slot | |
OffsetSpace
|
Slot | |
_initiated
|
Bool | |
OnPreInitiate
|
UpdateDelegate | |
OnPostInitiate
|
UpdateDelegate | |
OnPreUpdate
|
UpdateDelegate | |
OnPostUpdate
|
UpdateDelegate | |
root
|
Slot | |
pelvis
|
Slot | |
spine
|
Slot | |
chest
|
Slot | |
neck
|
Slot | |
head
|
Slot | |
leftShoulder
|
Slot | |
leftUpperArm
|
Slot | |
leftForearm
|
Slot | |
leftHand
|
Slot | |
rightShoulder
|
Slot | |
rightUpperArm
|
Slot | |
rightForearm
|
Slot | |
rightHand
|
Slot | |
leftThigh
|
Slot | |
leftCalf
|
Slot | |
leftFoot
|
Slot | |
leftToes
|
Slot | |
rightThigh
|
Slot | |
rightCalf
|
Slot | |
rightFoot
|
Slot | |
rightToes
|
Slot | |
defaultLocalPositions
|
Float3 | |
defaultLocalRotations
|
FloatQ | |
DebugVisuals
|
Bool | Enables Debug visuals |
PlantFeet
|
Bool | When enabled feet positions will be prioritized over anything else including HeadTarget. (Causes issues with walking) If true, will keep the toes planted even if the HeadTarget is out of reach, so this can cause the camera to exit the head if it is too high for the model to reach. |
spine.Initiated
|
Bool | |
spine.HeadTarget
|
Slot | Typically the position and rotation of the HMD tracker. |
spine.PelvisTarget
|
Slot | Typically the position and rotation of the hip tracker. |
spine.PositionWeight
|
Float | Positional weight of the HeadTarget. |
spine.RotationWeight
|
Float | Rotational weight of the HeadTarget. |
spine.PelvisPositionWeight
|
Float | Positional weight of the PelvisTarget. |
spine.PelvisRotationWeight
|
Float | Rotational weight of the PelvisTarget. |
spine.ChestGoal
|
Slot | If ChestGoalWeightis greater than 0, the chest will be turned towards this slot. |
spine.ChestGoalWeight
|
Float | Weight of turning the chest towards the ChestGoal. |
spine.MinHeadHeight
|
Float | Minimum Head height allowed by the IK solver (Nonfunctional) |
spine.BodyPosStiffness
|
Float | How much the body will try to move with the HeadTarget. |
spine.BodyRotStiffness
|
Float | How much the body will try to rotate with the HeadTarget. |
spine.NeckStiffness
|
Float | How much the chest will rotate when the head is rotated. |
spine.RotateChestByHands
|
Float | How much the chest rotates based on hand movement. |
spine.ChestClampWeight
|
Float | How much the chest can rotate relative to the head with 0 being full movement and 1 being no movement. A value of 0.5 allows 90 degrees of rotation for the chest relative to the head. A value of 0 allows 180 degrees and a value of 1 means the chest will be locked relative to the head. |
spine.HeadClampWeight
|
Float | How much the head can rotate relative to the HeadTarget with 0 being full movement and 1 being no movement. A value of 0.5 allows 90 degrees of rotation for the head relative to the HeadTarget. A value of 0 allows 180 degrees and a value of 1 means head rotation will be locked to the HeadTarget. |
spine.MoveBodyBackWhenCrouching
|
Float | How much the body will move backwards when crouching |
spine.MaintainPelvisPosition
|
Float | How much the pelvis will move with the feet instead of the HeadTarget. |
spine.MaxRootAngle
|
Float | How much the HeadTarget must rotate for the whole body to rotate (in degrees). |
spine.IKPositionHead
|
Float3 | The solved position for the head. Driven. |
spine.IKRotationHead
|
FloatQ | The solved rotation for the head. Driven. |
spine.IKPositionPelvis
|
Float3 | The solved position for the pelvis. Driven. |
spine.IKRotationPelvis
|
FloatQ | The solved rotation for the pelvis. Driven. |
spine.GoalPositionChest
|
Float3 | The solved goal position for the chest. Driven. |
spine.headHeight
|
Float | Head height while standing. Used for calculating MoveBodyBackWhenCrouching. |
spine.anchorRelativeToHead
|
FloatQ | Root rotation relative to HeadTarget. |
spine.pelvisRelativeRotation
|
FloatQ | Pelvis rotation relative to HeadTarget. |
spine.chestRelativeRotation
|
FloatQ | Chest rotation relative to HeadTarget. |
spine.chestForward
|
Float3 | Chest Forward Vector |
spine.pelvisForward
|
Float3 | Pelvis Forward Vector |
leftArm.Initiated
|
Bool | |
leftArm.Target
|
Slot | |
leftArm.BendGoal
|
Slot | |
leftArm.PositionWeight
|
Float | |
leftArm.RotationWeight
|
Float | |
leftArm.ShoulderRotationMode
|
ShoulderRotationMode | Shoulder rotation method. |
leftArm.ShoulderRotationWeight
|
Float | How much the shoulders should move based on Hand position |
leftArm.BendGoalWeight
|
Float | |
leftArm.SwivelOffset
|
Float | Rotation offset for the Elbows in degrees |
leftArm.WristToPalmAxis
|
Float3 | Palm Direction (Higher values on the Y axis increase the amount the arms move with your controllers) |
leftArm.PalmToThumbAxis
|
Float3 | Thumb Direction |
leftArm.ArmLengthMlp
|
Float | Arm Length Multiplier. |
leftArm.StretchCurve
|
Float | |
leftArm.IKPosition
|
Float3 | |
leftArm.IKRotation
|
FloatQ | |
leftArm.BendGoalPosition
|
Float3 | |
leftArm.TwistRelaxWeight
|
Float | How much the forearm twists towards the wrist |
leftArm.TwistCrossfade
|
Float | Weight of the forearm twisting |
leftArm.TwistAngleOffset
|
Float | Angle offset of the forearm twisting |
leftArm.chestForwardAxis
|
Float3 | |
leftArm.chestUpAxis
|
Float3 | |
leftArm.forearmTwistAxis
|
Float3 | |
leftArm.forearmAxis
|
Float3 | |
leftArm.axisRelativeToUpperArm
|
Float3 | |
leftArm.axisRelativeToHand
|
Float3 | |
rightArm.Initiated
|
Bool | |
rightArm.Target
|
Slot | |
rightArm.BendGoal
|
Slot | |
rightArm.PositionWeight
|
Float | |
rightArm.RotationWeight
|
Float | |
rightArm.ShoulderRotationMode
|
ShoulderRotationMode | Shoulder rotation method. Pitch/yaw is more accurate. From/to is simpler. |
rightArm.ShoulderRotationWeight
|
Float | How much the shoulders should move based on Hand position |
rightArm.BendGoalWeight
|
Float | |
rightArm.SwivelOffset
|
Float | Rotation offset for the Elbows in degrees |
rightArm.WristToPalmAxis
|
Float3 | Palm Direction (Higher values on the Y axis increase the amount the arms move with your controllers) |
rightArm.PalmToThumbAxis
|
Float3 | Thumb Direction |
rightArm.ArmLengthMlp
|
Float | Arm Length Multiplier. |
rightArm.StretchCurve
|
Float | |
rightArm.IKPosition
|
Float3 | |
rightArm.IKRotation
|
FloatQ | |
rightArm.BendGoalPosition
|
Float3 | |
rightArm.TwistRelaxWeight
|
Float | How much the forearm twists towards the wrist |
rightArm.TwistCrossfade
|
Float | Weight of the forearm twisting |
rightArm.TwistAngleOffset
|
Float | Angle offset of the forearm twisting |
rightArm.chestForwardAxis
|
Float3 | |
rightArm.chestUpAxis
|
Float3 | |
rightArm.forearmTwistAxis
|
Float3 | |
rightArm.forearmAxis
|
Float3 | |
rightArm.axisRelativeToUpperArm
|
Float3 | |
rightArm.axisRelativeToHand
|
Float3 | |
leftLeg.Initiated
|
Bool | |
leftLeg.Target
|
Slot | |
leftLeg.BendGoalPosition
|
Float3 | |
leftLeg.BendGoal
|
Slot | |
leftLeg.PositionWeight
|
Float | |
leftLeg.RotationWeight
|
Float | |
leftLeg.BendGoalWeight
|
Float | |
leftLeg.SwivelOffset
|
Float | |
leftLeg.CalfBendNormal
|
Float3 | |
leftLeg.IKPosition
|
Float3 | |
leftLeg.IKRotation
|
FloatQ | |
rightLeg.Initiated
|
Bool | |
rightLeg.Target
|
Slot | |
rightLeg.BendGoalPosition
|
Float3 | |
rightLeg.BendGoal
|
Slot | |
rightLeg.PositionWeight
|
Float | |
rightLeg.RotationWeight
|
Float | |
rightLeg.BendGoalWeight
|
Float | |
rightLeg.SwivelOffset
|
Float | |
rightLeg.CalfBendNormal
|
Float3 | |
rightLeg.IKPosition
|
Float3 | |
rightLeg.IKRotation
|
FloatQ | |
locomotion.Weight
|
Float | |
locomotion.FootDistance
|
Float | Distance between where each foot will attempt to plant themselves |
locomotion.StepThreshold
|
Float | How far you have to move for the feet to attempt to re-plant themselves |
locomotion.AngleThreshold
|
Float | How much you have to rotate for the feet to attempt to re-plant themselves |
locomotion.ComAngleMlp
|
Float | |
locomotion.MaxVelocity
|
Float | Maximum velocity the feet will use for prediction |
locomotion.VelocityFactor
|
Float | How much the feet will use your current velocity to predict where you're stepping |
locomotion.MaxLegStretch
|
Float | How much your leg can stretch before it attempts to re-plant itself |
locomotion.RootSpeed
|
Float | How fast the pelvis and legs will move to catch up to the HMD |
locomotion.StepSpeed
|
Float | How fast the foot planter will move the feet to their new position when re-planting |
locomotion.StepHeight
|
Float | |
locomotion.HeelHeight
|
Float | |
locomotion.RelaxLegTwistMinAngle
|
Float | How much your HMD has to rotate before your feet begin to rotate towards your HMD without stepping. |
locomotion.RelaxLegTwistSpeed
|
Float | How fast the feet can rotate while on the ground |
locomotion.StepInterpolation
|
InterpolationMode | The type of interpolation the feet will use |
locomotion.Offset
|
Float3 | Offset for feet planting relative to your HMD |
locomotion.LeftFootOffset
|
Float3 | |
locomotion.RightFootOffset
|
Float3 | |
locomotion.OnLeftFootstep
|
Action | Non-Functional WorldDelegate |
locomotion.OnRightFootstep
|
Action | Non-Functional WorldDelegate |
locomotion._leftFootstep._initialized
|
Bool | |
locomotion._leftFootstep.footRelativeToRoot
|
FloatQ | |
locomotion._leftFootstep.footGroundHeight
|
Float | |
locomotion._rightFootstep._initialized
|
Bool | |
locomotion._rightFootstep.footRelativeToRoot
|
FloatQ | |
locomotion._rightFootstep.footGroundHeight
|
Float | |
ForwardFlipped
|
Bool | Swaps the feet |
ForceRootHeight
|
Float | Foot planting height override (Negative numbers cause issues with walking) |
LocomotionPositionOffset
|
Float3 | |
DefaultRootPosition
|
Float3 | |
DefaultRootRotation
|
FloatQ | |
_drives
|
BoneDrive |