VR IK Body - Support

I have a HTC Vive and am trying the demo, am just running the application that downloaded (I simply extracted zip to folder then ran the application)

However I cannot get the controllers to trigger the select for the menu. When I start the demo I see the 2 hands which move fine with the controllers (there is no grab, not sure if its supposed to work or not) but cannot select the singleplayer or multiplayer buttons no matter what I press on the controllers.

Don’t press a trigger, just touch the ‘single player’ button by any hand.

A demo project would be really handy to figure out the set up for this plugin? (minus the plugin itself, obviously).

UE 4.16 demo project: https://drive.google.com/open?id=1J-bl9lxC276I3tuVaYfuEBrmYQYvvP22
UE 4.17 demo project: https://drive.google.com/open?id=0B6s-2uvAvszmVHpmSmtwNWtkNGc
UE 4.18 demo project: https://drive.google.com/open?id=1yiVA33ReikGYdX7XP9YbWpwsT21PrHPG
Tutorial video: https://www.youtube.com/watch?v=CncQQyvaYZ4

1 Like

Wow. Great! Thanks! :slight_smile:

I’ve noticed working with my own model, that the wrist twists around the like a balloon animal balloon. Is the rotation of the forearm weighted in rotation at all?

This are the bones hierarchy of our skeleton and the output log. I think that the warning about the iktranslator in the log is the key but i cant find why its giving it.

Look like log is incomplete: I don’t see warnings here. Are you sure it was warning, not error? There could be a few possible errors and only one warning if the plugin uses first actor’s skeletal mesh component instead of specified, but invalid ControlledSkeletalMesh in Initialize(…) call.

  1. If you set master component for head mesh in the player pawn’s construct script, try to turn it off.
  2. Make sure you apply anim blueprint to body mesh, not head.
  3. Check if returned PoseSnapshot variable IsValid.
  4. Can you show components hierarchy in the player pawn blueprint?
  1. I tried with it turned off and the behavior of the pawn is the same
  2. I checked it again and its ok
  3. It seems like in the anim blueprint the variable isValid of PoseSnapshot is always false

https://forums.unrealengine.com/filedata/fetch?type=thumb&filedataid=126588

What exactly warning message to you see in log? Try to remove head mesh at all. if Posesnapshot is invalid after calibration, I think it tries to use head mesh instead of body mesh for some unknown reason.

Twist bones aren’t animated, they don’t rotate by default. But you can manually add twists rotation. Here is an examle for one bone. unfortunately, I can’t test it right now.

  1. in InitializeAnimation in the anim blueprint: https://pp.userapi.com/c841429/v841429755/565d9/J1TByDQsflU.jpg
  2. in UpdateAnimation (every tick): https://pp.userapi.com/c841429/v841429755/565ec/DN37V6GWT0w.jpg
  3. https://pp.userapi.com/c841429/v841429755/565e2/nAMkIH3_fM4.jpg
  4. https://pp.userapi.com/c841429/v841429755/565f6/4zhQNP62GoE.jpg

I tried removing the head and it continues doing the same thing.

also this is the warning, it only appears when i launch the project:
LogScript: Warning: Accessed None trying to read property IKTranslator
SK_MannequinTPOSE_Skeleton_AnimBlueprint_C /Game/VirtualRealityBP/Maps/MotionControllerMap.MotionControllerMap:PersistentLevel.VRPawn_507.SM_Body.SK_MannequinTPOSE_Skeleton_AnimBlueprint_C_0
Function /Game/test/UE4_Mannequin/SK_MannequinTPOSE_Skeleton_AnimBlueprint.SK_MannequinTPOSE_Skeleton_AnimBlueprint_C:ExecuteUbergraph_SK_MannequinTPOSE_Skeleton_AnimBlueprint:0292

For what i’ve seen the isValid node with “Try get pawn owner” in the anim blueprint is going invalid all the time

Oh, it’s really werid. Are you sure yo changed anim blueprint watching from Preview object to active player pawn after launch?
Idea No 1: have you tried to import your skeletal mesh to my demo project and use it instead of Mannequin?
Idea No 2: upload your test project to dropbox or google drive and send me (ykasczc@gmail.com) a link for in-place debugging :slight_smile:

I tried with your demo project and it works fine. Now i will send you an email with a link to the project so you can debug it. And thanks for all the attention you are giving, we really apreciate it.

Was hoping you might be able to help, when I import the player mesh (without head) and use that in the motioncontroller, the arms and body are not detected, just the body rotates as I turn but it is 90 degrees turned to the side. If I rotate it in the viewport it still aligns incorrectly as well.

I’ve adjusted the bones in the translator setup to use the bone names of the headless mesh and followed through the video tutorial a couple of times so am pretty sure I’ve set it up correctly.

Any ideas? See log errors below

Thanks.

xampleMap_C’ with ClassGeneratedBy ‘/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.ThirdPersonExampleMap’
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Component isn’t ready.
LogSkinnedMeshComp: Warning: GetBoneTransform : ParentBoneIndex(0) out of range of MasterPoseComponent->SpaceBases for SM_Head
LogSkinnedMeshComp: Warning: GetBoneTransform : ParentBoneIndex(0) out of range of MasterPoseComponent->SpaceBases for SM_Head
LogScript: Warning: Accessed None trying to read property IKTranslator
man1Head_Skeleton_AnimBlueprint_C /Engine/Transient.World_4:PersistentLevel.MotionControllerPawn_C_0.SM_Body.man1Head_Skeleton_AnimBlueprint_C_3
Function /Game/football/playerMan/man1Head_Skeleton_AnimBlueprint.man1Head_Skeleton_AnimBlueprint_C:ExecuteUbergraph_man1Head_Skeleton_AnimBlueprint:018F
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Component isn’t ready.
LogSkinnedMeshComp: Warning: GetBoneTransform : ParentBoneIndex(0) out of range of MasterPoseComponent->SpaceBases for SM_Head
LogSkinnedMeshComp: Warning: GetBoneTransform : ParentBoneIndex(0) out of range of MasterPoseComponent->SpaceBases for SM_Head
LogSkinnedMeshComp: Warning: GetBoneTransform : ParentBoneIndex(0) out of range of MasterPoseComponent->SpaceBases for SM_Head
LogSkinnedMeshComp: Warning: GetBoneTransform : ParentBoneIndex(0) out of range of MasterPoseComponent->SpaceBases for SM_Head
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Component isn’t ready.
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Component isn’t ready.
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Component isn’t ready.
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Component isn’t ready.
LogVRIKSkeletalMeshTranslator: Error: [GetLastPose]: Comp

Hi,

Make sure that body’s skeletal mesh component in the player object located at the scene (not just in the blueprint) has proper anim blueprint.

And can you also make a screenshots of player pawn blueprint (viewport, components hierarchy, VRIKBody and VRIKTranslator settings) and bones hierarchy in the skeletal mesh?

I redid the configuration from the start as I think there’s an editor bug as the anim BP was not being run (breakpoints and print to screens were not run) even though it was specified in the Viewport.

Ok so now I have the arms and body moving but the legs are distorted and angled up into the body. The translation of bones is correct. Suggestions?

Another thing Iam finding the arms don’t straighten out they are always bent no matter how far I extend the hands away from the body in the T pose

I think I know what cause the problem, but I need to make some changes in the plugin’s code to fix it. Just for a case can you send a screenshot with bones orientation (like here, but for your skeletal mesh: https://pp.userapi.com/c840620/v840620062/3f105/ty6YGq4NEWw.jpg).

For now you can use this temporary solution:
Anim blueprint event graph: https://pp.userapi.com/c840620/v840620062/3f0f1/B_m0ZC4ukuU.jpg
Anim blueprint anim graph: https://pp.userapi.com/c840620/v840620062/3f0fb/DVWi2hAlcQo.jpg

Hands are always bent, yes. I can’t predict ribcage and shoulders rotation accurate enough without additional tracking devices. At the other hand, plugin must keep hand palms exactly in a position of motion controllers. So I slightly overscale hands to make sure palms always can reach controller’s location despite some error in ribcage position and rotation. This screenshot from an early version of the plugin demonstrates it well: https://pp.userapi.com/c840335/v840335062/4028c/_6ANdWEqNg8.jpg

The plugin can detect the ground beneath, see https://youtu.be/Vmyi0jQinh4?t=2m7s after 2:00. You can simply use default CharacterMovement component with gravity enabled. The plugin will detect when ground is too far (i.e. player is falling/jumping).

Settings:

Thanks for replying, I’ll try out the workaround in a bit. Heres the screen prints requested: