Announcement

Collapse
No announcement yet.

VR Expansion Plugin

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • started a topic VR Expansion Plugin

    VR Expansion Plugin

    VR Expansion Plugin

    *Updated: 06/13/2019*


    Playable Template Demo
    Template Packaged Download

    Plugin Website:
    https://vreue4.com/

    Plugin Partial Features List:
    https://vreue4.com/features

    Documentation
    https://vreue4.com/documentation

    Website Hosted Patch Notes
    https://vreue4.com/patch-notes


    This plugin is intended to ease the creation of VR games/experiences in UE4. It is up to quite a few different additions now and has a fleshed out wiki to help ease into it (may be a version or two behind at times, I attempt to update it when I can, the template is generally the best informational tool). It is also intended to be compatible with multiplayer experiences without any direct changes from the end user, most of the relevant components / actors replicated themselves over the network with some customization included.

    It is fully Blueprint implemented but can be manually linked to and used in c++ if needed.

    Consider Supporting Me On Patreon

    Latest informational video


    Some Games In progress or released that currently use the plugin (These are just ones I know about)
    https://vreue4.com/games


    Plugin Pre-built Downloads
    https://vreue4.com/binaries


    Plugin Repository
    https://bitbucket.org/mordentral/vrexpansionplugin

    Plugin Example Template Repository
    https://bitbucket.org/mordentral/vrexppluginexample


    Open Input Module (Knuckles/ect until its a main part of the engine it will be a separate module)
    https://vreue4.com/ovri-howto


    Repository Installation articles By Community Member kusogaki77

    Basic Installation Step-By-Step


    Specific Commit Download Tutorial


    Pre-built binary useage

    Template Note:

    I would like to note by the way that everything currently in the template is an example of what I think is best practices (though maybe not implemented as well as I would for an actual game), not everyone is going to need the same set up and not everyone is going to need a full VRcharacter. Custom pawns that just use the motion controllers and camera / parent relative component would be useful to people that don't want gravity / collision. It also has to give examples of far more things than an average game is likely to use, so there WILL be refactoring involved if it is used as a base for one (input bindings for one).

    Template Change Log
    Code:
    04/26/2019
    
    Brought the manual interface implemented objects up to the new IsHeld changes and switched to querying with GripIDs where IsHeld is used elswhere.
    
    11/07/2018
    
    Changed the Gripping sphere trace to use HitLocation instead of ImpactLocation for the socket in range checks, while impact location is supposed to
    fall back to hit location if it wasn't able to be validated, there was an instance with a specific user where that behavior
    was not being shown (even though it works as intended for everyone else...). Since I don't know the engine level cause for this
    inconsistancy and since the actual difference is only up to the radius of the trace sphere (generally very small) I moved to the
    other variable.
    
    08/22/2018
    
    Re-wrote how the character / player controller is initialized to be far cleaner.
    
    Added Knuckles EV2 default controller profile and changed some of the character logic to check for it in OpenVR.
    
    Changed the FPS test pawn to load its profile in a different area
    
    Removed a corrupt BP and prepped everything so that packaging with PackageAllDirectorys works without issues on the template.
    
    Removed unused content that was just bloating the repository (left over EpicVR template content)
    
    Reference BP Grip script will be coming later.
    
    Changed Sedan actor to use a Boxmesh around it for the navigation modifier.
    
    07/18/2018
    
    Added a filter to "CanBeClimbed" to always ignore grip interfaced objects.
    
    Added a VRPlayerStart to the template level in place of the PlayerStart that
    was there before.
    
    Changed drawer actor to use sliders and the new momentum settings
    
    Changed the player controller to wait around for tracking before
    spawning. Checks for valid tracked position and if it isn't valid yet it
    waits before sending the players HMD info to the server (so server delays itself).
    
    05/25/2018
    
    Overhauled how the teleport controllers get the player state and set themselves up a bit.
    
    Added socketing capability to the sample gun for the body component on the example pawn.
    
    Added a socketing check to the VivePawnCharacter in the CallCorrectDropEvent area of the event graph (really simple).
    More complex implementations could skip querying the object and check themselves, or do other things.
    
    05/20/2018
    
    Remade the controller model loading and controller profile support to use the new bOffsetByControllerProfile option
    on the GripMotionControllers.
    
    05/16/2018
    
    Changed controller model loading to be per hand and safe for oculus platform in the template
    
    Corrected Epics roomscale rotation for teleport boundries (unsure if they fixed this in their base template ever).
    
    Added optional tracking sensors to the teleport outline
    Plugin Change Log
    Code:
    06/13/19
    
    Added some prelim physics changes and replication improvements prior to the more major physics changes coming down
    
    Path notes here:
    https://vreue4.com/patch-notes?secti...eanup-06-13-19
    
    06/04/19
    
    Put out a revision for the LerpToHand grip script
    
    Patch Notes Here: https://vreue4.com/patch-notes?secti...nd-gs-06-04-19
    
    05/16/19
    
    Pushed a fix for throwing with SetAndGripAt center of mass setting with physics grips (the default one)
    
    Patch Notes Here: https://vreue4.com/patch-notes?secti...m-set-05-16-19
    
    05/08/19
    
    Added a new COM (center of mass) calculation / setting setup, this fixes some weird engine interactions with how
    Epic intended that you set COM and welded attachments (it doesn't work correctly with welded children).
    
    Patch notes here: https://vreue4.com/patch-notes?secti...-change-5-8-19
    
    04/26/2019
    
    Pushed another commit to both repositories, I figured that as long as I was requiring some re-factoring of how people connect to IsHeld, that I might as well finish it out fully with where I wanted it to be.
    
    Patch notes here: https://vreue4.com/patch-notes?secti...tor-04-22-2019
    
    04/22/19
    
    Added a beta FlightStick mode to the VRLever class
    
    See Patch Notes:
    https://vreue4.com/patch-notes?secti...de-for-vrlever
    
    04/18/19
    
    Changed the IsHeld Implementation and added AllowsMultiGrip to the VRGripInterface to prepare for some future features.
    
    See Patch Notes:
    https://vreue4.com/patch-notes?secti...anges-04-18-19
    
    04/16/19
    
    Pushed a new update live to both repositories yesterday, forgot to update this thread. I made a bucket updating system for 4.22 to manage the client auth throwing addition and when I saw the new subsystem engine capability I decided it made more sense as one of those. Figured that as long as I was cleaning it up and generalizing it more that I would add some blueprint accessibility to it as well for others to use if they choose too.
    
    Patch notes here: https://vreue4.com/patch-notes?secti...date-subsystem
    
    04/02/2019
    
    Added the GrippablePhysicsReplication class that overrides the default PhysicsReplication class in engine
    to allow for server side smoothing. If "bUseClientAuthThrowing" is enabled (On a grippable actor, not available
    for grippable components) and the grippable is set to a Client auth movement mode. The object will sends
    its state to the server at "UpdateRate" speed and the server will smoothed the replicated physics state
    and replicate back down to the other clients. After the thrown object hits a sleep state or hasn't changed
    status for a time-out period or is picked up it will end the replication.
    
    This is a very alpha feature and will need improvements likely over time.
    
    
    Ported epics 4.22 late update race condition fixes
    
    its also generally cleaner overall now
    
    
    Moved to using epics new local auth check that came in with 4.22, HasLocalOwner is a new component function
    and walks up the ownership chain for authority.
    
    
    Improved oldmove sends missing some special movement flags with CMC's.
    
    Added initial replication state to the button component.
    Fixed initial replication somewhat with the VRSlider.
    
    Made all interactibles and grippable components turn off movement replication when gripped.
    This makes it significantly safer to keep them replicating movement.
    
    
    Fixed some initialization issues with the lever on initial replication of the
    initial transform (specifically not re-calculating the angle correctly).
    
    
    Removed the bReplicatesMovement requirement on InitialRelativeTransform for
    all interactibles. Having that was pretty counterproductive. Just turning off
    replication for the component is better if this is needed to be disabled.
    
    
    Large header function body refactor, was about time that I committed to doing this, removing
    function bodies out of headers and moving them into the .cpp.
    
    
    Switched unique render commands with new format in 4.22
    
    
    Added EndPlay to grip scripts to allow people to manage timers and cleanup better.
    
    Move Grip Script Beginplay to a seperate function being called so that I can run custom logic in the
    future (like tick event registration) without the user being able to override the parent
    and delete it.
    
    Removed Grip Script BeginPlay being blueprint callable, that was never intended.
    
    Fixed a display issue with instanced objects in 4.22 and their property
    categories.
    
    
    Added a colorspace check to the openVR library texture creations
    
    02/11/2019
    
    Now caching the secondary attachment pointer, this lets me
    make sure that the server gets a valid pointer on release of secondary grips, also lets me throw drop events
    when the secondary attachment changed but its still a secondary.
    
    Changed to sending the full transform on drop with client auth grips instead of just position / rotation.
    
    Fixed a Z axis bug introduced with the lever angle re-write
    
    Moved EVRInteractibleAxis to the VRInteractibleFunctionLibrary header,
    it belongs there instead.
    
    Switched levers over to use the Interactible library functions
    
    Also made the dial use the same basic logic as the lever for rotation,
    with an option to revert back to direct hand sampling.
    
    Added new grip type "EventsOnly", will skip ALL extra logic of grips and only store the grip
    data and fire the events for it. Whether you do anything else with it or not is up to you.
    Like a CustomGrip except even more barebones as it does not fire TickGrip or obey any of the
    dropping simulation logic, it is also auto excluded from late updates.
    
    Stopped calling "StopSimulating" on Custom Gripped objects automatically.
    It is legal to start and keep a custom grip simulating, that call should have
    never been there. Anyone who needs their custom grips to auto stop simulating on grip
    will need to call it in the OnGrip event themselves.
    
    02/02/2019
    
    Fixed a net smoothing bug with linear smoothing that could cause crashes
    when rotating. Exponential smoothing is the engine default when using smoothing
    and smoothing is off by default in the plugin so this took awhile to run into.
    
    Now initializing some vars that Oculus may not be setting on mobile
    This would be a bug in the base engine source, engine source is still bugged but plugin motion controllers
    should function. Issues happen when tracking is lost on oculus platforms (IE: Oculus GO controller and app loses focus)
    
    
    Made GunTools virtual stock settings part of the global settings structure
    this makes it easier to store a copy in the character and replicate it to the server
    as well as from the server to the gripped object for setting.
    
    Also added the option to UseGlobalVirtualStockSettings in the gun tools grip script.
    When enabled it will load the current settings from the global settings (default true and only for locally controlled).
    When disabled it uses local settings of the script.
    
    
    Added custom movement events for climbing and low grav movement modes. (EventUpdateClimbingMovement/LowGrav)
    
    Is a better way of getting the hand offset than in the actors main tick, run the same logic but here so that it is taken in
    the same frame instead of the next.
    c++ projects can still override PhysCustom_Climbing to do the same or they can overide the EventUpdateClimbingMovement_Implementation
    
    Also am now properly setting / clearing the climbing variables, the time moments when it
    was being done wouldn't work with the new placement of the query.
    
    
    Many lever improvements on the back end
    mostly fixing Axis_Y issues since it is the last order of operations with Quats.
    Also added SetLeverAngle function
    
    Moved button overlap bindings later in init to avoid an editor copy error.
    
    
    Added a BP Accessible IsLocallyControlled to the motion controllers, it can be very useful, mostly
    with avoiding extra casts to check for local owner OnGrip ect.
    
    
    Changed LerpToHand to be a fixed time period of lerp, not speed based.
    
    Added a control distance variable to the LerpToHand gripscript
    If the distance to the hand is smaller than this value then the lerp
    script won't activate on grip.
    
    Default of 0.0f means that it will always activate.
    
    Also added a curve editor to it that is optional.
    
    
    Added some brief descs to the headers for the Grip scripts and removed the
    SHOULD NOT BE USED warning from gun tools.
    
    Fixed a scaling bug with the auto SnapToSocket setup when gripping.
    
    01/04/2019
    
    Many of these changes go for 4.20 and 4.19 versions as well (except for the new gun tools, it is 4.21 only)
    
    Finalized beta version of GunTools Grip Script, supports pivot offsets, recoil instances, virtual mount settings, extended smoothing.
    
    Moved smoothing settings out of default grips and into the gun tools grip script.
    This will lower default grip overhead and also let me specifically fine tune
    the smoothing for gunplay.
    
    Added "WantsDenyLateUpdates" to grip scripts allowing grip scripts to deny late updates when they don't want them.
    
    Opened up Grip Scripts to be editable per instance again instead of just in defaults.
    
    Added remote grip pivot setting to the motion controllers, allows easier remote gripping and custom operations / mobile VR ease of use.
    
    Fixed it so that attachment grips will now have full use of the late update settings
    and features. Also moved the interface late update deny checking to the end of the logic checks
    to save some perf on grips that will be denied anyway.
    
    Also fixed it to support Custom pivot component for attachment grips
    
    Move setting collision on to post moving capsule in seated mode
    Also use teleport for movement from seated position. Fixes some collision issues exiting a physics vehicle.
    
    
    Made bDenyGripping defaults visible for all interactibles.
    Also made BreakDistance be ignored if value is 0.0f on all interactibles (to match
    general grip settings).
    
    Added new DeltaTeleportation, a new teleport type added to help alieviate teleporting with physics simulating skeletal bodies in hand.
    
    Am now filling in the Component Velocity member of the GripMotionControllers.
    
    Added OnStartedTracking and OnEndedTracking events to the motion controllers.
    
    Added prelim OnBeginInteraction and OnEndInteraction events to the button component.
    Also added the Interacting Component to the button events as it is useful in itself.
    
    Removed IgnoreActorWhenMoving from grip inits, it was causing overlap spam as the primitive bodies
    were not correctly clearing overlap passes.
    
    11/07/2018
    
    Set multiple variables to initialize due to 4.21 warnings, regardless of if they really needed to be or not....
    
    Fixed multiple missing includes that UBT was hiding.
    
    Updated openVR tracked device properties to openvr .16
    
    Am now turning off physics simulation locally on all clients on Socketing operations to cover some edge cases / packet miss issues.
    
    The attachment grip type now calls attach on all clients to cover some edge cases / packet miss issues.
    
    Moved the NavMoveCompleted event into BaseMovementComponent so that SimpleCharacters can trigger it as well.
    
    Added teleporting flag to the "Exit Seated Mode" event so that the pawn teleports physics bodies (can't throw things in the way around)
    
    Seated mode now replicates and throws the OnSeatedModeChanged event to ALL players, not just the server and owning client.
    This allows you to react to it locally on simulated proxies as well.
    
    No longer using Epics TimeTick in phys_walking, this causes errors when the framerate gets really high (like when oculus rift is removed
    and the rendering is paused). This actually appears to be a potential bug in general with the root motion addition that I was basing my
    original implementation on.
    
    Changed the gesture components material that you can set for spline drawing to be a material interface instead of a UMaterial *.
    This way you can pass in material instances.
    
    Added in a bool to ignore gesture scaling for specific gestures, Also the ability to save gestures without autoscaling them to the database.
    
    Merged in a client authed movement mode fix that Epic added.
    
    Fixed multiple replication issues with grip scripts and net relevancy, they should be solid now.
    
    Removed dropping a grip if killing the motion controller and we are not the grip authority.
    
    Added a flag to grip scripts that allows the user to notify the gripping controller that it should drop the object as soon as possible.
    It is not safe to directly drop inside of a grip script due to some memory management that the engine is doing when passing back into
    c++.
    
    Added bIsForTeleport to grip scripts GetWorldTransform variables, useful to know on the grip end.
    
    Added BlueprintType to the base grip script class so that they can be directly referenced in BP.
    
    Fixed multiple bugs in the new Interactible Settings grip script.
    
    
    09/21/2018
    
    Added UAISense_Sight_VR, a drop in replacement for UAISense_Sight that offsets to a VR characters HMD location.
    
    09/16/2018
    
    4.19 and 4.20 changes (got back ported to 4.19)
    
    Simplified and improved the HybridWithSweep grip type.
    It should now performs less operations while also being of a higher quality.
    
    
    Allow gripping static mobility objects if the grip type is custom..why not
    Corrected a bad commit on the dial component that was causing some incorrect rotations.
    
    
    Moved SetHeld being called when an object is dropped to before OnGripReleased
    is called.
    
    Also moved it before OnSecondaryRelease is called
    
    Also moved the call to the objects own OnRelease to before its parent
    OnChildGripReleased as it makes sense that the object performs actions on
    itself first.
    
    This brings the flow of execution for dropping to parity with how it is done on grip.
    
    
    4.20 only
    
    Added GripStruct input Add/Remove Secondary Attachment point functions
    
    Many many optimizations and clean ups regarding the gripping and dropping functions, lowering code bloat.
    
    Added GripID as an input to DropObject and DropObjectByInterface, if the passed in object is
    empty it will attempt to use the grip ID to drop instead.
    
    I also added INVALID_VRGRIP_ID = 0 define for code use and locked out index 0 from being
    used as a grip id, this lowers the total number of possible simultanious grips per hand from 127 to 126.
    
    
    Exposed the GripMotionControllers DefaultGripScript pointer to blueprints so
    that people can access it and set variables on it (if it is a blueprint base script that is).
    
    Also Changed the default and gun tools grip scripts so that the pivot point is attained
    from the ParentTransform instead of getting the controller location again. This is not
    only slightly faster, but it also allows people to override the parent transform with something
    else (say a remote component) so that the grip doesn't have to be based on the controller
    itself.
    
    (force/remote grips for instance could provide a proxy components transform instead)
    
    
    Took a byte out of the positional replication for controllers and camera
    by making the logical assumption that 419.43 meters is a size big enough for any
    current roomscale technology.
    
    THEN Took back 1 of the 8 bits that I saved everyone in order to add a
    flag for quantization of the rotation on controllers / cameras.
    
    You can now set it from its default Short quantization to a 10 bit per axis
    quantization method, effectivly saving 2.5 bytes per rep and with 4x the granularity
    of the engine BYTE rotator quantization.
    
    This makes up for the lack of precision on the BYTE method but still allows for some
    decent savings.
    
    Also dropped a byte out of the CustomVRInputVector and RequestedVelocityVector.
    41,943.04 UU's should be MORE than enough leg room for these values.
    
    Also am now rounding MoveAction_Custom vector values to 2 digit precision. I was
    already doing this for all built in movement actions but the custom ones should
    also be restricted like this.
    
    08/22/2018
    
    Added GripScripts fully into the master branch with four reference c++ implementations
    GS_Default (default gripping logic)
    GS_LerpToHand (lerp initial grips to the hand)
    GS_InteractibleSettings (Functions like the removed InteractibleSettings options)
    GS_GunTools ( Currently unfinished set of tools for advanced gun interactions)
    
    Removed rollback on custom movement modes
    This is to remove "climbing mode" hanging in place and seated mode issues.
    Really only an issue in really high packet loss situations, but wanted to cover it.
    
    Also added a GetReplicatedMovementMode function that returns the current Conjoined movement
    mode.
    
    Set OnClimbingSteppedUp to a BlueprintNativeEvent so that c++ users could use it.
    
    Set GetOpenVRModelAndTexture node to not fail out if a texture is missing and to just pass out a nullptr now.
    It was failing on Knuckles Left controllers as they are missing a texure in full model mode from the OpenVR
    RenderModels api.
    
    Corrected an oversight with the new OnDropped event on the motion controllers having a possibly stale variable (thanks SlimeQ)
    
    08/14/2018
    
    GripScripts mostly final form has been added to 4.20 GripScripts Dev branches in
    both repositories. They need some testing and to be put through their paces prior
    to merging into the master branches.
    
    
    Initial knuckles porting and profile setup - (not public for awhile)
    
    
    Skipping some calls to slightly speed up nav agent retrieval
    
    
    Adding OnFinishedLerping events to the slider and lever
    Also enabling throwing slider progress events during lerping by default
    
    Added dial lerping, lerping speed, Finished lerping event
    Also added SetDialAngle function
    
    
    Corrected the HMD offset for the dynamic navigation mesh generation with
    a VRRootComponent.
    
    
    Correcting an oversight where a grip could not simulate on client side
    if replicate movement was never on the object.
    
    Also if a child component is supposed to simulate on drop, we need to also set it clientside
    if the component is not the root component, non root components do not replicate simulation
    state by default so in that case the client also calls it now.
    
    
    Defaulting welding to true for plugin attachment operations, didn't realize that the
    default setting is inverse between c++ and BP.
    
    Fixing socketing by adding a one tick delay after the socket and re-applying
    the relative transform. This is only done if both the parent and the child are simulating
    and is only there to avoid a race condition with the physics thread where the
    original grip constraint can reset the transform out of order prior to destruction.
    
    
    switched sweep detection on grips to component multi instead of sweep single.
    That function automatically accounts for the pivot offset / collision local pose.
    
    
    Worked around a physics replication issue that
    Epic introduced in 4.20, physics replication period is acting kind of badly now. They moved to
    a different (more efficient) system of handling the simulating position replication that
    they ported from Fortnite, however it has some little issues like not ending a targeted
    physics frame position setting when replication is turned on/off / when simulated or
    unsimulated.
    Last edited by mordentral; 06-13-2019, 03:23 PM.

  • replied
    Originally posted by mordentral View Post

    You need to handle a waist estimation with the IK. Good IK systems should already have that?
    Oh okay well I followed some tutorials to get me this far so not entirely sure how to get a waist estimation going.

    Leave a comment:


  • replied
    Originally posted by Redguard10 View Post

    So I figured it out and it works for what I need however I had a question. Im trying to add functionality where the character can bend over but the whole body doesn't follow not sure how to set that up since all I have is the hmd and vive hand controllers. Do I need a waist motion controller? Or is there a way around that. For some reason it wont let me post the reference images. it says they are too large. Let me see if I can add them later.

    You need to handle a waist estimation with the IK. Good IK systems should already have that?

    Leave a comment:


  • replied
    Originally posted by mordentral View Post

    Don't know what you are using for the IK but it may be casting to get the transforms and failing the cast, you will always need the controller transforms as effector locations generally.
    So I figured it out and it works for what I need however I had a question. Im trying to add functionality where the character can bend over but the whole body doesn't follow not sure how to set that up since all I have is the hmd and vive hand controllers. Do I need a waist motion controller? Or is there a way around that. For some reason it wont let me post the reference images. it says they are too large. Let me see if I can add them later.




    Leave a comment:


  • replied
    Originally posted by Rareden View Post

    so they are just using the capacitive touch the thumb buttons and trackpad to create the splay then i presume.
    Currently using a finger solver for controlling them on other controller types and gesture determination from the fingers, im just using the curl data from the openinput to feed into that for index controllers.
    How does your gesture determination work if i may ask? mine currently uses the curl values to determine a gesture, looking to improve it if possible.
    Same thing, just with thresholding and a database to store values / mirror them. I was running off of pure transforms before they started inferring the curl data from them.

    Leave a comment:


  • replied
    Originally posted by mordentral View Post

    Splay doesn't exist on any current controllers, there are three levels of tracking in OpenVR, Estimated (most controllers), Partial (Index with curl), and Full (none currently, but things like gloves and/or leap motion or AR pose tracking could provide).

    Index controllers don't have a splay element, so the splay values will always be empty.

    The hand action has a var "SkeletalTrackingLevel" that you can access to read out, I will need to make a function that retrieves that eventually as well. I'll note that the module is fully compatible with the official Valve plugin, when that one is installed mine turns off the input handling and just acts as a layer on top of it to allow for the gesture / replication / full body posing.
    so they are just using the capacitive touch the thumb buttons and trackpad to create the splay then i presume.
    Currently using a finger solver for controlling them on other controller types and gesture determination from the fingers, im just using the curl data from the openinput to feed into that for index controllers.
    How does your gesture determination work if i may ask? mine currently uses the curl values to determine a gesture, looking to improve it if possible.

    Leave a comment:


  • replied
    Pushed a new commit to both repositories:

    Added some prelim physics changes and replication improvements prior to the more major physics changes coming down

    Patch notes here:
    https://vreue4.com/patch-notes?secti...eanup-06-13-19

    Leave a comment:


  • replied
    Originally posted by Rareden View Post

    thanks, found the node in the template.
    I noticed in the OpenInput plugin the Get finger curl and splay data dosnt seem to have any data in the splay array, is it still in the works?
    Splay doesn't exist on any current controllers, there are three levels of tracking in OpenVR, Estimated (most controllers), Partial (Index with curl), and Full (none currently, but things like gloves and/or leap motion or AR pose tracking could provide).

    Index controllers don't have a splay element, so the splay values will always be empty.

    The hand action has a var "SkeletalTrackingLevel" that you can access to read out, I will need to make a function that retrieves that eventually as well. I'll note that the module is fully compatible with the official Valve plugin, when that one is installed mine turns off the input handling and just acts as a layer on top of it to allow for the gesture / replication / full body posing.
    Last edited by mordentral; 06-13-2019, 08:57 AM.

    Leave a comment:


  • replied
    Originally posted by mordentral View Post

    You can directly poll the controller name from the SteamVRAPI, I have a node for that in the latest template that specifically checks for knuckles. Valve seems to feel that you shouldn't need to know the name in the end and that you should check the TrackingLevel of the controller to deal with differences between them, something that is understandable in theory, but currently not good enough as we still need controller offsets to sync up gripping transforms.

    I'll likely make a controller specific steamVR node that returns the controller type eventually, kind of waiting to see what the name of the index controllers will be in the end so right now its a direct string query.
    thanks, found the node in the template.
    I noticed in the OpenInput plugin the Get finger curl and splay data dosnt seem to have any data in the splay array, is it still in the works?

    Leave a comment:


  • replied
    Originally posted by Rareden View Post
    Is there anything exposed for detecting what VR controllers the client is using? such as knuckles or vive wands.
    i see the GetHMDType but not sure if thats purely headset related
    You can directly poll the controller name from the SteamVRAPI, I have a node for that in the latest template that specifically checks for knuckles. Valve seems to feel that you shouldn't need to know the name in the end and that you should check the TrackingLevel of the controller to deal with differences between them, something that is understandable in theory, but currently not good enough as we still need controller offsets to sync up gripping transforms.

    I'll likely make a controller specific steamVR node that returns the controller type eventually, kind of waiting to see what the name of the index controllers will be in the end so right now its a direct string query.

    Leave a comment:


  • replied
    Is there anything exposed for detecting what VR controllers the client is using? such as knuckles or vive wands.
    i see the GetHMDType but not sure if thats purely headset related

    Leave a comment:


  • replied
    Originally posted by Z-enzyme View Post
    Um, okay, so I decided to add one Grippable component, that is, Grippable Procedural Mesh Component. And, after a day of trial and error (I am definitely NOT a C++ programmer) I succeeded. Also added a copy procedural mesh to grippable procedural mesh so you can slice the proc mesh then copy the other half to grippable proc mesh.

    I have no idea how to add that to the repository, so if anyone wants to help me I'd be glad.
    Mmmmm, is this for a specific reason? Like you wanted the advanced physics options of the interface on a procedural mesh? Because generally you can grip sliced objects without the interface with the naive gripping nodes, the slicer in the template level has that.

    I don't mind adding a procedural mesh grip, it just needs some more work than other things since when it actually gets sliced the body changes and has to be re-initialized. Also it would be better to actually have a slicing function that directly creates a grippable version instead of creating a proxy and copying the mesh data over.

    Just want some more information on why you needed it before merging the files from the PM you sent me or iterating over them with some improvements.

    *Edit* Also for the record things like this I am more than willing to do, though i'm sure it was helpful to do it yourself to learn how the grippables are modified.
    Last edited by mordentral; 06-10-2019, 08:30 PM.

    Leave a comment:


  • replied
    Um, okay, so I decided to add one Grippable component, that is, Grippable Procedural Mesh Component. And, after a day of trial and error (I am definitely NOT a C++ programmer) I succeeded. Also added a copy procedural mesh to grippable procedural mesh so you can slice the proc mesh then copy the other half to grippable proc mesh.

    I have no idea how to add that to the repository, so if anyone wants to help me I'd be glad.

    Leave a comment:


  • replied
    Originally posted by Redguard10 View Post
    So I got it to work by feeding in the location based of the motion controller transforms into the modify bone in the Anim. However when I made my other ik bodies i didn't have to do that so not sure why I had to add that in now.
    Don't know what you are using for the IK but it may be casting to get the transforms and failing the cast, you will always need the controller transforms as effector locations generally.

    Leave a comment:


  • replied
    So I got it to work by feeding in the location based of the motion controller transforms into the modify bone in the Anim. However when I made my other ik bodies i didn't have to do that so not sure why I had to add that in now.

    Leave a comment:

Working...
X