Announcement

Collapse
No announcement yet.

VR Expansion Plugin

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

    Originally posted by mordentral View Post

    It is spawning spline mesh components to follow the curvature of the spline, you'll have to set the material (or a material property) for them.
    Thank you, got it. For anyone interested, 'Add Spline Mesh Component' is what to search the BPs for.

    Comment


      Originally posted by akjim View Post
      Hi mordentral,

      Sorry I have a question again. I am using your plugin and added a skeletal mesh on the Vive_PawnCharacter with basic IK redirecting the hand location to my motion controller while I am holding nothing and to a socket on a static mesh while I am holding a gun (the static mesh).
      I noticed the IK was slightly delayed when the motion controller transform was plugged in the FABRIK node and it is fine.
      But severe delay occurs when I plugging in the transform of the socket on the gun static mesh and it is very noticeable.
      The problem get worst when I am holding the gun and moving around the map with DpadHover movement and the hand absolutely could not stick with the socket transform.
      Is there any way to let the hand keep up with the gun especially when I am travelling in the map?

      Thanks in advance!
      the held object is being late update transformed, you would have to disable late updates on the grip or the motion controller in general.

      IK is being run in the game thread, which is 1-1.5 (or even 2) frames behind what late update does visually.

      Also dpad movement means that you want to pull your animation offsets after the character movement completes, I am actually not very sure how animation graphs handle execution order (or if they even do).


      *Edit* I'll note that at least one other plugin user is already doing this with the physics grips to block hands with the object itself, its a neat effect, but I would highly suggest ghosting the controllers when position gets out of sync so that players don't feel hand eye disassociation.
      Last edited by mordentral; 04-23-2018, 09:35 AM.


      Consider supporting me on patreon

      My Open source tools and plugins
      Advanced Sessions Plugin
      VR Expansion Plugin

      Comment


        Originally posted by mordentral View Post

        the held object is being late update transformed, you would have to disable late updates on the grip or the motion controller in general.

        IK is being run in the game thread, which is 1-1.5 (or even 2) frames behind what late update does visually.

        Also dpad movement means that you want to pull your animation offsets after the character movement completes, I am actually not very sure how animation graphs handle execution order (or if they even do).


        *Edit* I'll note that at least one other plugin user is already doing this with the physics grips to block hands with the object itself, its a neat effect, but I would highly suggest ghosting the controllers when position gets out of sync so that players don't feel hand eye disassociation.
        Thanks for the quick reply!
        What do you mean ghosting the controller? And for the blocking to occur with the object it mean I will have to make both bodies rigid and blocking each other by physics?

        Comment


          Originally posted by akjim View Post

          Thanks for the quick reply!
          What do you mean ghosting the controller? And for the blocking to occur with the object it mean I will have to make both bodies rigid and blocking each other by physics?
          Another mesh attached to the motion controller that "ghosts in" (changes transparency) depending on distance from the IK hand.

          And no, I meant the hand mesh/ik being moved with the held object means that when the held object is blocked by geometry that the hand will also stop (if you are using physics grips, which all grips are by default in the plugin).


          Consider supporting me on patreon

          My Open source tools and plugins
          Advanced Sessions Plugin
          VR Expansion Plugin

          Comment


            Pushed some minor updates live to the repositories, have been looking into new gripping system concepts again so actual large systemic changes have been put aside for a bit.



            Template

            Code:
            Updated the pixel density slider to show percentages and be 4 digit precision, helps people visualize
            how to properly use the command.
            
            Set the default example gun in the template to ignore gravity (in grip settings), hate the slight offset.
            
            Added thumbstick deadzone variable to the vive pawn for sliding movement, the deadzone ability was always there
            but I never made a variable for people to easily modify it (defaulted off 0.0f)
            
            Started some touch profile input overrides, Template should have profile examples, been really busy
            with backend work and didn't get around to it before.
            
            Added a pre-check for bDenyGripping on client side before trying to RPC a grip request to the server, saves some 
            bandwidth.
            
            Now using newer openvrhmddevicetype node at init to more cleanly detect HMD type in the template.

            Plugin

            Code:
            Merged with LeverRepTest beta branch, should enable proper replication of initial lever RelativeTransform to clients. 
            Needs some more testing but will be ported to other interactibles once proven solid.
            
            Post teleport move now uses the new setting for motion controllers that delays the teleport until the next grip tick.
            This ensures that the teleport uses the correct final transform and is post all character movements.
            
            Per bone gripping constraint distance for auto dropping made to be off of the bones specific location,
            not the root bones location. This was missed when adding per bone gripping, could cause grips very far from the root
            bone to auto drop if per bone gripping was enabled.
            
            Exposed the physics constraint creation / movement / destruction to BP for custom
            grips to make use of.


            Consider supporting me on patreon

            My Open source tools and plugins
            Advanced Sessions Plugin
            VR Expansion Plugin

            Comment


              Would love to know more about VRLever component and it's XY axis setting. When picking up only one axis to follow, current angle returns either positive and negative values, which are great for, for instance an input/controller mechanic. Whereas when going with XY Axis setting it will always return positive angle value no matter the rotation of the lever. I've noticed the comment in the plugin code, however is there a way to actually make it work so it'd return positive and negative values based on both X and Y axis' ?
              VR/AR Development [Portfolio | YouTube | LinkedIn]

              Comment


                Click image for larger version

Name:	image_136185.jpg
Views:	14
Size:	90.7 KB
ID:	1466451
                Hello mordental,
                I was working with a flat widget for my widget class and your laser is working great for selection of the button.
                But I changed my widget to a geometry Mode Cylinder and your laser beam is colliding not the curved surface of the widget but a ghost invisible flat surface of the widget.
                see here with the debug (in Blue) the endpoint is hitting the curved surface and your laser in red stop on that flat surface as if the widget was flat.
                Do you have a solution for that ?
                thank you.

                Comment


                  Originally posted by Shin_ji View Post
                  Would love to know more about VRLever component and it's XY axis setting. When picking up only one axis to follow, current angle returns either positive and negative values, which are great for, for instance an input/controller mechanic. Whereas when going with XY Axis setting it will always return positive angle value no matter the rotation of the lever. I've noticed the comment in the plugin code, however is there a way to actually make it work so it'd return positive and negative values based on both X and Y axis' ?
                  XY setting returns the levers facing normal (seperate variable), and then the angle is the angle in that direction.

                  A singular angle can't represent XY since X could be + and Y could be - at the same time.



                  This way you can translate that 2D plane normal into a direction, and angle into a magnitude.

                  *Edit*

                  // Bearing Direction, for X/Y is their signed direction, for XY mode it is an actual 2D directional vector
                  FVector CurrentLeverForwardVector;

                  That variable to be specific, it is an FVector instead of an FVector2D to make using it simple (just multiply into other vectors).
                  Last edited by mordentral; 04-25-2018, 09:26 AM.


                  Consider supporting me on patreon

                  My Open source tools and plugins
                  Advanced Sessions Plugin
                  VR Expansion Plugin

                  Comment


                    Originally posted by J_Tox View Post
                    Click image for larger version  Name:	image_136185.jpg Views:	1 Size:	90.7 KB ID:	1466451
                    Hello mordental,
                    I was working with a flat widget for my widget class and your laser is working great for selection of the button.
                    But I changed my widget to a geometry Mode Cylinder and your laser beam is colliding not the curved surface of the widget but a ghost invisible flat surface of the widget.
                    see here with the debug (in Blue) the endpoint is hitting the curved surface and your laser in red stop on that flat surface as if the widget was flat.
                    Do you have a solution for that ?
                    thank you.
                    The laser is hitting the collision geometry, there isn't much to do there unless you override how the component generates its collision. You can fake it for cylinder ones by progressing the pointer forward but not sure that is worth it.


                    This shows the collision on it if you are curious

                    Last edited by mordentral; 04-25-2018, 09:49 AM.


                    Consider supporting me on patreon

                    My Open source tools and plugins
                    Advanced Sessions Plugin
                    VR Expansion Plugin

                    Comment


                      Thank you for your Light !

                      Comment


                        Pushed a commit to the master (4.19) branch

                        Code:
                         Adding Ids to the grip structure, need to expand on their use  
                        
                         it was possible to drop the wrong grip if it is replacing one that had the same  
                         object.  
                        
                         Should also start limiting how fast someone can grip/drop something    
                        
                         Hashing the ID was overkill, incrementing a uint8 now, which should be fine  
                         as I can't see anyone going over 256 concurrent grips per hand (if they do...well they will have  
                         to make it a uint16).  
                        
                         This works because the uint8 will wrap around back to 0 when it hits Max_Value + 1  
                         due to the modulo operation that is performed. Apparantly this is NOT undefined behavior  
                         for unsigned variables like it is for signed..live and learn.  
                        
                         Also set the drop to pause a grip instead of removing it from the arrya, which rarely caused some  
                         corruption. This lets normal replication remove it from the array instead.  
                        
                         Also now searching for other grips with the same object in both arrays, if one is found then it  
                         skips some of the init dropping functions that would screw with the other grip (this shouldn't happen  
                         but who knows...)    
                         Adds new GetGripByID node, this is safer than GetGripByObject if you are referencing a grip already.

                        TL;DR when picking up and dropping items as fast as you could (like..really fast, 1 grip/drop per frame levels of speed), it was remotely possible to get a client to receive a drop and grip notice for the same object at the same time since grips were defined solely by the object they were holding, this could result in deleting a fresh grip and the client having an empty grip array and the server having a 1 grip array (server thinks that the replication is done and doesn't update the client again).

                        Now it only drops if the Incremental ID matches, and the drop RPC in the template passes that ID in instead of the object as well, also I am no longer forcing a drop client side (early out to stop tick grip happening on it after drop if the array hasn't repped yet), now I am just pausing the grip since that functionality exists now which lets the server fully auth the grip array
                        Last edited by mordentral; 04-26-2018, 09:16 AM.


                        Consider supporting me on patreon

                        My Open source tools and plugins
                        Advanced Sessions Plugin
                        VR Expansion Plugin

                        Comment


                          Man why is 60% of everything in template needed for climbing? can you please make different templates that only have the required functions for the specific thing for example 1 template for movement with controllers only, no grabbing or nothing, and one template for climbing only, one for grabbing things and so on, like making it more easy to get started. I really want to use your plugin but i cant get started cuss its a mess in the template and unreadable i don't know what is needed for what or anything, this would help so many beginner VR developers to get started with your plugin.
                          My website: https://www.pijellypin.com
                          Multiplayer Components: https://www.unrealengine.com/marketp...yer-components

                          Comment


                            Originally posted by VirtueeL View Post
                            Man why is 60% of everything in template needed for climbing? can you please make different templates that only have the required functions for the specific thing for example 1 template for movement with controllers only, no grabbing or nothing, and one template for climbing only, one for grabbing things and so on, like making it more easy to get started. I really want to use your plugin but i cant get started cuss its a mess in the template and unreadable i don't know what is needed for what or anything, this would help so many beginner VR developers to get started with your plugin.
                            With all due respect, the plugin in general isn't intended for beginner devs, and upkeeping multiple templates is outside of my time constraints.

                            The template is typically showing some of the more complicated features and how to implement them, for experienced devs. Very basic stuff is attainable without all of the framework, but I don't have time to specifically tutorial out each element at this time.

                            You have been complaining about my plugin for months now, months you could have used to either learn enough to use it, or move on and do something yourself instead,

                            You also seem to be heavily confusing the TEMPLATE with the PLUGIN, which are not the same thing, And climbing in general does not take "60%" of the template to use, it is two functions and some control variables.
                            Last edited by mordentral; 04-26-2018, 05:45 PM.


                            Consider supporting me on patreon

                            My Open source tools and plugins
                            Advanced Sessions Plugin
                            VR Expansion Plugin

                            Comment


                              Originally posted by mordentral View Post

                              With all due respect, the plugin in general isn't intended for beginner devs, and upkeeping multiple templates is outside of my time constraints.

                              The template is typically showing some of the more complicated features and how to implement them, for experienced devs. Very basic stuff is attainable without all of the framework, but I don't have time to specifically tutorial out each element at this time.

                              You have been complaining about my plugin for months now, months you could have used to either learn enough to use it, or move on and do something yourself instead,

                              You also seem to be heavily confusing the TEMPLATE with the PLUGIN, which are not the same thing, And climbing in general does not take "60%" of the template to use, it is two functions and some control variables.
                              i love the plugin but wish there was more tutorials / documentation
                              My website: https://www.pijellypin.com
                              Multiplayer Components: https://www.unrealengine.com/marketp...yer-components

                              Comment


                                Pushed a new commit to the repository (minor)


                                Code:
                                 Split grip IDs between local and remote for clients  
                                
                                 Client local grips run 128 - 255  
                                 Client remote grips run 0-127  
                                
                                 This lets me use the same variable but not overlap IDs across client controlled  
                                 local grips and server controlled remote grips.  
                                
                                 Server doesn't care and uses full scale between them as it is authority  
                                 for both local and remote grips for its own pawn.  
                                  Grip IDs are local to the motion controller they are being used for, there can be ID overlap across motion controllers
                                (to keep replication costs down).    
                                
                                Made the button components IsValidOverlap function blueprint overridable so people can allow set objects to toggle buttons
                                instead of just things attached to / held by the motion controllers.  Fixed a bug with button overlap filtering that wasn't
                                allowing some held grippables through for overlapping.  
                                
                                 Added a bSkipOverlapFiltering option to the button component that skips all  
                                 filtering and just lets collision channels handle what can toggle the button.


                                Consider supporting me on patreon

                                My Open source tools and plugins
                                Advanced Sessions Plugin
                                VR Expansion Plugin

                                Comment

                                Working...
                                X