VR Expansion Plugin

(I would delete my previous post, but it’s awaiting approval…)

I realized I got the wrong template, so I got the right one time, but I can’t build the project files. It gives me the error

“2>LogFileManager : error : MoveFile was unable to move ‘C:/Users/Destroyer/Downloads/-vrexppluginexample-f62d5b04063c/-vrexppluginexample-f62d5b04063c/Plugins/VRExpansionPlugin/VRExpansionPlugin/Intermediate/Build/Win64/UE4Editor/Inc/VRExpansionPlugin/VRBaseCharacterMovementComponent.gen.cpp.tmp’ to ‘C:/Users/Destroyer/Downloads/-vrexppluginexample-f62d5b04063c/-vrexppluginexample-f62d5b04063c/Plugins/VRExpansionPlugin/VRExpansionPlugin/Intermediate/Build/Win64/UE4Editor/Inc/VRExpansionPlugin/VRBaseCharacterMovementComponent.gen.cpp’, retrying in .5s…”

And it always fails. I tried giving it admin permissions, still failed.

I have checked out the info reaching that node and everything is coming correctly; the target (GripMotionController component) the actor to grip (Static mesh) and the world offset. I noticed that only happens with “Interactive Hybrid Collisions with Sweep”, is there anything special about mode that might make actors disappear?

If an actor collides with something with that grip then it will stop on it, but otherwise, no.

ok so i figured out that the character code in the template is overflowing with technical codes. if i where trying to did out the example codes for arm-swinger and climbing locamotion. mainly armswingger that i cant find. what parts should i be looking in. i think i can figure it out from there but i just cant find it in all code.

Thanks a lot for the help (and sorry for the late reply!). For now I think I’ll try to make it completely server authorative and just interpolate the position in the client, and see what happens from there.

The warnings will say what is wrong, there aren’t that many nodes that changed since 4.17 so it should be a fairly simple fix if you look at the migration guide.

Epic deprecated a few nodes too but those warnings are going to tell you what is missing.

You can post the log to me privately if you want and I should be able to glance through it quickly.

No no. The code works great. Im using 4.19 that updated from the snapshot releases. Everything is working.

Im just trying to find the code that i need to pick through and learn. I cant figure out what section of codes pretains to arm swinger. Or is there a post somewhere that explains some of the example codes for the template scene

Armswing is literally just handled in the main event graph, its a movement input off of GetRelativeVelocityForLocomotion. Uses the results of CalculateRelativeVelocities for the input velocity.

L/R Hand D Pad Press Based Movement Comment grouping contains it.

The running in place locomotion has a function dedicated to it because it merges multiple velocities and has a low/high ramp.

Cool So thats why i couldnt find it I was looking all through the running in place and i though it was mixxed with that, and nothing elsehad the label. Thats super helpful.

Im thinking a free running style control set where armswing is sprint. And the offhand dpad is a slow walk. mostly because its really hard to armswing and aim a gun, but realistically you only swing your arms when you run.

Hey , I’ve been working on integrating hand models into the template. I realized that the bulk of animation control takes place in the “Check and Handle Grip Actions” function in the Pawn, what I’m trying to figure out, is where the best place to hook into having an animation play anytime the user pulls the trigger. Currently the template only plays an animation (or attempt) when it’s near an intractable object, I’m just not sure where I should hook in at.

Secondly, I’ve been looking at the recently released “Hand Presence” demo that popped up on the forums. All of it’s grab-able object derive themselves from an actor component, which has a reference slot for calling a specific hand Animation Sequence. It doesn’t look like your plugin has a similar setup. What would be the best place to implement such a feature. I assume it should be added to the VRGrip Interface, but I haven’t figured out how to make such an edit yet.

Thanks again!

No, the grip interface is not a correct place to put it (not that you can edit it in BP anyway). It can be significantly more complex than just a single animation return (supporting per finger placements and the like), also the grip interface is attached to the held object, the data input is in the wrong direction for controlling the holding animation directly as things happen (it would be a single static animation or you would have to keep checking on it).

I would rather leave animation decisions up to the end user since there is a lot of creative freedom there and options. The only reason I copied over epics hand animations is because I was already transferring over their teleport system, I normally wouldn’t have added anything as I prefer for such things to be gameplay driven and the addition of extra data to control it is very simple.

Also obviously since I do not have freely available animations and hands for the template to use and it is originally intended as implementation examples for the plugin, not an all in one template.

You’ll have to consider how you want to mix controller driven animations and held object driven animations, can be as simple as calling a function on the owning controller to notify that you want a new animation (IE: OnGrip.HoldingController.SetHandAnimation(MyAnimation), to binding a dynamic event to throw new states back to the holding hand to mix into the animation graph.

Basically any generic system I incorporated for it into the plugin wouldn’t cover enough cases for me to feel it worth the addition.

Edit I’ll mention, if enough people pooled thoughts on just what would end up in a comprehensive animation feedback loop I would be willing to implement one.

We are having crash running in the VR Preview. Crash report doesn’t mention anything but after looking at the log file, is something related to GripMotionCOntrollerCompoment. Here is Log details:

[2018.03.23-21.15.41:526] 11]LogWindows: Error: Error reentered: Assertion failed: [File:D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp] [Line: 819]
Rendering thread exception:
Assertion failed: !IsUnreachable() [File:D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\ScriptCore.cpp] [Line: 1189]
GripMotionControllerComponent /Game/Maps/UEDPIE_0_MASTER.MASTER:PersistentLevel.Vive_PawnCharacter_C_0.Right Grip Motion Controller Function: ‘/Script/HeadMountedDisplay.MotionControllerComponent:OnMotionControllerUpdated’

0x00000000496A3FB8 KERNELBASE.dll!UnknownFunction ]
0x0000000005C57884 UE4Editor-ApplicationCore.dll!UnknownFunction ]
0x00000000DE1C6D9B UE4Editor-Core.dll!UnknownFunction ]
0x00000000DE101939 UE4Editor-Core.dll!UnknownFunction ]
0x00000000DDC08B08 UE4Editor-CoreUObject.dll!UnknownFunction ]
0x00000000BA8D34B2 UE4Editor-VRExpansionPlugin.dll!UGripMotionControllerComponent::GripPollControllerState() [d:\parth\unreal estprojects\vrfour19test\plugins\vrexpansionplugin\vrexpansionplugin\source\vrexpansionplugin\private\gripmotioncontrollercomponent.cpp:3700]
0x00000000BA8F56FC UE4Editor-VRExpansionPlugin.dll!UGripMotionControllerComponent::FGripViewExtension::PreRenderViewFamily_RenderThread() [d:\parth\unreal estprojects\vrfour19test\plugins\vrexpansionplugin\vrexpansionplugin\source\vrexpansionplugin\private\gripmotioncontrollercomponent.cpp:3749]
0x00000000D4AD6E88 UE4Editor-Renderer.dll!UnknownFunction ]
0x00000000D4AAA194 UE4Editor-Renderer.dll!UnknownFunction ]
0x00000000DDFDB723 UE4Editor-Core.dll!UnknownFunction ]
0x00000000DDFDBD4A UE4Editor-Core.dll!UnknownFunction ]
0x00000000085B3CC9 UE4Editor-RenderCore.dll!UnknownFunction ]
0x00000000085B4CF6 UE4Editor-RenderCore.dll!UnknownFunction ]
0x00000000DE3AA36C UE4Editor-Core.dll!UnknownFunction ]
0x00000000DE39F0D3 UE4Editor-Core.dll!UnknownFunction ]
0x0000000049911FE4 KERNEL32.DLL!UnknownFunction ]
0x0000000049BDEF91 ntdll.dll!UnknownFunction ]
0x0000000049BDEF91 ntdll.dll!UnknownFunction ]

[2018.03.23-21.15.41:526] 11]LogWindows: Windows GetLastError: The operation completed successfully. (0)
[2018.03.23-21.15.41:526] 11]LogThreadingWindows: Error: Runnable thread RenderThread 11 crashed.
[2018.03.23-21.15.41:526] 11]LogWindows: Error: === Critical error: ===
[2018.03.23-21.15.41:526] 11]LogWindows: Error:
[2018.03.23-21.15.41:526] 11]LogWindows: Error: Assertion failed: (GIsCriticalError || !NumMarks) [File:D:\Build++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\Core\Public\Misc/MemStack.h] [Line: 89]
[2018.03.23-21.15.41:526] 11]LogWindows: Error:
[2018.03.23-21.15.41:526] 11]LogWindows: Error:
[2018.03.23-21.15.41:526] 11]LogWindows: Error:
[2018.03.23-21.15.41:526] 11]LogWindows: Error:
[2018.03.23-21.15.41:526] 11]LogWindows: Error: Crash in runnable thread RenderThread 11
[2018.03.23-21.15.41:530] 11]LogWindows: Error: HandleError re-entered.
[2018.03.23-21.15.41:544] 11]LogExit: Executing StaticShutdownAfterError
[2018.03.23-21.15.41:544] 11]LogWindows: FPlatformMisc::RequestExit(1)

I grab the 4.19 Plugin from the link on the forum page. Is there new update we are missing?

Thanks,

You grabbed the pre-compiled or the source?

I may have forgot to update the pre-compiled to a version that I fixed an Epic bug in that causes that assert (its not a crash). Its important if you are still getting it on a current source build though because it should be fixed, let me know which one.

I’ll package up 4.19 to pre-compiled again though since I think it is missing the fix.

The bug is reported to Epic but I fixed it locally until then.

Edit Uploaded a current build to the pre-packed binaries

ok so 1 harddrive death later. some backups, and fortunately some recovered files. im back at it. and im still fighting with the arm swinger mode. every time i try to separate it from the mode selector it stops working. so i tried ripping out just what it needs. and i cant figure it out for the life of me. so please take it easy on me. coding is not yet my strengh, its a weakness. how wrong did i do . and can you help me get working. ive already got climbing working. i cant get armswinger working.

Did you actually hook up the Relative Velocity to get calculated with the lowpass filter?

Also really using both hands it should use both velocities, not just one.

edit. i read your statment wrong. im looking at the code again.

im not sure how the velocity works. im pretty sure i got direction.

“Did you actually hook up the Relative Velocity to get calculated with the lowpass filter?”
i couldn’t figure that out. i left it the way it was when i found it and couldn’t make heads or tails of how it did its job.
im fairly new to coding. getting the forward vector made total sence. but i really don’t know what the rest of the code means.

There is a function that calculates the relative velocities and runs them through a low pass filter, look for it in the locomotion section, I can’t remember the name right now and am away from my pc.

Ill have to try tomorrow. I thought i had it and my oculus crashed. Rebooted and the drive was gone.

I just lost a 2nd hardrive.im 2 down of 5 and i dont trust my internal backup drive. And im afraid to boot my pc until i get an external drive to back everything up. Then i can see if im just unlucky. Or something is causing my drives to malfunction.

I fortunately have all the content i saved from the last drive death. And theres less import things on drive. But ue4 was installed there…and my projects that i spent 2 hours getting everything reimpoted and stuff.

im having a very bad week.

ok i got lucky and i pulled the drive and ue4 wasnt on the drive like i thought. and i rewired the controlls from a fresh start, and i think i found the problem. if i flail my hands and click the run button rapidly, it bumps me a bit forward and stops. im useing a regular button input that i added. is it looking for a repeating input every tick to run the code correctly.

boom. i think i figured it out. i should have been using an axis mapping instead of a button press. i didnt know the difference untill now.
ive isolated the code out by its self. but for some reason it still only works when the movement mode is set. but i think i know how to fix that.

note: ill clean that up when i get it all working. thank you so far for the help.

edit: i got it. there was a movement mode check inside of CalculateRelativeVelocities. once i deleted it. it works all the time now. many thanks. now i can focus on a concept build, and get things moving again. ill shoot you a peak at it once its in a show able state. plug in and all of its exsample codes are fantastic. albeit interwoven pretty tightly. alot for a new guy to wrap his head around.

edit: i see now what i had mistaken. i didnt understand “get relative velocitys for locomotion” because i never could find “CalculateRelativeVelocities” after that. all of it make perfect sence. and i can learn from it and figure out how to make use of it. thank you again for pointing me in the right direction.

I downloaded latest pre-compiled version and it has fixed the issue. Thanks for quick fix and awesome plugin.

Thanks,