Announcement

Collapse
No announcement yet.

VR Expansion Plugin

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

  • I would like to note that I did finally get around to testing on 2017 and it all compiles fine, you just have to make sure that the editor is set to use Visual Studio 2017 and re-generate the solution so that it is correctly set up.

    Originally posted by alltrueist View Post
    Hi Mordentral.

    I'm running into a issue with using SimpleVRCharacter with an IK plugin I'm using. The plugin apparently uses the actor/capsule forward vector for things like knee pole vector positioning, and SimpleVRCharacter is currently only moving the capsule around according to the HMD transform and not rotating it when moving around in roomscale. This is causing the pole vector locations to appear locked to the original yaw orientation for knees with the IK setup. I'm wondering if there is any way with the plugin to also have the capsule yaw rotation aligned with HMD and not just position for room scale movement? I tried adding my own yaw rotation to the actor/capsule via the HMD on tick in blueprint, but it caused a double rotation.
    Oh, something else, if it just pulls rotation from what it is attached to, then attach it to the ParentRelativeComponent instead of the root capsule.
    Last edited by mordentral; 04-18-2017, 02:33 PM.


    Consider supporting me on patreon

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

    Comment


    • Hi Mordentral,

      Many thank you for your plugin, it has been great to play with. I have a question regarding the Rift and your plugin, do the Run in Place/Arm swing work with touch controllers as they do for vive controllers? If not, is that mechanic possible with the rift?

      Comment


      • Originally posted by darinsmyth View Post
        Hi Mordentral,

        Many thank you for your plugin, it has been great to play with. I have a question regarding the Rift and your plugin, do the Run in Place/Arm swing work with touch controllers as they do for vive controllers? If not, is that mechanic possible with the rift?
        It should work the same yes, button mappings in the template are likely to be wrong for Oculus since I don't own any of their hardware anymore but that is obviously fixable.


        Consider supporting me on patreon

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

        Comment


        • Originally posted by mordentral View Post
          Not without breaking a lot of what epic set up for VR behavior (room scale bounds for one, they will rotate with you then which is incorrect, though I guess they are likely already incorrect for simplechar). Also driving view rotation off of character in a networked environment was not something I felt comfortable doing.

          If your IK plugin does not have a variable to expose to drive different elements than I suggest you contact the dev and ask for some, because a closed IK system is not exactly suited to VR (or lots of other uses honestly). Generally any good IK system should allow you to pass in your own Forward vector....which would be the VRForwardVector. Without that, it is incompatible with literally every VR setup currently in use in the engine.

          I could maybe add an optional rotate with HMD option, but like I said, I don't like the concept currently.
          Ok, makes sense. It wasn't the capsule forward vector it was using, but the knee bones' forward vector according to the character input anim, and I was confused because there is basically no input anim, so just the T pose. Yesterday, I was able to get around this issue by just rotating my skeletal mesh T pose, in the anim graph before the IK does it's thing. So far it's working for me. In the worst case I can just make my own look at behavior for the knees. Out of curiosity would VRCharacter have this room scale capsule rotation capability, or same behavior there?
          Last edited by alltrueist; 04-18-2017, 10:33 PM.

          Comment


          • Originally posted by alltrueist View Post
            Ok, makes sense. It wasn't the capsule forward vector it was using, but the knee bones' forward vector according to the character input anim, and I was confused because there is basically no input anim, so just the T pose. Yesterday, I was able to get around this issue by just rotating my skeletal mesh T pose, in the anim graph before the IK does it's thing. So far it's working for me. In the worst case I can just make my own look at behavior for the knees. Out of curiosity would VRCharacter have this room scale capsule rotation capability, or same behavior there?
            Yeah VRCharacter doesn't move the root itself, it moves the physical representation of it in the physics scene and uses the offset location in every function instead of the actual actors location. It far more complicated but allows for some additional features, it still doesn't rotate the actor with it though.

            Like I said in my second reply though (you may have missed it), if the problem is the skeletal mesh having to have a rotation (IE, be parented to something that follows rotation), use a Parent Relative Attachment attached to the camera and place the skeletal mesh under that. The whole point of the parent relative attachment is to provide a solid base for Bodies and waists and chests and such and to rotate them with the YAW/Z axis of the head.


            Consider supporting me on patreon

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

            Comment


            • Pushed a new commit to the Plugin


              Code:
              Using override CallServerMove now instead of custom function
              
              New grip type Beta InteractiveHybridGripWithPhysics (when not colliding this grip makes the constraint stiffness 10x what the setting is so the object matches the hand more closely)
              
              Moved some magic numbers up into const static variables in motion controller component
              
              Some bWalkingCollisionOverride fixes, needed to manually check for walking movement mode to ensure
              that it can't run during falling and the like. Removed checking for it in floor find function.
              
              Fixed having actor grips stop simulation on ALL components during grip with physics only.
              Should only stop simulating the root comp now.
              
              Made the notify grip and notify drop functions slightly more performant (can be even better but low priority)
              
              Added ability to set a grips Stiffness and Damping after grip.
              *Edit 04/20/2017 Pushed another commit to the plugin (Trying to get small bugs and cleanup done before 4.16 so the locked 4.15 branch is as stable as possible).

              Code:
              Fixed server sided navigation, client side was overwriting it.
              (Still think client side is way to go for VR).
              
              Removed extra code in GripNotify function now that is has been cleaned up.
              
              Added some explanation to the LocalOnly_Not_Replicated grip replication mode.
              Both in comments in source and on the wiki.
              Last edited by mordentral; 04-20-2017, 01:23 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
                Yeah VRCharacter doesn't move the root itself, it moves the physical representation of it in the physics scene and uses the offset location in every function instead of the actual actors location. It far more complicated but allows for some additional features, it still doesn't rotate the actor with it though.

                Like I said in my second reply though (you may have missed it), if the problem is the skeletal mesh having to have a rotation (IE, be parented to something that follows rotation), use a Parent Relative Attachment attached to the camera and place the skeletal mesh under that. The whole point of the parent relative attachment is to provide a solid base for Bodies and waists and chests and such and to rotate them with the YAW/Z axis of the head.
                I had tried using the parentRelativeAttachment before, and would love to use it, but the issue for me is that I need to drive the base body movement from the pelvis and not the head. Otherwise my IK looks funky because when I rotate my head the whole underlying animation is rotated.

                I tried adding an extra parentRelativeAttachment component besides the inherited one, and attaching it beneath my pelvis tracker in hopes that it would use that as the parent, but it still seems tied to the HMD as the parent. Is there any way to make it accept any parent rather than just HMD? I think if I could have the pelvis tracker as parent it would work well for my body tracking setup.
                Last edited by alltrueist; 04-21-2017, 07:58 AM.

                Comment


                • Originally posted by alltrueist View Post
                  I had tried using the parentRelativeAttachment before, and would love to use it, but the issue for me is that I need to drive the base body movement from the pelvis and not the head. Otherwise my IK looks funky because when I rotate my head the whole underlying animation is rotated.

                  I tried adding an extra parentRelativeAttachment component besides the inherited one, and attaching it beneath my pelvis tracker in hopes that it would use that as the parent, but it still seems tied to the HMD as the parent. Is there any way to make it accept any parent rather than just HMD? I think if I could have the pelvis tracker as parent it would work well for my body tracking setup.
                  Mmmm, forgot that with that many trackers that you would be using a pelvis tracker. The problem is that with a pelvis tracker I need to do the orientation math differently and it has to be based off of the initial position of the tracker (trackers aren't attached facing up for the waist and aren't at center of mass but rather at rear or front of body).

                  I was going to start working on that anyway because my capsule location needs to have the option to work off of a tracker for waist tracking. It will just take some calibration functions or properties to manage (tracker relative location / rotation around capsule, ect).

                  I should have something done this weekend, had to get my trackers functional again.


                  Consider supporting me on patreon

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

                  Comment


                  • Hello Mordentral! I have a question about VR Character. Would it be possible for users to set the VRCharacter to move the root as well?
                    If I am correct, when anything is attempting to get the world location/forward vector of the VRCharacter, it can't just generically get the actor's location, it needs to cast specifically to VRCharacterPawn and get the VRLocation/VRForwardVector.

                    If people want to avoid this, is the only real option to use the VR Simple Character instead?
                    Michael Wentworth-Bell
                    VR Designer working on Espire 1 - VR Stealth game: Espire1.com
                    Melbourne, Australia

                    Comment


                    • Originally posted by michaelwbell View Post
                      Hello Mordentral! I have a question about VR Character. Would it be possible for users to set the VRCharacter to move the root as well?
                      If I am correct, when anything is attempting to get the world location/forward vector of the VRCharacter, it can't just generically get the actor's location, it needs to cast specifically to VRCharacterPawn and get the VRLocation/VRForwardVector.

                      If people want to avoid this, is the only real option to use the VR Simple Character instead?
                      There would be no point to VRCharacter moving the root, it would be the same as SimpleVRCharacter then (and lose a couple of features like bWalkingCollisionOverride and the capsule head offset).

                      I will note that most VR setups in engine (including epics) have that same Actor location limitation that VRCharacter does, Simple character, while it solves that can't use those two specific extra features.

                      Also the Simple character doesn't rotate the actor anyway, you would still need to use the VRForwardVector.

                      *Edit* I may look into an optional camera to actor rotation for the simple character, however it will break some things like epics teleport system and their chaperone component.
                      Last edited by mordentral; 04-21-2017, 11:57 AM.


                      Consider supporting me on patreon

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

                      Comment


                      • Is there a way to disable the step up on feature? I love the climbing and grip systems but would like to disable stepping up on the stuff you are climbing and make the player do it the old fashioned way ;D

                        Comment


                        • Originally posted by MagusShade View Post
                          Is there a way to disable the step up on feature? I love the climbing and grip systems but would like to disable stepping up on the stuff you are climbing and make the player do it the old fashioned way ;D
                          You mean like have to throw themselves up onto stuff?

                          Set the climbing step up height to 0.0f. That should make it impossible to actually be able to step up while climbing, that value is "max height for step up" so at 0.0f you can never actually step up unless its a flat plane with you.

                          96.0f or so would let them step up from waist height on the other hand.
                          Last edited by mordentral; 04-21-2017, 12:28 PM.


                          Consider supporting me on patreon

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

                          Comment


                          • where is the climbing step up height variable located? I was looking in Vive_PawnCharacter but i couldn't find it

                            Comment


                            • Originally posted by MagusShade View Post
                              where is the climbing step up height variable located? I was looking in Vive_PawnCharacter but i couldn't find it
                              PHP Code:
                                  // Height to auto step up
                                  
                              UPROPERTY(EditAnywhereBlueprintReadWriteCategory "VRMovement|Climbing")
                                      
                              float VRClimbingStepHeight
                              Its in the movement component


                              Consider supporting me on patreon

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

                              Comment


                              • Originally posted by mordentral View Post
                                PHP Code:
                                    // Height to auto step up
                                    
                                UPROPERTY(EditAnywhereBlueprintReadWriteCategory "VRMovement|Climbing")
                                        
                                float VRClimbingStepHeight
                                Its in the movement component
                                Thank you!

                                Comment

                                Working...
                                X