VR Expansion Plugin

I’m pretty sure I replied to your previous message, the physics lever is incapable of supporting the full feature set of the current lever so I removed support for it. (I did forget to remove the boolean to turn it on, i’ll do that week).

If you want a simple physics lever just constrain a grippable static mesh component to something and sample the constraint angle. Which is also part of why I didn’t feel it was required to try and bake the physicality into the logical lever anymore.

The new chaos vehicles required some tweaks and I might have to alter how the lever sends in the data for reverse.

I thought it was already fixed (it is for the FPS testing) but I will double check, don’t know if you are on an older build or not.

The start button doesn’t really have a use for these cars as I am not changing gears.

Edit, actually I did miss a difference with the chaos vehicles on the VR side, I just uploaded a correction that fixes it.

Ah well… that would explain it :slight_smile:

Anyway… The reason I’m looking for , is that regular physics constraints are tricky to work with when you want to make things modular (like in your door example, you need a Child Actor setup). But it can be done, for sure. And it’s somehow on the edge of VR scope so I can see why you’d want to remove it.

I didn’t see your reply… But thank you for one!

Yeah for things like levers its just so simple to handle that its kind of best left up to the end user, the plugin handles all of the gripping for that and the constraint handles all of the limits.

The door is a child actor for only one reason, only root components replicate position correctly with physics and I didn’t want it to be two actors (the frame and then the door). Technically it could probably have been hacked together by using a scene comp to seperate the frame from the door and have the frame be a child component in the doors actor.

However I did make that thing a long time ago, its on my TODO to go back over the setup with chaos out now.

It works now, thank you!

Where can I find full documentation of every component and feature of the plugin? In the website there is some documentation but there are some things that are missing.

The generated node documentation, but yes some things are missing.

Hello!
Can awesome VR plugin be used with another General Movement Component plugin?

Yes and no

No in that most movement plugins can’t handle VR correctly and the amount of overrides used to make the character VR Compliant would likely conflict.

Yes in that you don’t have to use the plugins VR character to use all of the other features of the plugin

I’m having a problem where i can’t create a Grippable Skeletal Mesh Actor for my Grasping Hand. When trying to compile an empty Blueprint of class i get an error of “contains invalid data”.

I tried migrating the grasping hand of the example demo. It compiles and works in the preview but crashes the editor with a fatal error every time the preview is closed.

I’m using Unreal engine 5.1.1 and every other class of the plugin seems to work flawlessly. Does anyone have a clue of what the problem could be?

Try making it in a different directory, if that works then try fixing up redirectors in that directory since you migrated it.

Help, I can’t figure out two things:

  1. When I have installed physical hands, and when the turn is set not smooth, and with an angle of 45 degrees (the angle is not important, it is important that not smooth turn) then after several turns in a row, after about a minute at each turn begins to submit FPS for a fraction of a second. When I turn off the physical arms, everything is working fine! how to fix it?
  2. How in plugin to set up passing in sitting mode?
    Im used UE 4.27.2
    Thanks in advance for your help!!!

The FPS drop is an engine bug in 4.27 from them porting to chaos, its writing the physics bodies over and over to the scene every time the hands unsimulate (to teleport). You have to Recreate the physics state to get around it. That or mark the teleport action to not flag the character to teleport for now.

I had to patch that in to the grips themselves in 4.27 due to that bug

  1. Not sure what you mean passing?

Know why my VR camera doesn’t move with the pawn in UE5? I tried 5.0 and 5.2 but when I move the character they disconnect from the VR camera and keep moving. Teleport works but not dpad movement.

You aren’t possessing the character?

, can you tell me how
Does the plugin have a movement prediction and correction system? how is the fight against motion sickness when the client is thrown back when the position of the character is out of sync with the server? movement is authoritative on the server? algorithms for predicting, dropping the client back differ from the standard component of the movement?

Hi,
first of all, thank you for your amazing VR Plugin!

Right now, I have set up a Multiplayer VR project, where the players can enter their name and choose an avatar. For the avatars I use https://readyplayer.me/. The players can load their name (set text->Target Render Component in your VR-Pawn) and their avatar (load new avatar->Target ReadyPlayerMeComponent in your VR-Pawn) at runtime. For explanation, it is an educational setup, where 4 students share one PC. So, the students alternate during the session and is the reason why they can change their names and avatars without having to reconnect. The whole necessary code is in the VR-Pawn: Change Name + Avatar → Event on Server (Reliable) → Multicast (Reliable). Most of the time, everything works as expected (you can set name and load avatar for like 15 times - sometimes only 4 times), but it is also possible, that the application crashes. Right now, I have tracked down it crashes during the Multicast call on the client side.
leads me to my problem and the reason for post. When the application crashes, I get error:

Pure virtual function being called while application was running (GIsRunning == 1).

Furthermore, my log files lead me to the VRCharacterMovementComponent.cpp in Line 603. So, can you maybe explain a little bit what part does?

// Validate move only after old and first dual portion, after all moves are completed.
	if (MoveData.NetworkMoveType == FCharacterNetworkMoveData::ENetworkMoveType::NewMove)
	{
		ServerMoveHandleClientErrorVR(ClientTimeStamp, DeltaTime, ClientAccel, MoveData.Location, ClientControlRotation.Yaw, MoveData.MovementBase, MoveData.MovementBaseBoneName, MoveData.MovementMode);
		//ServerMoveHandleClientError(ClientTimeStamp, DeltaTime, ClientAccel, MoveData.Location, MoveData.MovementBase, MoveData.MovementBaseBoneName, MoveData.MovementMode);
	}

My logs also guide me to :

Script Stack (1 frames):
Character.ServerMovePacked

Which is found also in VRCharacterMovementComponent.cpp in line 1320.

// Send move to server if  character is replicating movement
		if (bSendServerMove)
		{
			SCOPE_CYCLE_COUNTER(STAT_CharacterMovementCallServerMove);
			if (ShouldUsePackedMovementRPCs())
			{
				CallServerMovePacked(NewMove, ClientData->PendingMove.Get(), OldMove.Get());
			}
			/*else
			{
				CallServerMove(NewMove, OldMove.Get());
			}*/
		}

In conclusion, my project is crashing during the Multicast on the client side. The problem remains, if I exclude the avatar loading, so no ReadyPlayerMe stuff, just simple SetText.

Maybe you can help me out with problem or just to prevent the crash? Thank you for your help.

And here is one picture to show the setup. Server has name Server and their avatar. Client 1 has name 11 and avatar 1. Client 2 hast name 22 and avatar 2. Client 3 has name 32 and their avatar 2. Client 4 has name 44 and their avatar.

It checks the position of the client vs the servers version and rolls them back if it is too far apart. However there is no pure virtual function in there and if that was the real problem it would happen regardless of you sending out multicasts, which makes me wonder if you have a buffer overflow issue going on with your multicast and its corrupting the packed movement packet.

What engine version are you on?

Also as a side note, that shouldn’t be multicast back to everyone, you should be setting a RepNotify variable for the players name and letting natural replication handle it.

Edit You can PM me the log file as well if you want, though im pretty sure the actual issue is outside of the plugin, the log file would give more context.

Okay I see, like the name implies. I´m using UE 4.27.2

We tried to break it down with breakpoints in Unreal and Yes, it looks like we are getting an buffer overflow caused by our multicast. Thanks for your hint with RepNotify.

Right now I have to wrap my head around the logic. For the name itself it makes sense to me, but for the Avatar not. Because the Avatar will be downloaded at runetime via glTF (once, after that it is stored in the cache). But maybe it’s still the same logic :slight_smile:

So, I guess I have to put the following logic in a RepNotify.

You can rep notify the short code as well yes, and OnRep of it load it.