LocalJoost / QRCodeService

Show a MRTK2 service to read (and position) QR codes using HoloLens 2
MIT License
76 stars 25 forks source link

Unable to read QR codes #2

Closed minux84 closed 3 years ago

minux84 commented 3 years ago

Hi, thank you for this post, it's very useful to understand better how hololens manage QR codes.

I cloned your project and use exact unity version to test if it works, but no qr codes detected.

The only text I see is this 20210312_115603_HoloLens

"Initializing QR tracker attemp 1" is not updating.

Any advice?

Thank you so much!

LocalJoost commented 3 years ago

I don't see any QR code in your picture . Did you give consent to use the camera? Did you build for Master/ARM 64? Do you have a log file?

minux84 commented 3 years ago

This is a picture with QR code 20210312_132459_HoloLens

And this is the UnityPlayer.log's content:

Loading native plugins
  Loading Microsoft.MixedReality.QR.dll
  Loading AudioPluginMsHRTF.dll
Module information:
 Built with Compiler Ver '191627012'
 Built from '2019.4/staging' branch
 Version is '2019.4.17f1 (667c8606c536)'
 Debug build
 Application type 'D3D'
 OS 'Windows 10 (10.0.19041)'
PlayerConnection initialized from C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/Template3DVS.Debug_ARM64.Carmine/Data (debug = 0)
PlayerConnection initialized network socket : 0.0.0.0 55392
Multi-casting "[IP] 192.168.1.13 [Port] 55392 [Flags] 2 [Guid] 1699930634 [EditorId] 2784384075 [Version] 1048832 [Id] UWPPlayerARM(HOLOLENS-4H8LAJ) [Debug] 1 [PackageName] Template3D_pzq3xp76mxafg [ProjectName] QRCodeService" to [225.0.0.222:54997]...
Started listening to [0.0.0.0:55392]
Starting managed debugger on port 56634
PlayerConnection already initialized - listening to [0.0.0.0:55392]
[Subsystems] Discovering subsystems at path C:/Data/Users/DefaultAccount/AppData/Local/DevelopmentFiles/Template3DVS.Debug_ARM64.Carmine/Data/UnitySubsystems
GfxDevice: creating device client; threaded=1
Successfully created d3d11 device with debug flag.
Direct3D:
    Version:  Direct3D 11.0 [level 11.1]
    Renderer: Qualcomm(R) Adreno(TM) 630 GPU (ID=0x45373230)
    Vendor:   
    VRAM:     1932 MB
Initialize engine version: 2019.4.17f1 (667c8606c536)
[AudioManager] InitNormal(tryDeviceDefaults = false, preferredOutputType = FMOD_OUTPUTTYPE_AUTODETECT) attempt with hardAudioDisable: false
[AudioManager] Setting output to FMOD_OUTPUTTYPE_AUTODETECT
[AudioManager] InitNormal succeeded with output "FMOD_OUTPUTTYPE_WASAPI". Driver name is "Speakers (Analog Feature Audio Driver (WDM) - AFAD)". Speaker mode is "FMOD_SPEAKERMODE_STEREO"
D3D11 device created for Microsoft Media Foundation video decoding.
The following GlobalManagers were stripped from the build (Either because they're not used or not supported on this platform):
  ClusterInputManager
  UnityConnectSettings
Created eye textures with a "texture array" layout.  The "single-pass instancing" stereo mode will be used.

Windows Mixed Reality spatial locatability state changed to Active. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

End showing splash screen.
UnloadTime: 9,110417 ms
Failed to calculate boundary bounds.
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogWarning(Object)
Microsoft.MixedReality.Toolkit.Boundary.BaseBoundarySystem:CalculateBoundaryBounds()
Microsoft.MixedReality.Toolkit.Boundary.BaseBoundarySystem:Initialize()
Microsoft.MixedReality.Toolkit.<>c:<InitializeAllServices>b__63_0(IMixedRealityService)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:ExecuteOnAllServicesInOrder(Action`1)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:InitializeAllServices()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:InitializeServiceLocator()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:InitializeInstance()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:RegisterInstance(MixedRealityToolkit, Boolean)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:Awake()

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Initializing QR tracker attempt 1
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:Log(Object)
MRTKExtensions.QRCodes.QRCodeTrackingService:SendProgressMessage(String)
MRTKExtensions.QRCodes.<InitializeTracker>d__40:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<InitializeTracker>d__40&)
MRTKExtensions.QRCodes.QRCodeTrackingService:InitializeTracker()
MRTKExtensions.QRCodes.QRCodeTrackingService:Initialize()
Microsoft.MixedReality.Toolkit.<>c:<InitializeAllServices>b__63_0(IMixedRealityService)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:ExecuteOnAllServicesInOrder(Action`1)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:InitializeAllServices()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:InitializeServiceLocator()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:InitializeInstance()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:RegisterInstance(MixedRealityToolkit, Boolean)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:Awake()

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Enabled tracking
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:Log(Object)
MRTKExtensions.QRCodes.QRCodeTrackingService:SendProgressMessage(String)
MRTKExtensions.QRCodes.QRCodeTrackingService:Enable()
QRCodeDisplayController:StartTracking()
QRCodeDisplayController:QRCodeTrackingService_Initialized(Object, EventArgs)
MRTKExtensions.QRCodes.QRCodeTrackingService:SetupTracking()
MRTKExtensions.QRCodes.QRCodeTrackingService:Update()
Microsoft.MixedReality.Toolkit.<>c:<UpdateAllServices>b__67_0(IMixedRealityService)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:ExecuteOnAllServicesInOrder(Action`1)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:UpdateAllServices()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:Update()

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Enabled tracking
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:Log(Object)
MRTKExtensions.QRCodes.QRCodeTrackingService:SendProgressMessage(String)
MRTKExtensions.QRCodes.QRCodeTrackingService:Enable()
QRTrackingServiceDebugController:StartTracking()
QRTrackingServiceDebugController:QRCodeTrackingService_Initialized(Object, EventArgs)
MRTKExtensions.QRCodes.QRCodeTrackingService:SetupTracking()
MRTKExtensions.QRCodes.QRCodeTrackingService:Update()
Microsoft.MixedReality.Toolkit.<>c:<UpdateAllServices>b__67_0(IMixedRealityService)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:ExecuteOnAllServicesInOrder(Action`1)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:UpdateAllServices()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:Update()

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

QR tracker initialized
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:Log(Object)
MRTKExtensions.QRCodes.QRCodeTrackingService:SendProgressMessage(String)
MRTKExtensions.QRCodes.QRCodeTrackingService:SetupTracking()
MRTKExtensions.QRCodes.QRCodeTrackingService:Update()
Microsoft.MixedReality.Toolkit.<>c:<UpdateAllServices>b__67_0(IMixedRealityService)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:ExecuteOnAllServicesInOrder(Action`1)
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:UpdateAllServices()
Microsoft.MixedReality.Toolkit.MixedRealityToolkit:Update()

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Max proximity light count (2) exceeded.
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:LogFormat(LogType, String, Object[])
UnityEngine.Debug:LogWarningFormat(String, Object[])
Microsoft.MixedReality.Toolkit.Utilities.ProximityLight:AddProximityLight(ProximityLight)
Microsoft.MixedReality.Toolkit.Utilities.ProximityLight:OnEnable()
Microsoft.MixedReality.Toolkit.Input.BaseInputDeviceManager:RequestPointers(SupportedControllerType, Handedness)
Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input.WindowsMixedRealityDeviceManager:GetOrAddController(InteractionSource, Boolean)
Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input.WindowsMixedRealityDeviceManager:GetOrAddController(InteractionSourceState)
Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input.WindowsMixedRealityDeviceManager:InteractionManager_InteractionSourceDetected(InteractionSourceDetectedEventArgs)
UnityEngine.XR.WSA.Input.InteractionManager:OnSourceEvent(EventType, IntPtr, InteractionSourcePressType)

(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

Windows Mixed Reality spatial locatability state changed to Inhibited. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Active. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Inhibited. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Active. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Inhibited. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Active. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Inhibited. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Active. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

Windows Mixed Reality spatial locatability state changed to Unavailable. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/HoloLensWorldManager.cpp Line: 324)

GetCurrentHolographicCameraState: No culling frustum available. Culling data may be stale. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/VRDeviceHoloLens.cpp Line: 309)

GetCurrentHolographicCameraState: No culling frustum available. Culling data may be stale. 
(Filename: C:\buildslave\unity\build\Modules/VR/HoloLens/VRDeviceHoloLens.cpp Line: 309)

Trimming D3D resources.

Thank you

LocalJoost commented 3 years ago

All right. Watch the QR code without the app. Does a green box appear around it?

Anyway, I would suggest printing out the QR code on at least 10x10cm format. I have found recognizing QR codes from a screen does not always work very well

minux84 commented 3 years ago

I printed two qr codes and I see the green box around them. But on example app no codes detected. I also tried microsoft example (with tracking) and it works (but is very slow to track!) 20210312_165802_HoloLens

I checked unity log and I found that qr has been detected but for some reason it not show on UI:

Found QR code Test 1 prova
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:Log(Object)
MRTKExtensions.QRCodes.QRCodeTrackingService:SendProgressMessage(String)
MRTKExtensions.QRCodes.QRCodeTrackingService:QRCodeWatcher_Updated(Object, QRCodeUpdatedEventArgs)
System.UnhandledExceptionEventHandler:Invoke(Object, UnhandledExceptionEventArgs)
WinRT.EventSource`3:Invoke(IntPtr, IntPtr)
WinRT._Invoke:Invoke(IntPtr, IntPtr)
System.Action`1:Invoke(T)
WinRT.Delegate:MarshalInvoke(IntPtr, Action`1)
LocalJoost commented 3 years ago

What branch are you building and what scene? And can you send me the QR code you are using?

minux84 commented 3 years ago

I cloned this https://github.com/LocalJoost/QRCodeService/tree/blog1 , the scene is that located in App/Scenes/SampleScene and this is the QR code: image

LocalJoost commented 3 years ago

I have no idea what is going wrong at your end. I cloned the branch clean from github, built the app, I printed out your QR code at 14x14cm, started the app, gave consent and it worked the first time.

https://user-images.githubusercontent.com/4129183/110971644-6aae4300-835b-11eb-8b6d-daaaadeea7da.mp4

minux84 commented 3 years ago

Very strange! I cloned this https://github.com/LocalJoost/QRCodeService/tree/PackageNameChange and it works like a charm. So I can use it as starting point.

LocalJoost commented 3 years ago

Then you most likely had another app on your HoloLens which had Template_3D as it's default name. Good luck