FOVE SUPPORT CENTER

Unity Plugin v2.0.0 - Spammed with: Assertion failed: Assertion failed on expression: 'IsMatrixValid(matrix)'

Comments

8 comments

  • Official comment
    Avatar
    Scott Harper

    Unity can be finnicky about throwing errors without showing you where they came from. Real quick, can you verify that this happens with the runtime service one and off?

    Also, can you open up the config tool (right-click the tray icon, then at the top of the menu) and open the log before starting the runtime and see if there are any strange looking errors present in the log?

    Cheers,
    Scott

  • Avatar
    Joe Bacon

    Thank you for the response.

    If I stop the FOVE runtime service and then play my unity scene, then the assertion errors still occur - because Unity automatically starts the runtime service. 

    I can stop the runtime service whilst my unity scene is playing - the scene continues to play and the assertion continues to occur

    Have I done what you meant?

    There are a few errors in the log when I start the runtime service (with compositor auto start enabled). I have copied the log output from a single runtime 'startup' session:

     

     

    Destroying FVRHeadset object (00000000626860C0)
    Creating FVRHeadset object (0000000062C211D0)
    Launching Service..
    ClientCap final: EFVR_ClientCapabilities(7, Gaze, Orientation, Position)
    Creating a compositor client (000000004488E640) of type 0
    [RNDR] Acquiring rendering backend...
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Creating FVRHeadset object (00000000626A9250)
    Trying to connect to service as 8f140a70-3a2d-4009-8cc6-119a527af919
    Launching Service..
    ClientCap final: EFVR_ClientCapabilities(2, Orientation)
    New log client 0.12.1 C:/Program Files\FOVE\bin\FoveServiceHost.exe
    Service started. Initialising FoveVR
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Started Fove Runtime Service
    FoveVR ctor
    Loaded module PositionTracking
    Loaded module EyeTracking
    Connected to headset with fw51
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    RemoteRequester(Compositor) error: EFVR_RemoteRequester_Result::Timeout: No response from server
    InitiateConnection: Unable to send heartbeat
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Trying to connect to service as aa5c1b69-89fc-4aab-b6a7-1eeefb7c4d54
    Launched FoveCompositorApplication.exe
    Starting app: FoveCompositorApplication.exe
    Launched FoveCompanion.exe
    Starting app: FoveCompanion.exe
    New log client 0.12.1 C:/Program Files\FOVE\bin\FoveCompositorApplication.exe
    Setting timer interval to: 1
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    [RNDR] Forcibly acquiring rendering backend...
    [RNDR] Nvidia API found
    [NVDA] Found direct mode ENABLED display
    [RNDR] Direct Mode display was found
    Creating FVRHeadset object (000002A8B6800090)
    ClientCap final: EFVR_ClientCapabilities(2, Orientation)
    [NVDA] Attached to direct mode display
    Compositor found HMD display
    New log client 0.12.1 C:/Program Files\FOVE\bin\FoveCompanion.exe
    Companion starting
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Companion accepting clients on port 8317
    Wrote config file to disk:
    COMPANION_IPC_PORT=8317
    COMPOSITOR_CLIENT_PORT=8307
    CURRENT_USER_PROFILE=230294
    KEEP_COMPOSITOR_ALIVE=TRUE
    Creating a compositor client (000001EEC8D2F750) of type 196608
    [RNDR] Acquiring rendering backend...
    Creating FVRHeadset object (000001EEC8B0AFC0)
    ClientCap final: EFVR_ClientCapabilities(2, Orientation)
    Trying to connect to service as 130a5fb6-d1a9-40b3-9010-6d0296f7990c
    Companion will wait for the compositor to provide an adapter
    RemoteRequester(Companion) error: EFVR_RemoteRequester_Result::Timeout: No response from server
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Unable to determine IsEyeTrackingCalibrating: EFVR_ErrorCode::Server_General
    Eye camera configuration set
    RemoteRequester(Compositor) error: EFVR_RemoteRequester_Result::Timeout: No response from server
    InitiateConnection: Unable to send heartbeat
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Position camera configuration set
    Position camera loop running: true
    Compositor accepting clients on port 8307
    Wrote config file to disk:
    COMPANION_IPC_PORT=8317
    COMPOSITOR_CLIENT_PORT=8307
    CURRENT_USER_PROFILE=230294
    KEEP_COMPOSITOR_ALIVE=TRUE
    Recommended zoom factor: 1.230600
    Recommended zoom factor: 1.230600
    Recommended zoom factor: 1.230600
    Recommended zoom factor: 1.230600
    REPORT: New client accepted 7f1cb020-f654-4881-85df-1f8ab68f8e0c
    Trying to connect to service as 7f1cb020-f654-4881-85df-1f8ab68f8e0c
    Connection to service succeeded!
    RemoteRequester(Compositor) error: EFVR_RemoteRequester_Result::Timeout: No response from server
    InitiateConnection: Unable to send heartbeat
    REPORT: New client accepted 130a5fb6-d1a9-40b3-9010-6d0296f7990c
    Loaded config file at C:\ProgramData\FOVE\FoveVR.config
    COMPANION_IPC_PORT: 8317
    COMPOSITOR_CLIENT_PORT: 8307
    CURRENT_USER_PROFILE: 230294
    KEEP_COMPOSITOR_ALIVE: TRUE
    Eye camera loop running: true
    Loaded calibration data for profile: 230294
    Trying to connect to service as a11bf428-d139-4a23-afeb-adbb932a8cd1
    Connection to service succeeded!
    REPORT: New client accepted a11bf428-d139-4a23-afeb-adbb932a8cd1
    Destroying compositor client (000001EEC8D2F750) of type 196608
    Destroying FVRHeadset object (000001EEC8B0AFC0)
    Companion adapter id is Adapter(0, 34810)
    [RNDR] Acquiring rendering backend...
    Creating FVRHeadset object (000001EEC8E0C2C0)
    ClientCap final: EFVR_ClientCapabilities(0)
    Companion is sleeping
    Marking client stale: 130a5fb6-d1a9-40b3-9010-6d0296f7990c
    REPORT: dropping stale client: 130a5fb6-d1a9-40b3-9010-6d0296f7990c
    Marking client stale: a11bf428-d139-4a23-afeb-adbb932a8cd1
    REPORT: dropping stale client: a11bf428-d139-4a23-afeb-adbb932a8cd1
    HID read error : Unknown exception
    New client texture: 00000000439F0DE0 (1792, 1390)
    New client texture: 00000000439F3AE0 (1792, 1390)
    Received new buffer 00000000C0001582 from client 7f1cb020-f654-4881-85df-1f8ab68f8e0c (1792, 2016)
    Received new buffer 00000000C0004242 from client 7f1cb020-f654-4881-85df-1f8ab68f8e0c (1792, 2016)
    Missed frames for client 7f1cb020-f654-4881-85df-1f8ab68f8e0c:
    L: 0.000000 fps, 0 frames, R: 0.000000 fps, 0 frames, rendering at 0.066667fps
    Received new buffer 0000000080001082 from client 7f1cb020-f654-4881-85df-1f8ab68f8e0c (1792, 2016)
    Received new buffer 0000000080001942 from client 7f1cb020-f654-4881-85df-1f8ab68f8e0c (1792, 2016)

     

     

  • Avatar
    Joe Bacon

    Further info - 

    1. select game object 'Fove Interface 2'
    2. Inspector > Fove Interface 2 (Script) > Client Uses > DISABLE orientation and/or position
    3. play scene
    4. note that assertions only occur once or twice
    5. stop scene
    6. Inspector > Fove Interface 2 (Script) > Client Uses > ENABLE orientation and/or position
    7. play scene
    8. note that assertions still only occur once or twice - but spamming has stopped
  • Avatar
    Scott Harper

    Joe,

    Thanks for all the detailed information. It looks like you've hit two things.

    1) There's a lingering issue where sometimes the runtime system gets in a bad state. We're working to track this down, but a restart usually fixes it.
    2) I think that the matrices aren't checking for errors before they're being set, resulting in a zero'd matrix in Unity, which is useless for essentially everything -- especially 3D projection! The initial assertsions should be safe to ignore for now, and I'll be looking into getting that error checking into the next release of the plugin.

    Sorry for the inconvenience, and thanks for the support in helping me find what might be the cause!

    Cheers,
    Scott

  • Avatar
    Joe Bacon

    Thanks Scott. Happy to be of help. 

    Joe

  • Avatar
    Moe B

    Same issue ... did you do something to fix that ? 

  • Avatar
    Joe Bacon

    Unfortunately I am just living with it - hoping for a fix from FOVE...

  • Avatar
    Scott Harper

     Hi everyone,

    So I've been investigating this issue, and it seems that there is something going on much deeper in the engine than previously thought. We're reaching out to Unity to help resolve the issue. There should be an update coming out in the next few weeks which addresses general overall stability, however the IsMatrixValid(matrix) issue is still there.

    For the time being, I believe you should be able to reduce the occurrance of this message by opening the "Headset Overrides" section of the inspector and checking "Suppress Projection Updates".

    Here's some more detail on what we know about the issue so far:
    The issue only seems to appear when generating real-time shadows. So if all your lights are set to baked shadows, you may not see it at all. In the case of realtime or mixed shadows, you may see it on start and stop of scene, or intermittently (as frequently as every frame) during play. When it appears, it shows up as many times as you have lights which are casting real-time shadows that frame.

    My suspicion (because even on the same system, the error can be intermittent or constant) is that there's a syncronicity issue going on under the hood with the projection matrix update. While Unity's core game loop is single-threaded, I have observerd that there are still worker threads doing things like scene visualization culling in the background, and I suspect that there's a timing issue or lack of mutex checks when calling the function to update projection matrices for Unity's VR pipeline from the outside as we are.

    The next verison of the plugin will likely not have this resolved, unfortunately. I'll still be looking into it, but communicating between companies sometimes takes a while. In the meantime, I'd love to hear if suppressing the per-frame projection reduces the issue for you guys. (In theory, you should only see on instance of this at the beginning of each play session, and then never again until the next time you press play.)

    Thanks for your patience.

    We're also working to make improve the plugin's compatibility with SteamVR, which has native integration with Unity, so that may become an option in the next release as well.

Please sign in to leave a comment.