VR Expansion Plugin

Awesome! Is that code up on GitHub yet? I don’t see any commits since the 24th. Just tried downloading the zip to and tried again to be sure and got the same results.

There were no code changes? It wasn’t a plugin issue, it was an engine issue that things wouldn’t compile in the engine plugins directory?

Also it was resolved for me obviously as I couldn’t actually rocket build one of my plugins before the patch since it references another.

Hello mate! Am trying to get a Physics Constraint Lever working with “Generate Wake Events”. Every wake/sleep event triggers perfectly when interacting with Grasping Physics Hands, the issue comes from the moment i make a Grip on the object. After that wake/sleep events won’t trigger. On non-physics hands there’s no issue. Do you have any idea? Thank you!

Edit : tried it on the template cabinet to be sure that i havent done any mistake :slight_smile:

Tried to find the issue, which it seems to be weld simulated bodies on the attached component. But this solution creates miriads of other issues :frowning:

Welding attaches the simulated body to the other one, if its preventing sleeping for some reason that would be an engine bug.

Regardless, i’m not entirely sure why you are trying to use sleep / wake events to control a physical lever when you have grip events for handling / ticking across the grip time anyway.
If you need the events post grip then I could see that, but sleeping should function fine post grip. Also you may have your sleep threshold set incorrectly.

Hey mordentral , thank you for quickly responding! Actually i need post grip only to Enable Tick on actor so i can perform Constrain Angular Values for Swing on different Lever States(rotations). Because am trying to have etc. Weight meshes to be put on a lever by physics to manipulate other actions. I could just leave Tick Enabled all the time, but that would really hurt performance if applied to all actors… so i guessed Wake Events as a more straightforward way to check if Tick is needs to be Enabled :slight_smile:

I have spent many hours and the now i ve found the issue. This is a “hacky fix” , as i tried it on right grasping hand and it seemed to work, although am getting warnings on output log… Can you assist?

Thank you!​​​​​​​

If it is not throwing the sleep and wake events even after the grip is off of the object than there is something wrong with the engine itself, the hand will have de-welded by then and there isn’t anything plugin side influencing it.

Well the setup i tried was only changing the Collision of the hand before making the grip, the “weld stuff” was on prior tests. It seems i simply could implement some other way to check with Waked Rigid bodies, before i break it completely. Thank you for your time mate!!! :slight_smile:


First of all this is amazing!, been having a look at your plugin for the past couple of days trying to understand everything and it looks like it could fit all my needs!

However, I’ve been trying to do a bow using the example project and the grippable skeletal mesh and I’m running into an issue! hopefully somebody here can point me in the right direction :). For reference, what I’m doing is very similar to this GitHub - Pinworm45/SyntyBowVR: VR Template with interactive Bow using the Polygon Bow from Synty Studios. UE4 4.21 just trying to build it using your grip skeletal mesh class.
My bow can be gripped with both hands, the secondary hand will attach to a secondary socket and then on tick I’m using the relative location of my motion controller to blend between two animations (moving the bone and the secondary socket my controller is attached to). Everything works except for the fact that my hand (both my mesh and the overlap collision althouh my motion controller seem to be where my real hand is) get stuck in the initial location of the grip and never update.

Ideally I just want my hand mesh to stick with my motion controller, I’ve been messing around with the settings but haven’t found a way to do it. Also been debugging the code but can’t really find the place where you update the secondary attachments, since as far as I can tell get stored in GripInfo->Secondary … but the HandleGripArray function that gets called every tick only seem to update the main one?

I’ve also tried to just override my way through in BP directly, like trying to set the location of those components on tick and stuff like that but not much luck. For reference these are my settings:

Finally, worth mentioning that I’m testing this on a single player environment. Networking will come later :slight_smile:

Thank you again!

Bada$$ plugin mate!! This really helped out immensely for a beginner. I look forward to diving deeper and seeing what scenes i can create this.

I could use some help on these last two things i have for completing my archviz of my childhood family home. I knew 0 going in and i’m amazed at how powerful this engine and plugins are.

I’m using the Door w/ the Doorkey blueprint - how could i set the blueprint to “Locked” as the default state?
Also I have a clamshell container that i was hoping to be able to open, is there a recommendation on a BP i can reuse to accomplish this?


“Secondary Attachments” are a modifier to a grip, they add a reference point that the grip attempts to also keep oriented towards, they are not a full grip in themselves. You can use tick on the bow or the character, or a timer, to update the hand meshes relative position on the string as I assume that is what that tutorial is doing.

Or you can snap to a bone socket on the string and it will auto follow that.

The only grip mode that specifically has its own tick is “Custom_Grip” as that throws one after the controller moves so that you don’t have to play around with trying to sync timing.

You can SetLeverAngle on the deadbolt on begin play based on the doors current locked state so it will auto setup the lock setup, it should handle itself then.

For a container you can either use a lever as the top and hinge it at the back, or use a physics constraint and just handle it physically by having the lid be a grippable component and using a manipulation grip type.

@mordentral thank you! I’ll definitely get that done.

This has been an amazing experience learning throughout the process. I’m fairly certain that without your plugin this would’ve taken me another 3-4 months to complete.

This project will end up being a gift to my family, siblings, and something we’ll be able to keep and share with our littles.

Thanks for the response :slight_smile:

I managed to get it working by extending the system slightly. Although this solution isn’t ideal as it doesn’t use the entire functionality your plugin provides it does fit it’s purpose so I thought I’d share it here for everybody that needs it! :).

I use the plugin functionality to grab the object normally, but then my actor has a ptr to the gripped object, and when I pulse the trigger key on my secondary hand I check if the secondary socket is in range and if so I manually call Trigger logic or whatever I wanna do with it, without relaying on the plugin to do the work for me. This way I manage to bypass the logic and I successfully trigger the use functionality with my secondary hand.

Ideally, a proper implementation would just rely on the use of gameplay tags to determine if the secondary hand is the one using the object or not but I didn’t have the time to dig deep enough to be able to make those changes. This solution was hacky but simple enough to introduce, hopefully it helps somebody!

happy coding everyone :slight_smile:

Thanks for the plugin it’s been a great help
I was wondering if there’s a way to allow rotation of a hand relative to a grip?
For example:
I have a lever switch and I want the hand rotation to not be locked to the switch rotation but be able to rotate along one axis
If this isn’t included functionality whereabouts should I add this?

Also I was thinking about having fingers snap on to buttons, where I would rotate the index finger so that
if you’re near a small button it would snap on. It’s implemented in The Lab and I thought it was pretty useful. If I wanted to implemented that where should I do that?

is anyone else having problems with creating a grippable skeletal mesh actor? If i create a BP using a grippable skeletal mesh actor an try to compile the created BP (no changes made to it whatsoever) i get a compilation error right away, saying that the BP is not valid. This happens with the newest template project taken from GitHub - mordentral/VRExpPluginExample: VRE Example Template as well as a version some weeks older. Building the solution after DL the Git project worked fine, also creating e.g. grippable static mesh actors works without problems.
Cheers for any input on that!

You can implement the hand rotation in the animation blue print or as physical constraints or generalized logic, and yes, you are correct, the grasping hand is an example of core features, its intended to be expanded on or referenced, not used as is without changes.

You would want to add a data layer on top of the hand to handle custom posing and limits. Its not really a plugin related concept, I try to keep the plugin to core features and leave the gameplay elements free form for the end users to not limit them any, the template content is examples of how to use the core plugin features (in the grasping hands case, the welded body driver and decomposing grip transforms to attach correctly).

As for the finger auto targeting a button, CCDIK should work fine for that (or another IK setup though CCDIK is fast and has rotation limits) and already has examples for FPS pawns, you would just want to range limit to to a zone from the fingers base pose forward vector and only ik chain the finger itself instead of an arm.

It does it for a normal SkeletalMeshActor as well, not just a grippable. It will let you compile it if you assign a physics asset to the skeletal mesh.

I don’t remember ever running into this before so I assume it is a 4.25 quirk.

hi. mordentral.

The enemy character mesh is making a grip system.
I am trying to use a grippable skeletal mesh component, but if the setting value is similar to other grippable objects, only a simple ragdoll is executed and handling is not.
Do I need to refactor this part?

hi. mordentral.

The enemy character mesh is making a grip system.
I am trying to use a grippable skeletal mesh component, but if the setting value is similar to other grippable objects, only a simple ragdoll is executed and handling is not.
Do I need to refactor this part?

You need to use the PerBoneGripping setting, you can also enable the advanced option of not setting physics enabled so that you can choose which bone chains get simulated OnGrip.

Per bone gripping takes in the bones transform instead of the actual components and the name of the bone to target. In the template it is just turning on the gameplay tag, in custom solutions you’ll need to pass that in manually.