Download

VR Expansion Plugin

its so weird having something you suggest end up exactly as you image. moreso when it gets added the same day. Thanks dude.

You can have a physical “body” beyond the arms, just be aware that it will be limited in capability.

I’ve been working on this myself, and Boneworks has quite a few limitations in it’s implementation, but I generally find it convincing enough that you wouldn’t need to compensate for those limitations unless it was something specific you wanted.

Boneworks’ collision capsules are less expansive than you think. There’s the chest, feet, hands and head, but the arms and legs aren’t completely connected by collision - they extend partially beyond the ankles and wrists, but nothing up until the shoulders and pelvis. You can verify this in-game, just take an item and try to shove it through various parts of your body. You can’t even receive damage on these locations, go ahead and shoot right at your bicep. This allows the body to have collision without that collision also impacting the collision and IK of the feet and hands.

The feet are also almost completely simulated. The only animations they have in place are cardinal directions and turn-in-place, no transitions for crouching or jumping, just manipulation of the pelvis as far as I can tell.

As far as an actual implementation, you can look at how ALV4 is doing foot IK (https://www.unrealengine.com/marketp…tion-system-v1), and the simplest version of the hands is just a FABRIK node that affects the hands from the clavicle to the location of the motion controllers (potentially with an offset.) This can lead to some weirdness, however, and Boneworks has a more sophisticated solve for their IK to approximate an actual persons’ hand motions (for instance, flaring of elbows when hands are parallel to floor.) You’ll also see a lot of “snapping” if you don’t lerp, and there’s a chance your arms are longer than the models, which will result in your hands coming totally detached. You’ll also look pretty dumb in third person - take the third-person view in Pavlov, for example, where your arms clip into your body and generally don’t look very real.

If you’re looking for an example on a better hand IK solve, then you’re in a club with many members. There’s a paid package on the marketplace, but I’m not sure how good it actually is without being able to try and break it. Mordentral has a promising-looking implementation he showed off on his Youtube, but that’s a “when it’s ready” kind of thing, and I know he’s been busy with other work.

If the body IK isn’t blocking progress on your project right now, and you don’t feel like tackling it yourself, then I’d suggest perhaps working on other aspects until Mordentral can save us from ourselves.

Looks like I’m outta luck. The editor crashes as soon as I lower the engine scalability settings. If I go one by one, I can set everything to low except Effects, which crashes the editor if I try to go below High. Let me see what this is like, in any case…

[USER=“3764716”]Benjamin Paine[/USER] You can not use IK and Physic at the same time, it will look so weird. And 1 more thing, i suggest using CCDIK over Fabrik for arm IK. Ue4 only implement joint rotation limit in CCDIK.

That is not true, you can use the PhysicalAnimationComponent to drive simulated bones to try and match the final animation pose. The component is just very simplistic currently is the main issue.
I built the welded bone driver on top of it so that I could go in and extend it eventually.

Also CCDIK is a spherical joint limit, so its quality is still fairly low for good VR IK.

No, you can not. I had issue using it in my game. Normally, it worked well, but when the lowerarm collide with world object, the hand bone still go out to reach the final position. I did setup the constraint of the lowerarm to hand with lock position, but it not worked. About CCDIK, i did not tell anything about perfect solution there! And it not LOW there. I can tell that you did not test it. Combine it with the right pose, and the anim IK will looked good.

BTW, we are developing a physic system that player can interact with everything in VR. We begin with climbing system https://www.youtube.com/watch?v=aCPEbTZ6Oio&feature=youtu.be
This is not something like addWorldOffset, fully physic base climb. Also, player hand can push, pull the body.

Then you set your physical animation component up as world based and not local space. I have multiple users using it just fine, even though it is simplistic, the basic concept works, its just driving bones with constraints on kinematic actors.

Local or not, the position of the controller is the same as the calculation. But i found 1 thing that is very interesting. I think it the bug of animation layer! After i copy paste all the node to anim graph, it work just fine lol, and i still using world space!

Not sure which version of the VREP you’re trying to use, but I do see you have unreal engine 4.14 in use. In 4.24, SteamVR had their plugin updated to no longer require an external marketplace plugin for SteamVR input (see https://www.unrealengine.com/marketp…put-for-unreal). If you’re using the latest VREP, I’m relatively certain this has been changed to use that.

Talking about how it handles the constraints, setting it to world based it constrains the bones to the world location, which means each acts independently somewhat. If you set it to parent/relative then the constraints follow their parent orientations instead and it works better.

By that, do you mean that you would only use the active swinging controller if only one ControllerMovement axis button is being pressed? I’m working on bringing the ArmSwinger locomotion into a different project, and I noticed that Get DPad Movement Facing is always using both controllers’ directions.

its only using both if both are set to that movement mode from what I remember.

Right, but the one game I’m aware of that uses ArmSwinger in a similar way ignores the other controller’s direction unless its ControllerMovement button is also being held. Ostensibly because the other controller is being used to hold a weapon.

In any case, I was just curious if that’s what you meant, since I’m messing with it right now.

@mordentral Can i use your code in the VR physic constraint component? ah, i suggest you should expose more function like setup the linear stiffness and damping of the linear soft constraint and the angular soft constraint, its pretty useless to use the hard constraint in real project! Anyway, thank you for your suggestion above.

Its just an expanded normal constraint, I don’t use it for gripping because I use a hand coded setup instead. You can already alter all of that on normal constraint components by reinitializing.

Hi all,
i am just starting with the VR expansion plugin and thus do not rly know my way around yet. So excuse me if my questions seem obvious. I am currently struggeling with how to set up hand poses for grabbed objects. So broadly my question is, how would i go about setting up hand poses for certain objects, e.g. the rifle while using index controllers? I like how the fingers automatically snap around an object like e.g. the grabbable cubes in the example scene. However i would like to set up predefined hand poses for weapons, so that the fingers correctly wrap around gun handle or the bolt of a bolt action rifle for example. So basically i would like to know the following:

  1. Is there some place in some BP where i would store predefined hand poses and how would i create the poses in the first place? Can the latter be done in the editor or do i need to do it an external software like Blender?
  2. How would i assign those poses to the objects (e.g. gun) which shall use those poses?
  3. How would i trigger setting those poses active?

Is there already some kind of tutorial (e.g. one of your Youtube vids) on this or other documentation covering this? I looked through the Wiki but couldn’t find anything. I would really appreciate some hints on where to look in the components / BPs / objects and how the overall flow of for hand posing should look like.

So cheers for any feedback!

Great work on what your doing here!

I’m working on a project with this plugin but I have a question. The template with the Steam VR Controller and Vive Pawn does it work with Oculus VR and the Touch Controllers? I’m currently trying to port over the template to the Oculus Quest.

(Edit: fixed this just had to turn off mobile HDR) Also after quite a few attempts to make the project mobile compatible. The quality isn’t changing. I’ve changed it to mobile and scalable 3D/2D but still hasn’t changed,

Yeah the name of the pawn is legacy from when I only had a vive and was planning on seperate pawns to handle different headsets. The architecture evolved past ever needing to do that but the name stuck around.

So i feel like i followed the instructions exactly and i see 2 vr plugins in my plugins list but i have no content from them is there something im missing ?

Hi, this is a nice plugin, thanks for that.

I have a problem with gripping objects.
I tried the example project and there gripping is working.

Then migrated the map to my own project and here, gripping the cubes does not work. The “InputAction PrimaryGrip” gets called by pressing the right button but the object don’t gets gripped. But the hand goes in state canGrip if I go near a gripable actor.
Do I have to note something if I want to use it in multiplayer?
The problem also consists if i just start the MotionControllerMap in VR Preview, so I am think I am not in multiplayer mode.

edit
What I also have to say, everything else seems to work as expected. I can teleport and move. Also in Multiplayer

edit2
Ok I have seen, that DefaultGameplayTags was not in my own projekt so I migrated it and set it in the project settings.
I also inserted the AdvancedSession Plugin that is used by VRGameInstance and VRViewportClass. I also set this two in the project settings but it does not fix the problem

edit3
what i found out. the Should Grip should be true here, but it is false.

edit4
Ok, finally after some debug I get it. It’s not enough to just import the gameplay tags asset. also there have to be set the right gametags on some functions.