Download

VR Expansion Plugin

No, I use windows. (Last VS2019 updates, last windows updates…)
I have already written you in private messages.

Pushed an update that fixed this, there were some weird edge cases where the compiler wasn’t fully walking the include path so it could miss the new macro.

I just tried to disable the SteamVR plugin and package for Quest, and got a bunch of errors seemingly related to SteamVR dependencies in Vive_PawnCharacter:

UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display:
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: Warning/Error Summary (Unique only)
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: -----------------------------------
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin Return Value no longer exists on node Get Open VRHMDType . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] Could not find a function named “GetOpenVRHMDType” in ‘Vive_PawnCharacter’.
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): Make sure ‘Vive_PawnCharacter’ has been compiled for Get Open VRHMDType from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin On Success no longer exists on node Get VRDevice Model and Texture . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin On Failure no longer exists on node Get VRDevice Model and Texture . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin <Unnamed> no longer exists on node Get VRDevice Model and Texture . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin Procedural Mesh Components to Fill no longer exists on node Get VRDevice Model and Texture . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin Override Device ID no longer exists on node Get VRDevice Model and Texture . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin Return Value no longer exists on node Get VRDevice Model and Texture . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] Could not find a function named “GetVRDeviceModelAndTexture” in ‘Vive_PawnCharacter’.
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): Make sure ‘Vive_PawnCharacter’ has been compiled for Get VRDevice Model and Texture from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin On Succeeded no longer exists on node Get VRDevice Property String . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin On Failed no longer exists on node Get VRDevice Property String . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin <Unnamed> no longer exists on node Get VRDevice Property String . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin Device ID no longer exists on node Get VRDevice Property String . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] In use pin String Value no longer exists on node Get VRDevice Property String . Please refresh node or break links to remove pin. from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogBlueprint: Error: [Compiler Vive_PawnCharacter] Could not find a function named “GetVRDevicePropertyString” in ‘Vive_PawnCharacter’.
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): Make sure ‘Vive_PawnCharacter’ has been compiled for Get VRDevice Property String from Source: /Game/VRExpansion/Vive/Vive_PawnCharacter.Vive_PawnCharacter
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogUObjectGlobals: Warning: While loading ‘C:/dev/Unreal/vrexppluginexample/Content/VRExpansion/Vive/BP_Teleport_Controller.uasset’ failed to load ‘/Script/OpenVRExpansionPlugin’: Can’t find file.
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: LogUObjectGlobals: Warning: While loading ‘C:/dev/Unreal/vrexppluginexample/Content/VRExpansion/Vive/Vive_PawnCharacter.uasset’ failed to load ‘/Script/OpenVRExpansionPlugin’: Can’t find file.
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display:
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display: Failure - 22 error(s), 106 warning(s)
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogInit: Display:
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)):
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): Execution of commandlet took: 8.85 seconds
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): LogContentStreaming: Display: There are 1 unreleased StreamingManagers
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): Took 18.7521263s to run UE4Editor-Cmd.exe, ExitCode=1
UATHelper: Packaging (Android (Multi:ASTC,DXT,ETC2)): ERROR: Cook failed.

You don’t need to disable the steamvr plugin to package for quest, the only nodes of mine being used that reference steamvr have compile flags that run blank logic on android platforms. So you can package and test on it freely as is.

If you were looking to go beyond just packaging for quest and wanted to launch for the oculus store, then yes, you will have disable the OpenVRExpansionPlugin as well and bypass the nodes in the big red box in the character event graph, Oculus doesn’t allow any trace of steamvr in their store depots.

Then again, you shouldn’t be trying to use the template character as is on quest anyway, a lighter weight one would be better off since that one shows so much additional logic.

Ok. Ill just go the boneworks route and have physical arms. Does anyone here have any links to papers/tutorials/anything surrounding the topic, and similar implementations of it? Its ok if its different that what boneworks is doing, as long as the arms are simulated, its fine.

On an unrelated note, is there a suggestion thread?
If not, what i suggest is a bool in the VRDial component, called something like “enable array snap points” What it would do, would activate an array of floats. Instead of using snap points, it would use these values as snap points. Allowing someone to have snap points at, say, 12, 44 and 79 degrees. Instead of having a uniform distance between them. Basically, what im trying to explain is that you can have different differences between points other than a singular angle distance. I have a mockup working, but there are certain cases where it craps out, and permanently gets stuck. Having a plugin implementation of this would be great.

You know…I normally put requests like that on my list of items to get to someday, but I had some time over lunch today and it sounded like fun, so I threw it in with the latest updates.

https://vreue4.com/4-25?section=dials-throwing-05-19-2020

Thanks for the help. I just wanted to try it out on Quest. It ran like crap whenever I wasn’t facing a wall with nothing behind it, and it crashes the HMD after a few minutes, but it definitely works.

Build the lightning, I keep the lighting dynamic in the example project to reduce its memory footprint.

Also the mobile scalability settings are not set for quest.

its so weird having something you suggest end up exactly as you image. moreso when it gets added the same day. Thanks dude.

You can have a physical “body” beyond the arms, just be aware that it will be limited in capability.

I’ve been working on this myself, and Boneworks has quite a few limitations in it’s implementation, but I generally find it convincing enough that you wouldn’t need to compensate for those limitations unless it was something specific you wanted.

Boneworks’ collision capsules are less expansive than you think. There’s the chest, feet, hands and head, but the arms and legs aren’t completely connected by collision - they extend partially beyond the ankles and wrists, but nothing up until the shoulders and pelvis. You can verify this in-game, just take an item and try to shove it through various parts of your body. You can’t even receive damage on these locations, go ahead and shoot right at your bicep. This allows the body to have collision without that collision also impacting the collision and IK of the feet and hands.

The feet are also almost completely simulated. The only animations they have in place are cardinal directions and turn-in-place, no transitions for crouching or jumping, just manipulation of the pelvis as far as I can tell.

As far as an actual implementation, you can look at how ALV4 is doing foot IK (https://www.unrealengine.com/marketp…tion-system-v1), and the simplest version of the hands is just a FABRIK node that affects the hands from the clavicle to the location of the motion controllers (potentially with an offset.) This can lead to some weirdness, however, and Boneworks has a more sophisticated solve for their IK to approximate an actual persons’ hand motions (for instance, flaring of elbows when hands are parallel to floor.) You’ll also see a lot of “snapping” if you don’t lerp, and there’s a chance your arms are longer than the models, which will result in your hands coming totally detached. You’ll also look pretty dumb in third person - take the third-person view in Pavlov, for example, where your arms clip into your body and generally don’t look very real.

If you’re looking for an example on a better hand IK solve, then you’re in a club with many members. There’s a paid package on the marketplace, but I’m not sure how good it actually is without being able to try and break it. Mordentral has a promising-looking implementation he showed off on his Youtube, but that’s a “when it’s ready” kind of thing, and I know he’s been busy with other work.

If the body IK isn’t blocking progress on your project right now, and you don’t feel like tackling it yourself, then I’d suggest perhaps working on other aspects until Mordentral can save us from ourselves.

Looks like I’m outta luck. The editor crashes as soon as I lower the engine scalability settings. If I go one by one, I can set everything to low except Effects, which crashes the editor if I try to go below High. Let me see what this is like, in any case…

[USER=“3764716”]Benjamin Paine[/USER] You can not use IK and Physic at the same time, it will look so weird. And 1 more thing, i suggest using CCDIK over Fabrik for arm IK. Ue4 only implement joint rotation limit in CCDIK.

That is not true, you can use the PhysicalAnimationComponent to drive simulated bones to try and match the final animation pose. The component is just very simplistic currently is the main issue.
I built the welded bone driver on top of it so that I could go in and extend it eventually.

Also CCDIK is a spherical joint limit, so its quality is still fairly low for good VR IK.

No, you can not. I had issue using it in my game. Normally, it worked well, but when the lowerarm collide with world object, the hand bone still go out to reach the final position. I did setup the constraint of the lowerarm to hand with lock position, but it not worked. About CCDIK, i did not tell anything about perfect solution there! And it not LOW there. I can tell that you did not test it. Combine it with the right pose, and the anim IK will looked good.

BTW, we are developing a physic system that player can interact with everything in VR. We begin with climbing system https://www.youtube.com/watch?v=aCPEbTZ6Oio&feature=youtu.be
This is not something like addWorldOffset, fully physic base climb. Also, player hand can push, pull the body.

Then you set your physical animation component up as world based and not local space. I have multiple users using it just fine, even though it is simplistic, the basic concept works, its just driving bones with constraints on kinematic actors.

Local or not, the position of the controller is the same as the calculation. But i found 1 thing that is very interesting. I think it the bug of animation layer! After i copy paste all the node to anim graph, it work just fine lol, and i still using world space!

Not sure which version of the VREP you’re trying to use, but I do see you have unreal engine 4.14 in use. In 4.24, SteamVR had their plugin updated to no longer require an external marketplace plugin for SteamVR input (see https://www.unrealengine.com/marketp…put-for-unreal). If you’re using the latest VREP, I’m relatively certain this has been changed to use that.

Talking about how it handles the constraints, setting it to world based it constrains the bones to the world location, which means each acts independently somewhat. If you set it to parent/relative then the constraints follow their parent orientations instead and it works better.

By that, do you mean that you would only use the active swinging controller if only one ControllerMovement axis button is being pressed? I’m working on bringing the ArmSwinger locomotion into a different project, and I noticed that Get DPad Movement Facing is always using both controllers’ directions.

its only using both if both are set to that movement mode from what I remember.