VR IK Body - Support

Thanks, it worked.

Hello,
Does your IK Rig package for Android?
Thank you!

  • s

No, it’s only for PC VR.

Hi I am having a large amount of trouble getting this to work in 4.19. When I migrate the 4.18 demo project to a 4.19 project nothing works right. Any help would be extremely appreciated!

Basic projet for 4.19: https://drive.google.com/open?id=1K8xqpcoQOQEkD1EkyBhvR3QsSxO95v-A
Advanced (old) project with multiplayer for 4.19: https://drive.google.com/open?id=1UnytQDNgMknZT8H6df6RMvBZI0KYZOBB

I just purchased this plugin today. I followed the setup video (https://www.youtube.com/watch?v=CncQQyvaYZ4) using a new project. I’ve spent about 5 hours so far and still can’t get this plugin to work properly.

I’m going to echo Victor’s point — I have no idea what the steps are to ā€œtryā€ a custom Skeletal Mesh in your template. It’s not clear. Could you provide these steps in the Doc, or here in the forum, or make an updated tutorial video with this information?

I’m in the process of retargeting, and renaming, and still having trouble. I’m also having to jump from forum page to forum page trying to get the most up-to-date info… :frowning:

Basic setup doesn’t change regardless of skeletal mesh. Don’t use demo project as a template. Instead, follow video tutorial (https://www.youtube.com/watch?v=CncQQyvaYZ4) to add support from scratch and then, if you don’t know how to add some feature (twist bones, walking animation, save/load calibration, fingers animation etc), copy if from demo project.

Common problems:

  • Spelling mistake in bones names in the VRIKSkeletalMeshTranslator component.
  • Sometimes UE4 doesn’t update settings in the player actor located at level. Solution: remove player actor from the scene and place a new one (don’t forget to set auto-possess checkbox).

Howdy, YuriNK,
I’m having a calibration issue. I followed your tutorial exactly, multiple times, using the default mannequin (besides the extra step to attach the head since the mannequin’s head is attached). I’ve double-checked bone names, removed and re-added the actor to the map, etc., and I’m out of ideas. I’ve even double checked everything I do to what you do in the example project, and they seem the same (except for the more complicated rigging and rifle stuff which I ignored for the sake of simplicity).

The problem I see is: the mannequin seems to follow my general head location but none of the bones move. He’s in a default T-pose at all times. Any ideas about what might be the culprit?

Thanks in advance!

This doesn’t work for me. I have tried everything. Can we please get a sample project? Video tutorial didn’t help. Nothing moves.

Edit: The calibration functions don’t work. I am able to force the default setting, but the IK is terrible that way. Can we get some insight way calibration always fails?

Have you tried this project: https://drive.google.com/open?id=1K8xqpcoQOQEkD1EkyBhvR3QsSxO95v-A? It’s very close to the video tutorial/

Calibration requires two steps. First step: hands to left and right, trigger press. Seconds step: both hands down along body, trigger press.

Hey Yuri,
I notice that on the video tutorial you’re using the VR Template, so that all the motion controller stuff is already done, but can I use the plugin with a custom template, where the main difference will be that I’ll be using Vive Trackers?
I’m planning to use VR gloves, so I guess that also the calibration can be done by using delays on event begin play?

Are you sure that you mean this plugin and not ViveMocapKit? VR IK Body predicts an orientation of player’s torso. It doesn’t use Vive Trackers at all and, unfortunately, can’t get input from tracker event if you have it.

Yep, I mean this, since I’m planning to yse just the Vive HMD and the controllers.
My plan is to use the Trackers instead of the controllers, and ( correct me if I’m wrong ), but using the default VR Template I see in the tutorial, I shoudl be able to switch from the Left and Right controller to the Vive Trackers, by assigning Special1 and Special2, so in this case I’m not really changing/modifying anything related to the use of the VR IK Body, but rather changing the source of the motion controller by using the Trackers…I won’t have the triggers to use, but that’ìs not a big deal.
I’m asking this because I’m also testing the IKinema plugin, which basically does the same thing, and I switched from left and right controller to Special1 and Special2 in order to use the Trackers, and everything works as expected.

My plugin can get input from motion controller components (or any other scene components). I.e. you can simply add two motion controllers for trackers and bind them to the plugin as right hand and left hand.

Yes, it works with VR Template.

Perfect, I just wanted this confirmed, and having the driven lower body already done is a huge plus :slight_smile:

No discount on the marketplace?

No, sells are good without discount :slight_smile:
To be honest, default lower body animations is far from perfect. It’s better to use blend space.

Can you please create a function that allows us to deactivate the plugin in runtime? I couldn’t find anything in there to do that. Basically, there are situations (single player) where I only want hands to show, not body, but I have separate logic for hands-only. No need for all that IK logic running. I tried to Deactivate the component and do an IsValid on Tick, but it crashes with this error every time:


UE4Editor_Engine!USceneComponent::SetWorldLocationAndRotation() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\components\scenecomponent.cpp:1418]
UE4Editor_VRIKBodyRuntime!UVRIKSkeletalMeshTranslator::UpdateSkeleton() [d:\build\++portal+dev-marketplace+full\sync\localbuilds\plugintemp\hostproject\plugins\vrikbody\source\vrikbodyruntime\private\vrikskeletalmeshtranslator.cpp:103]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4551]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:763]
UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2198]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:985]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:887]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:985]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:887]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:985]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:887]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:985]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4551]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1345]
UE4Editor_Engine!AActor::ProcessEvent() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\actor.cpp:687]
UE4Editor_Engine!AActor::ReceiveTick()
UE4Editor_Engine!AActor::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\actor.cpp:888]
UE4Editor_Engine!AActor::TickActor() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\actor.cpp:870]
UE4Editor_Engine!FActorTickFunction::ExecuteTick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\actor.cpp:134]
UE4Editor_Engine!FTickFunctionTask::DoTask() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private	icktaskmanager.cpp:273]
UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\async	askgraphinterfaces.h:829]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async	askgraph.cpp:665]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async	askgraph.cpp:574]
UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async	askgraph.cpp:1355]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private	icktaskmanager.cpp:542]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private	icktaskmanager.cpp:1449]
UE4Editor_Engine!UWorld::RunTickGroup() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:770]
UE4Editor_Engine!UWorld::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:1429]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\editorengine.cpp:1693]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:401]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3339]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:144]
UE4Editor!WinMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:223]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]

Plugin logics can be deactivated by VRIKBody:: DeactivateInput().

I’ll add a fix for crashes in the next update. For now: use DeactivateInput(); in pawn’s Tick check VRIKBody::IsInitialized() and don’t call UpdateSkeleton() if it returns false.