Announcement

Collapse
No announcement yet.

VR Expansion Plugin

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

    Originally posted by delphe_01 View Post

    I think i meant the physical hands. (hand curls around pickup object) Does only work on the right hand right now.

    The other thing i meant was simply the close hands animation without grabbing any object whitch dont fire off somehow, u kno?

    And one other thing: I can´t find the swingingArms movement nodes. They are in the vive_pawn BP?

    Thanks again!
    No the curl hands work with both? You may need to pull a newer template, the initial port to 4.25 I committed a broken version were I was testing something out and it was in both 4.24 and 4.25 for a day.

    As for the closing hands animation, just set one up in the animbp, i didn't put them into the grasping hands as they aren't based on the epic template setup and can support full curls.

    Swinging is checked on tick, check the handle movement functions.


    Consider supporting me on patreon

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

    Comment


      Originally posted by mordentral View Post

      Swinging is checked on tick, check the handle movement functions.
      Is it the HandleSlidingMovement maybe? Can´t find any functions called ArmSwing or so..

      Originally posted by mordentral View Post

      No the curl hands work with both? You may need to pull a newer template, the initial port to 4.25 I committed a broken version were I was testing something out and it was in both 4.24 and 4.25 for a day.

      As for the closing hands animation, just set one up in the animbp, i didn't put them into the grasping hands as they aren't based on the epic template setup and can support full curls.
      I thought i had the newest version. From about 6 days ago? Maybe i broke something while messing around with the animation BP for the closing hands animation. Didn´t really get there
      Attached Files

      Comment


        Hi all,
        I am having some issues with fully replicating the VR Character between multiple VR players, hopefully someone can help me figure out what I'm doing wrong.

        The basic replication works great, i.e. players can see each other moving around, moving their hands, grabbing stuff etc. However I am not able to figure out how to achieve reliably replicated movement.
        When the player presses a button I am calling "PerformMoveActionTeleport" and "PerformMoveActionSnapTurn" via Blueprint. This works fine most of the time with the resulting movement being correctly replicated to all other clients. Sometimes however my movement input is just completely discarded and nothing happens. Every time this occurs I get a "LogVRCharacterMovement: ServerMove: TimeStamp expired: [...]" log entry on my server. Shouldn't the move action system re-send the movement command in this case? I can imagine this isn't a huge deal with any continuous movement mode, but for single action moves like teleportation or snap turns this feels really unresponsive for the user.

        I'm not quite sure if this is related to my issue, but while trying to figure out what's happening there I noticed that the "OnCharacterTeleported_Bind" delegate is fired every tick on a VR client, even though the client has not sent any movement input.

        Comment


          Originally posted by ThreeDee Florett View Post
          Hi all,
          I am having some issues with fully replicating the VR Character between multiple VR players, hopefully someone can help me figure out what I'm doing wrong.

          The basic replication works great, i.e. players can see each other moving around, moving their hands, grabbing stuff etc. However I am not able to figure out how to achieve reliably replicated movement.
          When the player presses a button I am calling "PerformMoveActionTeleport" and "PerformMoveActionSnapTurn" via Blueprint. This works fine most of the time with the resulting movement being correctly replicated to all other clients. Sometimes however my movement input is just completely discarded and nothing happens. Every time this occurs I get a "LogVRCharacterMovement: ServerMove: TimeStamp expired: [...]" log entry on my server. Shouldn't the move action system re-send the movement command in this case? I can imagine this isn't a huge deal with any continuous movement mode, but for single action moves like teleportation or snap turns this feels really unresponsive for the user.

          I'm not quite sure if this is related to my issue, but while trying to figure out what's happening there I noticed that the "OnCharacterTeleported_Bind" delegate is fired every tick on a VR client, even though the client has not sent any movement input.
          That sounds like a flag not clearing (either from it not nulling or you calling the function repeatedly), are you sure that your logic is correct for the teleport? If so, i'll need a reproduction of what you are doing that triggers it.

          Timestamp expired would lead me to believe that you are looping movement inputs somehow and the server is lagging behind and not catching up to them. (network saturation or packet loss or incorrect input usage). I'll note that when the server "corrects" a client, they receive the OnTeleported message as well in order to handle logic about the new position (I am open to revising this to only happen on actual teleports if it is causing issues and to throw a seperate Servercorrection event or something).

          *Edit* would also need to know what engine version you are on.
          Last edited by mordentral; 05-12-2020, 08:24 AM.


          Consider supporting me on patreon

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

          Comment


            Thank you for the quick reply.

            Sorry about the missing engine version, should have included that right away. I'm using a source build forked from the latest 4.24 release but it should be identical to the binary version, only change I made is that I need to be able to package a dedicated server.

            As there's always some room for error I can't say I am 100% sure my teleport logic is correct, but it is working correctly in standalone and in local multiplayer so I guess this should translate into it working on a dedicated server aswell. I will try to reproduce my issue with a very simple teleport logic to be sure it's not my code being buggy. My snap turn logic on the other hand already is as simple as possible: PlayerController receives an InputAction, calls an Event on my Pawn in which the PerformMoveAction is called, so there should be no looping inputs or such. I also checked my logs to confirm this event is executed exactly once.

            I'll look into why my server has to correct the client position every tick, this shouldn't be happening and probably might be causing network saturation I guess.

            Comment


              Originally posted by ThreeDee Florett View Post
              Thank you for the quick reply.

              Sorry about the missing engine version, should have included that right away. I'm using a source build forked from the latest 4.24 release but it should be identical to the binary version, only change I made is that I need to be able to package a dedicated server.

              As there's always some room for error I can't say I am 100% sure my teleport logic is correct, but it is working correctly in standalone and in local multiplayer so I guess this should translate into it working on a dedicated server aswell. I will try to reproduce my issue with a very simple teleport logic to be sure it's not my code being buggy. My snap turn logic on the other hand already is as simple as possible: PlayerController receives an InputAction, calls an Event on my Pawn in which the PerformMoveAction is called, so there should be no looping inputs or such. I also checked my logs to confirm this event is executed exactly once.

              I'll look into why my server has to correct the client position every tick, this shouldn't be happening and probably might be causing network saturation I guess.
              Generally constant corrections is either severe packet loss, or improperly moving out of line with the movement component.

              I put out a question to my community on discord if they think I should move to two seperate events for server correction there, that is kind of confusing how it currently works.


              Consider supporting me on patreon

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

              Comment


                Originally posted by mordentral View Post


                For the physics interactions, by default collision feedback with physics objects is disabled as it can fling characters around and cause a lot of VR issues, you can re-enable it by following the second reference here: https://vreue4.com/documentation?section=character-tips


                2/3. Are you using the actual VRDialComponent base class? It doesn't sound like it there, as that sounds like a physics dial without an angular offset on the constraint component, so I think you are using the blueprint mockup in physics mode and not the actual VRDialComponent. That mockup just shows how you could do it with physics, it doesn't use all of the component settings in physics mode.

                The actual component has these functions in it:

                Code:
                    // Can be called to recalculate the dial angle after you move it if you want different values
                    UFUNCTION(BlueprintCallable, Category = "VRLeverComponent")
                        void AddDialAngle(float DialAngleDelta, bool bCallEvents = false, bool bSkipSettingRot = false);
                
                    // Directly sets the dial angle, still obeys maximum limits and snapping though
                    UFUNCTION(BlueprintCallable, Category = "VRLeverComponent")
                        void SetDialAngle(float DialAngle, bool bCallEvents = false);

                Also what rotation axis are you trying to use?



                Yes, im using the normal VRDial component. Heres the setup:


                However, this has been changed since i last posted that messgae. I swapped it from 90 Counterclockwise to 90 clockwise, and what happended was even weirder.

                It rotates 90 degrees clockwise correctly. However, despite having 0 on the Counterclockwise dial angle, it still moves 180degrees in the counter clockwise direction. This is similar to before however, as i had 90 in the counterclockwise direction yet it still moved 180 degrees. I really dontknow whats causing it.

                And no, im not using your oringinal example, this was a component i added into an actor ( i couldnt screenshot it as it exceeds the limit 0f 585kb.)

                Comment


                  Originally posted by NebulyDev View Post




                  Yes, im using the normal VRDial component. Heres the setup:

                  However, this has been changed since i last posted that messgae. I swapped it from 90 Counterclockwise to 90 clockwise, and what happended was even weirder.

                  It rotates 90 degrees clockwise correctly. However, despite having 0 on the Counterclockwise dial angle, it still moves 180degrees in the counter clockwise direction. This is similar to before however, as i had 90 in the counterclockwise direction yet it still moved 180 degrees. I really dontknow whats causing it.

                  And no, im not using your oringinal example, this was a component i added into an actor ( i couldnt screenshot it as it exceeds the limit 0f 585kb.)
                  Ok, thanks, I was able to reproduce. I'll have to track down what is going on, it didn't used to do this and there aren't many recent commits to that object.


                  Consider supporting me on patreon

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

                  Comment


                    Originally posted by NebulyDev View Post
                    --
                    I just pushed a patch that should fix that for you, let me know how it behaves now.

                    I also added a bUseRollover setting that lets you increment the dial to abstract limits on positive and negative direction.

                    https://i.imgur.com/zyjoSsR.mp4


                    Consider supporting me on patreon

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

                    Comment


                      This plugin is great and I want to thank Mordentral for his extensive work. I am currently using the plugin for a project and I am making progress very fast. I have a burning question for the author, is there an easy way or maybe a suggestion to how the object grabbing from a distance can replicate on the server if the client performs this action?

                      Comment


                        Originally posted by MadSeb View Post
                        This plugin is great and I want to thank Mordentral for his extensive work. I am currently using the plugin for a project and I am making progress very fast. I have a burning question for the author, is there an easy way or maybe a suggestion to how the object grabbing from a distance can replicate on the server if the client performs this action?
                        There are a few ways.

                        1. You can use a LerpToHand grip script to have it lerp to the player post grip.

                        2. Have a grip pivot at the end of something and then bring it in manually

                        3. Lerp the object back and grip it at the end of the lerp.

                        If you are talking about the laser beam "toss" in 4.25+, then that is a bit more fickle, you would have to run the logic entirely server side and I wouldn't do any of the hand adjustments that it currently does but just run it once so it maintains the arc. Otherwise you'll have to get into removing its physics replication and running the logic on all ends, or syncing things.

                        *Edit* I did modify it a bit to be server side and use a client request, in the end this logic would probably want to be in a manager component in the character or something instead of in the teleport controller, right now its a proof of concept for people.
                        Last edited by mordentral; 05-14-2020, 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

                          There are a few ways.

                          1. You can use a LerpToHand grip script to have it lerp to the player post grip.

                          2. Have a grip pivot at the end of something and then bring it in manually

                          3. Lerp the object back and grip it at the end of the lerp.

                          If you are talking about the laser beam "toss" in 4.25+, then that is a bit more fickle, you would have to run the logic entirely server side and I wouldn't do any of the hand adjustments that it currently does but just run it once so it maintains the arc. Otherwise you'll have to get into removing its physics replication and running the logic on all ends, or syncing things.

                          *Edit* I did modify it a bit to be server side and use a client request, in the end this logic would probably want to be in a manager component in the character or something instead of in the teleport controller, right now its a proof of concept for people.

                          Thanks for the quick reply. I was referring to the laser beam "toss" and I think it's a very good mechanic. I will try to use your advice and make it work.

                          Comment


                            Originally posted by MadSeb View Post


                            Thanks for the quick reply. I was referring to the laser beam "toss" and I think it's a very good mechanic. I will try to use your advice and make it work.
                            The very latest has a bit of a setup for that, though rough.


                            Consider supporting me on patreon

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

                            Comment


                              Hi again,
                              Originally posted by mordentral View Post

                              No the curl hands work with both? You may need to pull a newer template, the initial port to 4.25 I committed a broken version were I was testing something out and it was in both 4.24 and 4.25 for a day.

                              As for the closing hands animation, just set one up in the animbp, i didn't put them into the grasping hands as they aren't based on the epic template setup and can support full curls.

                              Swinging is checked on tick, check the handle movement functions.
                              Hi again,
                              if you find the time, can you post some screenshots on where i find the armswing nodes? Still didn´t got there..

                              Thanks in advance and have a nice weekend!

                              Edit: ah i see in the new example template the left hand seems fixed. Nice!
                              Last edited by delphe_01; 05-15-2020, 10:01 AM.

                              Comment


                                Originally posted by delphe_01 View Post
                                Hi again,

                                Hi again,
                                if you find the time, can you post some screenshots on where i find the armswing nodes? Still didn´t got there..

                                Thanks in advance and have a nice weekend!

                                Edit: ah i see in the new example template the left hand seems fixed. Nice!
                                https://i.imgur.com/BQNQJkd.png

                                The relative velocities are updated in one of the tick functions if the movement mode requires them. I have a task card to go in and change how armswing handles its facing soon as well.


                                Consider supporting me on patreon

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

                                Comment

                                Working...
                                X