VR Expansion Plugin

That looks like the broken transform issue from a visual studio 2019 version that was bad and wasn’t correctly handling transforms. I don’t think it was fixed until 4.24 / if visual studio had another update after that.

Call PerformMoveAction_SnapTurn, and pass in a delta value

or if it isn’t multiplayer, you can be safe just calling SetActorRotationVR with whatever you want.

Hey i got when i try to upload on Oculus Store:

ERROR: The package contains DLL libraries that are known to cause issues when running on the Oculus platform. These files must be removed prior to uploading:
F:\Users\Nathan\Downloads\Pétanque VR\WindowsNoEditor\Engine\Binaries\ThirdParty\OpenVR\OpenVRv1_5_17\Win64\openvr_api.dll
F:\Users\Nathan\Downloads\Pétanque VR\WindowsNoEditor\Engine\Binaries\ThirdParty\Steamworks\Steamv142\Win64\steam_api64.dll
F:\Users\Nathan\Downloads-vrexppluginexample-a6382dd206df\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Binaries\Win64\UE4Editor-OpenVRExpansionPlugin.dll
F:\Users\Nathan\Downloads-vrexppluginexample-a6382dd206df\Saved\StagedBuilds\WindowsNoEditor\Engine\Binaries\ThirdParty\OpenVR\OpenVRv1_5_17\Win64\openvr_api.dll
F:\Users\Nathan\Downloads-vrexppluginexample-a6382dd206df\Saved\StagedBuilds\WindowsNoEditor\Engine\Binaries\ThirdParty\Steamworks\Steamv142\Win64\steam_api64.dll

Can anyone help me?

You need to disable the OpenVR plugin and the steam subsystem plugin.

Oculus does not allow steam binaries in submitted games.

We are running into an issue when utilizing the Oculus Rift S. With the Oculus touch controllers there is a difference in the transforms of the motion controllers between the client and the server. The client notices no discrepancy but the server (and other clients) observes a significant delay in the transforms. is noticeable as any item that the client holds in their hand does not suffer from the delay which results in the item being offset from the hand. issue is not experienced when using the Samsung Odyssey + HMD. Although the Samsung Odyssey does suffer if even one client is using the Oculus Rift S. The Unreal Engine version is 4.22.

There is always going to be a transform delay, so that isn’t unexpected. However what IS strange is that you are saying that grips are not following 1:1 with the delayed hands, which doesn’t make any sense at all since the grips only move to track the hands on each connection.

Are you trying to use full body or arms? It may be mismanaged tick ordering on your animation graph.

Thanks, it’s work now

Hi everyone, i’m having an issue with gripping objects. I was following Raven’s videos to setup gripping, however i can’t grip any object. The have objects have grippable static mesh actor as base class, i also tried to migrate objects over from the example projects( like the potion) i can’t grip it either. The line trace breaks on the objects, from there i check the if it implements the vr grip interface. It’s true, so i get to the Grip Object by Interface function. I can’t debug it any further from BP, any help would be apprecieted, it’s driving me crazy haha :slight_smile:

If its failing on the actual grip node it should be printing to console why it failed. If its not failing on that then its likely gripped but is a physical grip and it doesn’t have valid collision or the drop distance is too small and it is automatically dropping right away.

Thank you for putting together VR plugin with multiplayer capability which resolved many problems we faced. It was working in single-player scenarios without any issue but in multiplayer we ran into a recurring issue that has been randomly causing a crash. The call stack for the crash is below along with the parameters we use for gripping as the issue appears to be caused by gripping/dropping. We are using the 4.23 plugin.


VRMULTIPLAYER.exe!UObjectBase::IsValidLowLevel(void) C++
VRMULTIPLAYER.exe!FBodyInstance::GetSimplePhysicalMaterial(struct FBodyInstance const *,struct TWeakObjectPtr<class UPrimitiveComponent,struct FWeakObjectPtr>,struct TWeakObjectPtr<class UBodySetup,struct FWeakObjectPtr>) C++
VRMULTIPLAYER.exe!ComputeMassProperties(struct FBodyInstance const *,class TArray<struct FPhysicsShapeHandle_PhysX,class TSizedDefaultAllocator<32> >,struct FTransform const &) C++
VRMULTIPLAYER.exe!<lambda_b4d83c49273524519a7aea54c54c84b3>::operator()(void) C++
VRMULTIPLAYER.exe!FPhysicsCommand_PhysX::ExecuteWrite(struct FPhysicsActorHandle_PhysX const &,class TFunctionRef<void >) C++
VRMULTIPLAYER.exe!FBodyInstance::UpdateMassProperties(void) C++
VRMULTIPLAYER.exe!<lambda_b4d83c49273524519a7aea54c54c84b3>::operator()(void) C++
VRMULTIPLAYER.exe!FPhysicsCommand_PhysX::ExecuteWrite(struct FPhysicsActorHandle_PhysX const &,class TFunctionRef<void >) C++
VRMULTIPLAYER.exe!FBodyInstance::UpdatePhysicsFilterData(void) C++
VRMULTIPLAYER.exe!FBodyInstance::PostShapeChange(void) C++
VRMULTIPLAYER.exe!<lambda_b4d83c49273524519a7aea54c54c84b3>::operator()(void) C++
VRMULTIPLAYER.exe!FPhysicsCommand_PhysX::ExecuteWrite(struct FPhysicsActorHandle_PhysX const &,class TFunctionRef<void >) C++
VRMULTIPLAYER.exe!FBodyInstance::Weld(struct FBodyInstance *,struct FTransform const &) C++
VRMULTIPLAYER.exe!FBodyInstance::SetInstanceSimulatePhysics(bool,bool) C++
VRMULTIPLAYER.exe!UGripMotionControllerComponent::SetUpPhysicsHandle(const FBPActorGripInformation & NewGrip, TArray<UVRGripScriptBase *,TSizedDefaultAllocator<32>> * GripScripts) Line 4324 C++
VRMULTIPLAYER.exe!UGripMotionControllerComponent::NotifyGrip(FBPActorGripInformation & NewGrip, bool bIsReInit) Line 2344 C++
VRMULTIPLAYER.exe!UGripMotionControllerComponent::HandleGripReplication(FBPActorGripInformation & Grip, FBPActorGripInformation * OldGripInfo) Line 344 C++
VRMULTIPLAYER.exe!UGripMotionControllerComponent::OnRep_GrippedObjects(TArray<FBPActorGripInformation,TSizedDefaultAllocator<32>> OriginalArrayState) Line 504 C++
VRMULTIPLAYER.exe!UGripMotionControllerComponent::execOnRep_GrippedObjects(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 134 C++

I’ll note that generally it would be better to be using the GripObjectByInterface node as you have more control with it on a per object basis.

Regardless, what engine version are you on? There was a crash with UpdateMassProperties that I fixed a couple of months ago, haven’t had any re-occuring reports of it since.

Finally i got it working by deleting the Intermediate and Saved folders :slight_smile: Something must have been messed up on my side.

Hi , thank you for your great work. Is the ArmIK ready for use and will be available for 4.23?

When/if it releases it won’t really be engine version based, aside from some animation node differences.

But its something that is going to take a lot of tweaking to get to where I want it to be and I am not exclusively working on it.

Nice, I think it would prove to be more valuable as a stand-alone. It’s highly desirable for me to implement ArmIK with the ultimate goal of having a responsive body. Even if it’s not where you want it, your videos show that it’s at a good stage and I would certainly pay for it now. I understand you have priorities so will wait in anticipation!

Thank for your reply,

We are using the 4.23 Engine version.

In the past couple of days, we think we managed to narrow down the cause of the issue. It seems caused due to gripped objects having welded physics bodies which can be detached and reattached (eg. Gun and Magazine). Removing the magazine and destroying it happens on the Server (Magazine and gun are replicated, actors). It seems like magazine detachment is not replicated as expected on the client. Since the client tries to update the mass properties of the gun with a gripping or dropping event and the magazine is still attached yet destroyed there is a crash. We suspect that the same issue can occur due to net culling also so we made relevant physics bodies always relevant. Is something you have encountered previously and do you have any thoughts on ?

The crash I was talking about was specifically that, I added a


if (!root->IsPendingKill())

flag above the mass properties update to work around it.

I don’t know how old your copy is but that should have resolved it, more so from the log you posted where its specifically that section that was throwing it and it shouldn’t get that far anymore on an up to date copy of 4.23 if the object is pending kill. (though I’ll note that from the log it also appears that you are gripping the object again for some reason even though you are destroying it).

If you have a reproduction on a up to date copy though I can look into resolving it.

Hi,

i’m using the oculus source version of ue4 4.24.1
when i put the plugin into the plugin folder it says it’s for 4.20.0 but i get to choose to try rebuild it and when i do the plugin shows up. Allthough after enabling it and restart the editor, it doesn’t show anything from your plugin even if i choose ”show engine content and show plugins content”.
Any idea what i can to do to make your plugin work?

best regards

Sounds like you downloaded the wrong version? Make sure you get the default / master branch copy.

Also source builds are all unique builds so the plugin has to specifically be compiled against it.

I had the same issue with the Oculus version of the engine. Copy the plugin to YourProject/Plugins folder, generate visual studio files and build your project from visual studio.