Awesome! Looks great! ![]()
Exactely what I want to achieve for a prototype. Just to experience how it feels like, drive a car in VR. Not with a car but more of a small bus to house two people standing…perfect for VR.
Awesome! Looks great! ![]()
Exactely what I want to achieve for a prototype. Just to experience how it feels like, drive a car in VR. Not with a car but more of a small bus to house two people standing…perfect for VR.
It would be faaaaar easier to do with a standing room bus type of vehicle. Characters record their movement bases when walking on top of something in motion and adjust to follow it, so with something like a standing room bus you literally only have to get them inside of it and everything should work.
Pushed a new commit to the plugin and template today.
Template changes
Stable enough for beta release on the car (is not entirely complete, please ignore half done parts)
Made the steering wheel of the car a lever now instead of a dial and added a new mesh for it Added new template level section specifically for playing with the car
Plugin changes
Fixed Simple characters overriding the RequestedVelocity of the base FSavedMovement class (fixes client side navigation with simple char).
Added a check in the VRLever to help prevent it flipping sides when over rotating.
Changed the parent relative attachment component so that it sets relative space instead of world space position now.
World space was a holdover for when it was directly attached to the camera, not only is it not needed anymore, but it also can result in the incorrect behavior.
Added a default lerp to the snap setting for the ParentRelativeComponent
Can be turned off and speed can be adjusted.
looks great! Unfortunately I’ve had zero success trying to use the plugin. Here’s my process if anyone can help:
I’ve also tried adding the pre-built plugin to an existing project but I no idea how to use it in a scene (which is why I would like to check out the template project).
Also, I’m a non-programmer designer/animator/modeler so any solution that can avoid using VS would be much appreciated. Thanks in advance.
It doesn’t “crash”, the project just won’t load with unbuilt plugins.
What version did you build? You specifically need to build “Development with editor” in order to launch the editor without visual studio. After that is compiled the project can be started like normal from the .UProject file.
The pre-built binaries are the only way to use it without a compiler, but I specifically suggest that the compiled version be used as once you understand building it once it makes upgrading to new versions far easier in the future and I release new versions constantly.
if you REALLY don’t want to touch a compiler a plugin may not be the best thing for you.
Thanks mordecentral. Just wanted to follow-up for anyone having a similar issue.
Stupid question but how can I tell which version of the template I’ve downloaded? The plugins themselves say they are version 4.17 within the editor.
I just tried to find the most recent version by poking around your Bitbucket. I downloaded the template from the “downloads” section and the “source.” The template folders I downloaded read ‘-vrexppluginexample-823b70c95557’ and ‘-vrexppluginexample-ae544fa4dd45.’ Both seemed to build successfully (‘Development with Editor’ seemed to be the default setting). Still I wasn’t able to open the project file without receiving the usual litany of errors (editor/plugin version mismatches etc.). I’m assuming there’s something obvious I’m missing due to my lack of familiarity with building projects via VS.
In desperation, I copied the content folder from the template into a new project and added the pre-built plugin. I then opened the project folder and opened the MotionControllerMap. Aside from some networking errors (I had to unpin Start/Stop Networked Voice) with the Vive Actor, the plugin seems to be functioning as expected. I’m sure is the wrong way to go about things but it seems to work for now.
Hi ,
FYI, if you try and package the template with inclusive nativization enabled then you get these errors.
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogBlueprintCodeGen: Error: BP /Game/VRExpansion/FirstPerson/SliderMenu/ConsoleCommandSliderActor.ConsoleCommandSliderActor is selected for nativization, but it cannot be nativized because it currently implements an interface class (/Script/VRExpansionPlugin.VRGripInterface) that declares one o
r more pure virtual functions.
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogBlueprintCodeGen: Error: BP /Game/VRExpansion/Vive/Testing/ConsoleOutput.ConsoleOutput is selected for nativization, but it cannot be nativized because it currently implements an interface class (/Script/VRExpansionPlugin.VRGripInterface) that declares one or more pure virtual functions.
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogBlueprintCodeGen: Error: BP /Game/VRExpansion/Potion/PotionActor.PotionActor is selected for nativization, but it cannot be nativized because it currently implements an interface class (/Script/VRExpansionPlugin.VRGripInterface) that declares one or more pure virtual functions.
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogBlueprintCodeGen: Error: BP /Game/VRExpansion/FirstPerson/Door/DoorActor.DoorActor is selected for nativization, but it cannot be nativized because it currently implements an interface class (/Script/VRExpansionPlugin.VRGripInterface) that declares one or more pure virtual functions.
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogBlueprintCodeGen: Error: BP /Game/VirtualRealityBP/Blueprints/BP_PickupCube.BP_PickupCube is selected for nativization, but it cannot be nativized because it currently implements an interface class (/Script/VRExpansionPlugin.VRGripInterface) that declares one or more pure virtual functions.
There are also some warnings that appear…
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogLinker: Warning: Can't find file '/Game/RollingBP/RollingOverview'
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogUObjectGlobals: Warning: Failed to load '/Game/RollingBP/RollingOverview': Can't find file '/Game/RollingBP/RollingOverview'
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogUObjectGlobals: Warning: Failed to find object 'Class /Game/RollingBP/RollingOverview.RollingOverview_C'
UATHelper: Packaging (Windows (64-bit)): Cook: LogInit: Display: LogGameplayTags: Warning: Invalid GameplayTag DropType.DropOnRelease found while loading property /Script/VRExpansionPlugin.GrippableStaticMeshComponent:GameplayTags.
Thanks for all the great work!
I am aware of it, the interface error on nativization is due to the blueprint events in the interface and isn’t something I can fix, they need to solve it on their end. I don’t think it was a problem back when the events were implemented differently but they were far harder to work with in c++ then.
The warnings are w/e, there is an object that still uses a drop type that was removed and I don’t know what rollingBP even is.
The pre-built version is always a couple of days behind on updates, other than that it should be fine like that.
The template is 4.17 and both plugins included with it are 4.17 as well. The moment a new engine version releases out of preview I move the template over to it so I dont’ have to manage multiple engine versions for the example content.
Pushed a new commit to the plugin
Fixed it so that SetReplicatedMovementMode works with Move_None now, was mistakenly using
Move_None as the empty specifier, now using Move_Max for that.
Made VRLever and ParentRelativeAttachmentComponent use failsafe axis lerp functions instead
of just a generic FLerp.
thanks a lot for plugin
just a quick question, is it possible to implement move in space? I’ve been trying to figure out how to teleport in space (eg: teleport to near a planet) but the Nav mesh is tied to the floor and creating multiple floors isn’t really an option in outer space environment
Yeah, ignore nav mesh entirely and use a different method of deciding where to go.
The nav mesh system is only there to make it easy to define teleport capable spots, you can still do normal teleporting at will.
Have you seen if any of the tracker pins input/output are supported through the new motion controller class or in unreal engines implementation of the openvr api?
[quote=“AMIMA, post:1493, topic:68709”]
Have you seen if any of the tracker pins input/output are supported through the new motion controller class or in unreal engines implementation of the openvr api?
I haven’t checked, but it should, it binds to the same input pipeline, ie: the grip / trigger pins should trigger the same events in engine.
[quote=“, post:1494, topic:68709”]
Thanks for the reply. I just made some progress. Unreal was crashing on any events when the tracker was set to other and ‘special 1’. I tried using the HTC tool to change the tracker to a controller again. With one tracker connected as a controller and set to ‘right hand’ haptic events are showing on pin 1.
Did some more car work
Weekend project - Car - YouTube](Weekend project - Car - YouTube)
That car looks awesome!
Pushed new commit to the template and plugin repositories today
Plugin:
Made "Light" versions of the RPCs that send saved movements to the server.
These do not pass in the RequestedVelocity and CustomVRInputVector.
They are called if both the RequestVelocity and CustomVRInputVectors are zero.
cuts down on some of the additional overhead built into the replication in the VR characters.
Also the saved movement capsule Yaw value being sent over the network is now the same calculated Pure yaw that the GenerateOffsetToWorld
uses. will make running back movements slightly faster, as well as slightly more accurate as passing
in just the normal HMD yaw before could yeild slightly different results when the camera is rotated off axis than
if calculating entirely off of the full rotator.
Removed default of grippable actors base components replicating, was an oversite.
Added a new boolean to all grippable components (defaulted: off), bReplicateMovement.
emulates the variable of the same name on actors and controls whether grippables
will replicate their movement when set to replicate (IE: so gameplay tags can replicate).
The value of property is overriden when the current grip type of the grippable is
serverSideMovement, then it forces allowing movement replication.
Turned bReplicates off by default on all grippable components, if you need to set interfacesettings
on placed objects that aren't set to load with the map for the client or have replicated gameplay tags then just turn it on for the component.
Better to have directly set by the game developer than defaulted by me.
I now have more options in the grippable components for finer grained control of them when replication is turned on.
Template
*Car has all 4 seats filled in now.*
I also went into the DropActor RPC in the blueprints for VivePawnCharacter and quantized the requested
angular and linear velocities as well as only passing in the object now instead of the grip (which grip
is now reconstituted on the other side by getting grip by object).
cuts the bytes used to replicate RPC to 1/5 of what it was.
Also a note, and text that I am adding to the plugin wiki’s Tips&Tricks page so people can see it
Grippable Components and Replication
By default all components in the engine are set to bReplicates = false. The grippable components specifically have some properties that can be useful to replicate to clients (Gameplay tags and VRGripInterfaceSettings), if an object is not set to NetLoadOnClient and is placed in the level with custom settings over its base class the values will not replicate to the client unless you set the component to replicate.
bReplicateGripSettingsAndGameplayTags enables / disables them being sent when the component is set to replicate.
Also there is now a bReplicateMovement variable on all grippable components so that when replication is enabled they don’t add additional overhead by also defaulting to replicate their position. When the grippables grip type is ServerSidedMovement it overrides value and auto replicates movement when the component is set to replicate.
Pushed some more changes to the plugin today
Added boolean to player controller (default true) bDisableServerUpdateCamera. When true it disables the automatic view replication from the camera manager for the camera. Typically we are already sending the camera's position / rotation in VR and the replicated value isn't that useful anyway. Unreal tournament turns it off and sends the look value from the clients when important actions happen and in VR most actions happen off of direct input instead anyway. ( removes a 1000b/s replication cost or so).
The boolean can be disable to return the typical engine functionality.
Added ExLight RPCS for char movement that activate when Acceleration is also zero
Removed the defaulting of Replicate movement on grippable components when movement is set to server side. After second thought I would prefer the bReplicateMovement be manually set by plugin users here.
Also added a new game to the “Projects using list”
Run Of Mydan