Comments (6)
As you mentioned, this is a bug report for MRTK, not for MRTK-Quest. Please file that report on their github.
If you have a fix that can avoid it on MRTK-Quest without touching the MRTK code, I'm open to that, but there's not much I can do otherwise. Thanks.
from mrtk-quest.
transition between pulling the headset up on my head and pulling it back down while simultaneously having my hands being captured.
This feels like a bug in the implementation here. I can't recall seeing this case in any of the MRTK-defined device managers, but maybe we have a race condition that only shows up in a specific case.
Why would the source be lost (or maybe back-to-back found and lost) when the headset is pulled back down? It seems like hand tracking should be successful at that point.
I think that might be a red herring though. An input source should exist for as long as the controller exists, and an input source is required for a controller to exist. It's not a Unity object, so there's no chance of it being destroyed from the scene. How is it null? Since this is happening in the Editor, it should be pretty easy to run a debugger against to check (I don't have a Quest, or I'd try), or even just add some Debug.Log
s to see when / how often RemoveHandDevice is called.
The following code grabs a generic input source and sets it on the pointers. It appears to run on Unity's Update
loop, so I can't think of a reason it'd be running out-of-sync with a lost event:
After digging in a bit more, I thought it might be based on the device manager firing multiple lost events for the same hand, but I can't find the exact path to support this theory:
- RemoveHandDevice is called
RecyclePointers
is called, which callsReset
, which sets theController
to null https://github.com/microsoft/MixedRealityToolkit-Unity/blob/33781c0bcebbcb5f9c0df9160f13db300e13cc27/Assets/MRTK/SDK/Features/UX/Scripts/Pointers/BaseControllerPointer.cs#L406-L412- This is where my theory falls apart, I think, since the
Controller
setter won't changeInputSourceParent
unless the new value is non-null
- This is where my theory falls apart, I think, since the
- RemoveHandDevice is called a second time
- InputSourceParent is null due to the previous recycling / cleaning up of pointers?
from mrtk-quest.
All that being said, I'm not fully against just adding that null check to fix things, but it feels like it might be hiding either an invalid set-up or a case we need to explicitly handle another way (recycled pointers that are still getting events but shouldn't be? not sure)
from mrtk-quest.
Let me try removing that null check and dump you the full log and see if that helps - will add this towards my items for tomorrow and will follow back up to provide the best information I can.
from mrtk-quest.
@JShull Appreciate it!
from mrtk-quest.
Here's what I noticed:
The error throws three times - all point to the same BaseControllerPointer.cs Line 475, but the second error of the three has a slightly different path, right before BaseControllerPointer.cs it is coming from PokePointer.cs 460... is this the missing path?
Here's the updated images from Unity on the NullReference Exception (this time all three of them)
Also noticed this go around at the end some 'task.rasterData.vertexBuffer = = NULL' was thrown not sure if that's related or just fall out from the other errors.
Hope this helps!
from mrtk-quest.
Related Issues (20)
- Mutliple trigger events from single Pinch Geusture HOT 1
- Provide git Package
- Does it compatible with latest MRTK??
- Objects Leave Hand When Head Moves HOT 1
- Clean up MRTK-Audio dependency HOT 1
- Error when building project HOT 4
- Is this Project URP compatible? HOT 4
- How to export the Hand Tracking Teleporting feature from this MRTK-Quest to my VR own project? HOT 14
- Hand tracking feature is not working in Oculus Quest Headset..... HOT 4
- MRTK-Quest_Mixer seems to require Resonance Audio Renderer HOT 1
- Insufficient Controller mapping HOT 1
- Hand detection errors in different places HOT 4
- Hand Interaction Pan Zoom not in good direction HOT 1
- Videoplayer rensers only black texture. HOT 1
- Connect with PUN2 HOT 3
- Grabbed objects with physics stutter badly in the demo HOT 2
- NearInteraction with PokePointer on Quest-Controller HOT 4
- Deprecated? HOT 1
- Camera always start from (0,0,0) position. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mrtk-quest.