FOVE SUPPORT CENTER

Comments

22 comments

  • Avatar
    Andrew Weidenhammer

    To be a bit more descriptive myself.  I tried creating a C++ project in 4.14.3 (the plugin mentioned 4.14).

    I placed the contents of the plugin into the specified folder and attempted to rebuild the project that resulted in an error, that the plugin was for the wrong version of the engine.

    I also attempted to build the entire engine from the full source including the plugin and got a number of build errors. 

    So some more detail about the process would be appreciated.

    Andrew

    0
    Comment actions Permalink
  • Avatar
    Maximilian Krauss

    I get exactly one build-error:

    1>LINK : fatal error LNK1181: cannot open input file 'FoveClient.lib'
    1> Creating library D:\FoveUE4Projects\PluginTest\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-PluginTest.lib and object D:\FoveUE4Projects\PluginTest\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-PluginTest.exp
    1>ERROR : UBT error : Failed to produce item: D:\FoveUE4Projects\PluginTest\Plugins\FoveVR\Binaries\Win64\UE4Editor-FoveHMD.dll

     

    can't find the lib file anywhere, how would I fix this?

    UPDATE:
    found the lib. surprise, it was in the SDK
    but the github plugin seems to use version 0.9, while the SDK is 0.10
    so I'm gonna try that next and keep you up to date

    0
    Comment actions Permalink
  • Avatar
    Andrew Weidenhammer

    Aha!  That sounds like it might be the issue.  Thanks for looking!  Can I dl the 0.9 sdk?

    0
    Comment actions Permalink
  • Avatar
    Andrew Weidenhammer

    Any thoughts from Fove?

    0
    Comment actions Permalink
  • Avatar
    Maximilian Krauss

     

    News:

    So I got the plugin running, but only by integrating it into a C++ project.

     

    I still have the issue of "couldn't open "FoveClient.lib" with the full engine build, but that's because I don't know how to link the library to the makefile. If it was an application, I'd go through the linker, but since that doesn't work here, I'm a lil stuck here.

     

    About the plugin:

    it's trying to use SDK 0.9.3, while I only had access to 0.10, so I replaced all files with the newer ones. (potentially catastrophic, I know)

    I had to add the .dll file manually to the correct path.

    Now I can see things in unreal engine 4, but the Fove-functionalities don't seem to work. I only get false values / zero-vectors.

     

    Here's what I do next:

    make a small application trying to figure out how to use the SDK and get that to work. After that, I'll probably make my own integration into UE4, since the provided Fove-functionalities are a bit few for what I intend to do with them.

    I'll post my results in the developers forum as soon as I have any.

    0
    Comment actions Permalink
  • Avatar
    Maximilian Krauss

    My result after spending the day with the SDK and the plugin:

    The current unreal engine integration cannot be used as is.

    I have spent the whole day fixing and trying stuff and Igot it working now, but I had to do a lot of digging, finding quite many TODOs, FixMes and notes from Unreal/Epic Games on how to improve stuff or how to get it running..

     

    However, after all the dirty things I had to do (which a gentleman would never confess), I can access the SDK via Blueprint. It's just messy Code, but I can live with that for now^^

    0
    Comment actions Permalink
  • Avatar
    Jeff

    Hi Maximilian and Andrew,

    Thanks for your perseverance, I'm glad you got things working!

    I pushed an update to the repository: https://github.com/jbfove/UnrealEngine

    This brings the plugin's SDK version to 0.10.0 and fixes a few other issues. The .dll and .lib file are now bundled with the plugin, which was the cause of the initial problem reported above. It should build out of the box now.

    I'm curious if you had any other changes you made to the plugin to get it working. If so, let me know and we can look at integrating them so the next person will have less trouble.

    We primarily test with the Unity FPS demo, along with a few internal Unreal projects, so having you guys posting issues here helps us find deficiencies that our projects may not run into. As far as todo's and fixme's, we're tackling those one at a time, hoping to get some done each release as time permits. Having issues filed here also helps us prioritize as well.

    Give the updated version a shot and let me know how it goes,

    Jeff @ FOVE

    1
    Comment actions Permalink
  • Avatar
    Maximilian Krauss

    Hey there Jeff

     

    Thx for coming back at us

    I updated the git and built the engine, worked all fine. I can also play in VR now.

    I only have the issue that all values I get from the fove are zero-values (zero vectors, false...)

    I did not have that problem with theunreal build using ver 0.9 (even though I replaced the files with the 0.10 files, library and headers).

    However, I was halfway through building my own plugin and had the same issues there (all values retrieved through SDK were 0 or false)

    I have built a small console-app where I print out fove-orientation values with sdk 0.10 and it works there, so it seems that unreal is not receiving the data sent from the SDK properly?

    I can say for sure that the SDK itself is working, but the link from the SDK to unreal seems to be an issue.

    EDIT + SOLUTION:

    I fixed the issue. In the file "FoveFunctionLibrary.cpp" in the function "GetFoveHMD()": the function checks against the HMD of the engine and if it's a 'SteamVR' device type, it casts the HMD to FoveHMD and returns that. But that never happens.
    My Fix:
    Implemented "GetDeviceName()" in "FoveHMD.h" to return "FoveHMD":

    //in FoveHMD.h:

    virtual FName GetDeviceName() const
    {
    static FName DefaultName(TEXT("FoveHMD"));
    return DefaultName;
    }

    //and then, in "FoveFunctionLibrary.cpp" (leaving out comments)

    FFoveHMD* GetFoveHMD()
    {

    if (GEngine->HMDDevice.IsValid()

    &&

    (GEngine->HMDDevice->GetDeviceName() == TEXT("FoveHMD")))
    {
    return static_cast<FFoveHMD*>(GEngine->HMDDevice.Get());
    }

    return nullptr;
    }

     

    Now everything works :)

    Greetings

    Max

     

    1
    Comment actions Permalink
  • Avatar
    Andrew Weidenhammer

    Just confirming that the newest plugin built fine for me now.  But I'm having the same zero-eye vector and false calibration issue.  I'll attempt modifying "FoveFunctionLibrary.cpp" as suggested.  Where would I find that file?  I'm not sure.

    Andrew

    0
    Comment actions Permalink
  • Avatar
    Philip Weiss

    Could someone who has this working post their code as an example? I'm not really sure how to start using the Unreal plugin. Thanks.

    0
    Comment actions Permalink
  • Avatar
    Jeff

    Thanks to Maximilian, I pushed a fix to the repo for GetFoveHMD() returning null and the zero vector returns from FoveFunctionLibrary!

     

    @Philip You can get started by downloading the FoveVR plugin folder from Engine/Plugins/RunTime folder in the repository:
    https://github.com/jbfove/UnrealEngine/tree/release/Engine/Plugins/Runtime/FoveVR

    If you create a project from the default C++ FPS demo template in Unreal (it's important to have at least one C++ file in the project so it loads the plugin), you can drop the FoveVR folder in ProjectRoot/Plugins/. Upon next rebuild, the FoveHMD plugin should be in your project. You can verify by looking in Edit->Plugins under Project/Virtual Reality. After that, you just need to make sure the FOVE service and compositor are running, and use the triangle drop down menu next to the play button to run in "VR Preview" mode. Let me know if that helps or if you have any more questions!

    0
    Comment actions Permalink
  • Avatar
    Benedikt Tutzer

    Hi,

    I had some trouble getting this compiled in 4.15.0, but I finally made it!
    It came down to two things:
    FoveHMD.cpp needs to include <windows.h> and <TlHelp32.h>, and apparently somewhere there is a macro defining FindWindow as FindWindowW, hiding the function FindWindow from FSceneViewport, so you have to undefine it before calling the function in line 564. Just to be sure I redifined it afterwards:


    #undef FindWindow
    const TSharedPtr<SWindow> window = sceneVP->FindWindow();
    #define FindWindow FindWindowW

     

    I do not have the FOVE available right now, so I can only confirm that it compiles on 4.15.0, I still have to check if it actually works as well.

    0
    Comment actions Permalink
  • Avatar
    Andrew Weidenhammer

    I can confirm that it built fine this time, and the eye tracking seems to be working correctly.  Thanks!

    0
    Comment actions Permalink
  • Avatar
    Benedikt Tutzer

    Are you using Unreal 4.15.0 or the fork that comes with the plugin?

    0
    Comment actions Permalink
  • Avatar
    Andrew Weidenhammer

    Definitely the branch that they link to in the plugin.  It's a 4.14 version.  4.15 is probably too new, though it is officially released now, so let's ask for a build for that version?  May we please?

    Andrew

    0
    Comment actions Permalink
  • Avatar
    Benedikt Tutzer

    I managed to compile it for 4.15, I just do not know how the errors I had to correct are related to the version update

    0
    Comment actions Permalink
  • Avatar
    Jeff

    UE 4.15 did some header cleanup to improve compile times. This caused the FOVE plugin to not build, because our files were indirectly getting the Windows headers through other Unreal headers.

    Thanks Benedikt for pointing out the needed includes.

    I'm working on an update that will fix the 4.15 build, among some other things. I will post here once it's up.

    0
    Comment actions Permalink
  • Avatar
    Jeff

    I pushed an update to the Unreal plugin git repo which adds support for versions 4.12 through 4.15, among other things.

    Thanks for everyone's feedback, and keep it coming!

    0
    Comment actions Permalink
  • Avatar
    Benedikt Tutzer

    Thanks Jeff!
    Is there any reason you provide the whole unreal source with the plugin? I think it would be much better to offer a git repository with only the plugin folder, this way it could be included into existing unreal git projects as a subrepository, making it much easier to keep up to date. This way one either has to keep a working copy of the whole unreal source or download the whole from github, only to get the newest version of the plugin.

    0
    Comment actions Permalink
  • Avatar
    Andrew Weidenhammer

    Agreed.  This is annoying.  Obviously not a deal-killer, but It threw me for a loop.

    0
    Comment actions Permalink
  • Avatar
    Jeff

    For licensing reasons, we distribute our plugin within the Unreal developer group on GitHub, such that it's only accessible to those who already have access Unreal code.

    Afaik there's no way to make a new repo within the group, so we did the standard thing and forked the engine and added our changes, hence the fact that we distribute with Unreal source.

    That said, I don't see any reason the fork couldn't add a commit to remove the Unreal code so HEAD can just be the FOVE plugin. I will look into this.

    0
    Comment actions Permalink
  • Avatar
    Benedikt Tutzer

    Hi Jeff,

    any update on this? I do not see why there would be licencing issues, since you would not provide any unreal files. It is perfectly ok with Epic Games licence to create a plugin and share it.
    I cannot find any other plugin that shares the whole engine, so I do not see why this would be the "standard thing".
    Since the plugin is incredibly unstable at the moment, I hope there is a lot of developement going on, and that there will be many updates. It is extremely annoying to download the whole thing each time.
    Also, not having the plugin as a submodule increases the size of the git repositorys using the plugin.

    0
    Comment actions Permalink

Please sign in to leave a comment.