Announcement

Collapse
No announcement yet.

[SUBMITTED FOR RELEASE] VR Debug Plugin

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

    [SUBMITTED FOR RELEASE] VR Debug Plugin

    Introduction

    Hi, I am currently working on a plugin for making debugging in VR a bit easier for developers. Being a VR developer myself since more or less 4 years I have come to make a mental list of things that I would love to have in a tool for debugging faster in VR. This is true for all platforms obviously but it's even truer for platforms such as GearVR, Oculus Quest and Oculus Go.


    VR Debug Plugin and what it should accomplish

    I have finally decided to sit down and really develop a tool that would make it easier to debug your VR apps. I have already come up with a few things I think are important and started to implement them, however, regardless of the functionalities, there are certain requirements that the VR Debug Plugin should stick to.
    • The first and most important one is customisation, I believe for this to be something that can be used by anyone the plugin should be fully customisable.
    • The plugin should be dead easy to set up in your project at any point in time. The latter means no need to add a single blueprint node for it to work.
    • The last requirement should be the ability to easily expand on it and so add new features.

    So the plugin should accomplish the goal of letting anyone simply add a component to their VR actor/pawn and then customise its behaviour through the component details panel. No extra steps should be required to get the VR Debug functionalities up and running.

    VR Debug Plugin Features

    VR Debug Component easy setup

    I have spent already a great deal of time making the VR Debug Component easy to customise. Once the component has been added to the relevant VR actor/pawn all its left to do is pointing it to the motion controllers instances (so to use the laser pointers for interactions) and set up the interactions buttons.



    For the rest of the variables, I have implemented and save and load system. The system allows specifying whichever variables you want to save permanently inside a config file. Once the ideal settings have been saved you can reload the settings in any other project by pressing the load properties button. This is particularly important for me as you may spend a few minutes getting the right settings for the VR Debug menu to spawn right and feel easy to use and it should really only happen once. From that one time ahead you just reload those settings in any other projects, you work on.



    Console Command
    As already mentioned I have started to work on some of the functionalities I think are useful for debugging a VR project.

    The first feature I added is a console command menu from which you can run console commands. So far you can group commands in categories, add new commands, remove commands, add commands to a list of favourites, browse the history of used commands and run commands with parameters.

    The videos below show some of the functionalities (this is all still work in progress):





    Movements

    I truly can't remember the number of times I had to quickly script this into a VR pawn because I needed to quickly and freely move around the scene for debugging purposes. I haven't even started developing this part but what I'm expecting from this is a bunch of functionalities that allow you to move around the scene freely.
    • Free-flying mode
    • Position off-set in X Y and Z directions
    • Rotation offset in X Y and Z rotations

    Output Log

    This is for sure another seriously important one on all platforms but especially on the mobile platforms. Again I didn't start developing this feature but what I would expect from this is simply being able to view the output log in real-time. The tab should show the entire log and you should be able to use a search bar to show relevant results throughout the log.

    Suggestions and feedback

    Apart from sharing how this evolves through its development, the main reason I am creating this post for is feedback and suggestions. I would love to hear what other developers think about the tool:
    • Do you think it's useful?
    • What would you like to see implemented?
    • Is there anything implemented so far you'd do differently?
    Any kind of suggestion and feedback is really appreciated.

    Have a great day VR Devs
    Last edited by DownToCode; 11-26-2019, 08:15 PM.
    Email Plugin - An easy to use plugin to send emails from one email address to another.

    #2
    I have an example of pulling the output log and rendering it to a texture if its useful to you. Also has text injection for direct typing into the console with a VR keyboard.


    Consider supporting me on patreon

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

    Comment


      #3
      Hi mordentral,

      I really haven't even started to think about how that would work, to be honest, but I would definitely appreciate taking a look at your solution to starting getting an idea about an approach I could take.

      Just so you know I'm planning to release the plugin on the marketplace eventually so I would appreciate looking at your output log implementation as long as you are ok with it.
      Also, great job on your open-source plugins they both look great.
      Email Plugin - An easy to use plugin to send emails from one email address to another.

      Comment


        #4
        Originally posted by DownToCode View Post
        Hi mordentral,

        I really haven't even started to think about how that would work, to be honest, but I would definitely appreciate taking a look at your solution to starting getting an idea about an approach I could take.

        Just so you know I'm planning to release the plugin on the marketplace eventually so I would appreciate looking at your output log implementation as long as you are ok with it.
        Also, great job on your open-source plugins they both look great.
        I made it briefly to help people out, never merged it into a full package though with a widget, about time someone did something like that fully.

        It registers a listener to the output log (they specifically have a good latch point for the output log), you can skip all of the texture rendering stuff and just add the text to a widget list or something that you prefer so all of your sorting and filtering can work.
        The only reason for the texture rendering in the first place is because direct rendering is the only pathway into the console itself so I chose to present both with the same method.

        Source files:
        https://bitbucket.org/mordentral/vre...LogComponent.h
        https://bitbucket.org/mordentral/vre...gComponent.cpp


        Consider supporting me on patreon

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

        Comment


          #5
          I made it briefly to help people out, never merged it into a full package though with a widget, about time someone did something like that fully.

          It registers a listener to the output log (they specifically have a good latch point for the output log), you can skip all of the texture rendering stuff and just add the text to a widget list or something that you prefer so all of your sorting and filtering can work.
          The only reason for the texture rendering in the first place is because direct rendering is the only pathway into the console itself so I chose to present both with the same method.

          Source files:
          https://bitbucket.org/mordentral/vre...LogComponent.h
          https://bitbucket.org/mordentral/vre...gComponent.cpp
          Hey great thanks, I will most likely go with what you mentioned and just add text to a widget scroll box inside a vertical box so that I can easily do filtering and sorting. Will give some update on the state of the plugin as I make progress. Have a great day
          Email Plugin - An easy to use plugin to send emails from one email address to another.

          Comment


            #6
            UPDATE - Resize and move widget

            Hi everyone, just wanted to drop a quick update. I have implemented a way to resize and move around the VR Debug Widget once it gets spawned in front of you. The four handles at the corner resize the widget and the one on top moves it around. The size of the widget gets saved using Unreal's save system so that the widget spawns the same size the next time you play.



            Have a great day
            Last edited by DownToCode; 10-04-2019, 03:14 AM.
            Email Plugin - An easy to use plugin to send emails from one email address to another.

            Comment


              #7
              UPDATE - Movements

              Hi everyone, I have finally moved onto the movements part of the plugin which is another essential debugging tool in my opinion. I have already managed to implement a basic translation and rotation modifier so that you can move and rotate around the world using the widget and buttons. So far you can specify by how much you want to translate and rotate and then press the buttons to do so. The two values are saved so that you don't have to set them every time you launch the app for testing.

              The next type of movement-related feature I wanted to add is a free-flying mode, which I think is the most useful one.



              Have a great day
              Email Plugin - An easy to use plugin to send emails from one email address to another.

              Comment


                #8
                UPDATE - Movements Free-Flying

                Added a free-flying mode inside the movements tab. All that's needed is having the widget open and point the motion controller away from the widget then press the same button like the one that interacts with the widget. The free-flying can follow the camera forward direction or the motion controller.



                UPDATE - Basic output log

                I started to work on the output log based on Mordentral code so this is turning out to be faster than I expected (thanks a lot for sharing ). One thing I quickly figured out is that using arrows to scroll up and down left and right in the output log can be a real pain and harder to implement so I went ahead and created a custom scroll box that allows you to use the left mouse button to drag and scroll. It uses the drag and scroll feature that is usually based on the right mouse click on the scroll box but listens for the left mouse button. Still needs to be worked on obviously, it misses filtering and looking up things but it's a start nonetheless.



                If anybody has any comments or suggestions they are super welcome. Have a great day
                Email Plugin - An easy to use plugin to send emails from one email address to another.

                Comment


                  #9
                  In my output log actor I have physical scroll bars that you can grab and move, might be something to consider as it is pretty interactive like that.


                  Consider supporting me on patreon

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

                  Comment


                    #10
                    I will have a look at that and thanks again for sharing .

                    I was initially considering physical handles pretty much the way I did it for the resize and move but then I thought that I would try to make it all working more naturally and within the widget itself, that's why I created my own scroll box to use the left mouse button to perform the drag and scroll.

                    It works pretty well when you want to scroll in one direction, it becomes a bit more complicated when I have two scroll boxes stacked on top of each other so to allow vertical and horizontal scrolling at the same time. I really like this solution so I may explore a way of allowing both at the same time in the same scroll box (no idea if even possible). If that turns out not to work I will try to go for physical scroll bars and see how it feels.
                    Email Plugin - An easy to use plugin to send emails from one email address to another.

                    Comment


                      #11
                      UPDATE - Ouputlog

                      I just wanted to drop an update on the output log. The feature is complete and fully working, all the logs can be viewed, scrolled both horizontally and vertically and now filters can be applied.
                      As per the Unreal's output log, the filters allow viewing messages, warnings and errors in any combination. The output log can also be searched using the search bar now making it easier to jump to specific parts of the logs.



                      With the output-log finished I'm happy to call the plugin ready for testing and polishing. All the features I originally wanted for debugging in VR are in there: console commands, easy movements and output-logs. So from now on, I'll stop working on features and just test and polish. As soon as I'll feel the plugin is in a state of release I will work on the documentation.

                      As usual, any feedback on the features or suggestions is suuuuuper welcome

                      Have a great day all
                      Email Plugin - An easy to use plugin to send emails from one email address to another.

                      Comment


                        #12
                        UPDATE - Plugin tested and ready for release

                        Hi everyone, I have finally finished testing and fixing bugs in the VR Debug Plugin. I feel happy with the state of the plugin and can't wait to obviously release it and get some feedback.

                        The plugin has been tested on Oculus controllers, Valve index controllers and the HTC Vive controllers (the controllers are important for the interactions the HMD kinda doesn't matter). From now moving forward all I have left to do is writing the documentation and making some tutorial videos hopefully this won't take me forever

                        Also, I will soon post a final video of what you can do with the plugin starting from setting it up to just use it in your project

                        Have a great day.

                        Email Plugin - An easy to use plugin to send emails from one email address to another.

                        Comment


                          #13
                          SUBMITTED FOR RELEASE - PRICE $5.99

                          Soooo happy to say that the VR Debug Plugin has been submitted for release on the marketplace

                          I have finished writing the documentation (still need to make the video tutorials) and put together a promo video with my insane video editing skills ( obviously a joke).



                          WHAT'S NEXT

                          So I have been using this more and more while testing but also daily while working and bugs will come up as well as ideas to make this way better. I'm looking forward to some feedback, especially if enough people get to use it and report back their experience with it. The plan from now is making this as stable as possible as well as adding new features that I find highly necessary while trying to use the plugin and debug in VR.

                          Some ideas that already came to my mind are:
                          • In editor window to edit your list of console commands. Right now if you first want to completely rewrite the console commands that can be run you'd have to go to the plugin config folder and edit the INI file. Not a big deal for me but the process can be kept in the editor.
                          • Make the favourites list also an INI file instead of using the Unreal's save system.
                          • Adding a new mode for simply viewing the print statements. The statements can already be seen inside the output log but it can be kind of difficult. Having the print statements as a separate floating window would be great.
                          • Making the button to bring up the VR Debug Widget firstly spawn a pre-selection menu so more actions can be added while keep using a single button. For those who have played the RecRoom this would work the same way you use emojis in the RecRoom. You press down the button a radial menu comes up then you move the hand towards the selection of the menu. This could be useful as there are console commands that literally make using the VR Debug Widget impossible (wireframe mode for instance). I have been thinking of a way to add an info action and this could be an option.
                          • Allow to dock and undock all widgets modes so that you can place them around the scene while debugging.

                          Have a great day
                          Last edited by DownToCode; 11-26-2019, 08:13 PM.
                          Email Plugin - An easy to use plugin to send emails from one email address to another.

                          Comment

                          Working...
                          X