Moved Grip type enum comments into the enum area so they show on hover
Added bIgnoreRotationFromParent to parent relative attachment, when true the
parent relative attachment no longer follows the parents rotation, only its position.
(SpaceHarry was using for body meshes where he was IKing the rotation himself
in the animation graph.
(thanks to SpaceHarry for the original pull request that added both of these)
Overrode IsWithinEdgeTolerance and added VREdgeRejectDistance to the VRMovementComponent.
allows for stepping up easier without very slow movements getting in the way
and causing wall sliding. Default engine value is 0.15f, new default plugin value
is 0.01f (rounded min for HMD movement in network). If you encounter issues you may
want to raise it.
Changing bIgnoreHandRotation to reconstruct and resolve the controller
instead of requiring it be modified prior to passing to the server.
Changed GetControllerRelativeTransform to no longer take an input object for
checking bIgnoreHandRotation, it is no longer needed. Kept the node around anyway
because the default in engine nodes variables are named silly and confusing.
Okay, I have been looking at the gun and the sockets and such. Is there a way to make much simpler? I really am thinking nothing more than a picked up object orients itself into your hand a specific way. Or that it removes the VR hand and becomes your hand in the right position. I can see how to add sockets to Actors, but I cannot see where to set that socket to the VR Hand controller. Any chance you could share a small blueprint example of a very basic setup?
The template character that you are using does it automatically, it searches for sockets within a gripping range when you go to grip and if any match the prefix (default: VRGripP) it will snap to the closest one.
Setting the PrimarySlotRange in a grippable component/actor to the size of the mesh ensures that it will always use a socket.
You LITERALLY just have to add a socket that starts with VRGripP to a mesh that is grippable and it does it for you.
The reason the gun has multiple sockets is because it supports dual hand gripping and alternative orientation for touch controllers, you don’t need to worry about any of that right now.
I just tried . I attached a socket with the name “VRGripP” to a pick up cube (the mesh part) but it does not snap to the socket. It still just grabs to any point on the mesh.
I also added the GrippableBox component inside of the Blueprint Editor and sized it to the size of the Mesh. I am able to pick up the mesh, but it does not lock to the socket.
Do it with a grippable static mesh component or actor instead using the mesh you are trying to use. The pick up cube actors in the template are only there to show how to manually implement the interface and they don’t do everything.
GrippableStaticMeshActors and GrippableStaticMeshComponents are full pre-fab classes.
I just don’t understand what I am doing wrong. I have created a GrippableStaticMeshActor -> and assigned the Mesh which has a socket named VRGripP on it
I have even tried turning that into a Blueprint Class to no avail.
I do not see a way to create a Socket for the GrippableStaticMeshActor by itself. I am assuming I wouldn’t anyways. I am assuming the socket belongs to the actual mesh (the graphical one).
#1: Change it to VRGripP1 - the VRGripP is a prefix, you can add numbers after it so that you can have multiple.
https://i.imgur.com/ZxVt7Jn.png
#2: You downscaled that model to 1/10th of its normal scale, since it is so large by default you likely aren’t hitting the range for its sockets (socket search range is in local space). There are two solutions for that.
Set highlighted value to a large enough number to cover the full size of your model (at least)
https://i.imgur.com/zjZKIgU.png
Or Override function and always return the transform you want or the transform of the socket that you want.
https://i.imgur.com/g9izS2h.png
The latter method can bypass the socket requirement entirely and you just supply a transform that you choose and return True for found one.
Spot on as usual! Thank you, works like a charm. I just resized a few of my meshes in the mesh editor and assigned the VRGripP1 like you mentioned and rotated my mesh… I then created a GrippableActor and assigned it. Perfect, perfect, perfect.
Thank you once again for helping me make game even better!
Anyone know why I might be getting ? Apologies in advance if doesn’t belong here.
OpenVRExpansionFunctionLibraryLog: Warning: Couldn’t Get Tracked Devices!!
There are some other, perhaps benign errors at the beginning of the error log:
LogWindows: Failed to load ‘aqProf.dll’ (GetLastError=126)
LogWindows: File ‘aqProf.dll’ does not exist
LogWindows: Failed to load ‘VtuneApi.dll’ (GetLastError=126)
LogWindows: File ‘VtuneApi.dll’ does not exist
LogWindows: Failed to load ‘VtuneApi32e.dll’ (GetLastError=126)
LogWindows: File ‘VtuneApi32e.dll’ does not exist
Last week I ran into an issue where my HMD’s bounding box was busted somehow, but it seemed I was able to fix it by doing the SteamVR Room Setup (Standing); thanks to 's tip.
Now, though, unlike last time where the player’s height was correct, fsr my character’s got no legs - it’s as if I’m spawning with the center of the root collision capsule at 0. And it crashes almost 100% of the time within a minute or so of play. I think issue reared its head after I added a whole bunch of lights to an indoor scene, the engine crashed and then I accidentally launched another, separate instance of the project after having chosen send and restart.
Vive sensor locations/rotations haven’t changed, and afaicr I didn’t mess with the player since it was last working. Tried running the steamvr calibration setup in room scale and standing (2 times each) with and without unreal launcher running in the background (never with a project open) yesterday using 4.18, and today using 4.18.1. But the problem persists.
All of my VR projects are having issue, so maybe it’s not related to the plugin? Maybe a Steam VR/UE4 issue? I tried killing UE4, uninstalling Steam VR, restarting the PC and reinstalling Steam VR (verifying the cache) and running the calibration, but that didn’t change anything either. (Also tried nuking the DerivedDataCache engine folder jffs.)
As far as stopping teleport? Don’t really know how you expect to do that since it is instant? Do you mean cancel out of the teleport after the beam and end point are shown? That is up to you how you would want to do it, maybe switch teleport to be HOLD BUTTON + TRIGGER to actually teleport.
Yeah that isn’t plugin related, try running a VR game outside of UE4 like in Steam and see if your calibration is still wrong. Sounds like your HMD isn’t actually providing a valid location from OpenVR.
I’m using your last Virtual Reality BP Game Template to try that.
when the pawn is overlapping I just want to disable the Teleport.
I’m not able to do that with the Get player Pawn.
The teleport system is just as copy of Epics (so people can understand it who are coming from the base template), which is run through blueprint and spawned in the character, VRBaseCharacter is a c++ base class and doesn’t have the teleport logic.
You can cast to the BlueprintCharacter instead and call SetTeleporterActive to false.
https://i.imgur.com/jngfuir.png
However that won’t entirely prevent teleporting being started, for that you would also want to add a boolean or something to the character like “bIsAllowedToTeleport” and tie it in to boolean check.
I don’t know if it’s just me, but it seems like when I adjust the size of the “body” in the Vive_PawnCharacter to reduce the area of pushback, it does not seem to change in game. Is there a setting someplace that re-initializes it on BeginPlay?
The “Body” is just the waist indicator…You want to resize the player capsule. Also the capsule has an offset variable that lets you push it back farther (like a neck offset). its default is only 8, 15 - 20 feels more natural but will clip slightly into walls unless you set the cameras clip plane closer.
You can set the root capsule to Hidden=false in its variables if you want to get a feel for where it is when tweaking.