There is one image that is recognized only if you take the camera a considerable distance, although the image is fully displayed on the screen. Why does the algorithm not work in the middle distance? In addition, this particular image is not recognized on Samsung j4, no matter how I rotate and move it. I would appreciate any additional information. Thanks.
Could you please share the image in question and also a video showing under which conditions the image is recognized and under which not.
Thx and greetings
I attached a link to the image and the video that I requested.
Also, I found out the following:
1. If you use a .zip archive from Wikitude Studio, it does not matter what resolution the original image has. The file will be compressed. At the same time, when we check the HeatMap in the ImageTarget settings, the information is not reliable for the compressed image.
2. It is not very clear what are the nuances when choosing wtc or .zip. Which of these works best?
3. I used to start an image with a size of up to 1000 pixels. However, on most phones there was a problem that I described in the first letter. I tried to create my own .zip archive with a large file, (over 2000) and the situation improved for the better.
4. As I already wrote, I can’t get a satisfactory tracking of my image (by reference) on weak devices (Samsung J4). For Wikitude version 8.6, tracking is 0%. For version 8.7 it works, only from a long distance.
5. I also cannot use 8.7 due to license restrictions.
6. I would like to achieve at least some recognition on the Samsung J4. I suspect the situation will be similar on many other devices.
I realized that it depends on the use of ARM64 or ARM v7. I am building an armv7 assembly for Samsung s8, and it works as in the video by reference. Given the percentage of armv7 processors, this is bad for me. Unfortunately, I am very limited in changing the original image and I am looking for ways to understand how the wikitude algorithm works.
General info on Wikitude SDK - 32 and 64 bit support and instructions on building can be found here:
For Unity these are the relevant details:
If you are using 2018.1 or later, you can enable experimental support for 64 bit builds on Android from Player Settings. To enable 64 bit support in the Wikitude binaries, copy the .aar files from the
Libraries/Android/ARM64 folder inside the downloaded package into the
Asssets/Plugins/Android folder in the Unity project folder, replacing the existing ones there. After that, simply build as usual.
Does this help with the building of the app?
Thx and greetings
How can this information be useful to me? I am using wikitude 8.6. Does this mean that I should use wikitude 8.0 for arm 7 and it will work better than 8.6?
Since the 8.4 release, the Unity Plugin supports both ARM64 and ARMv7 by default. You just need to make sure that both are selected in you PlayerSettings -> Other Settings -> Target Architectures. Having both selected is recommended because you should get better performance from ARM64 builds on devices that support this architecture, but you're still supporting older devices through ARMv7. Downgrading to 8.0 is not required nor recommended. Have you already tried this, or did you only use ARMv7?
Regarding .wtc vs .zip / .jpg / .png, you should prefer using .wtc, unless you have a specific use-case where this is not supported. Such use cases would be if the images have transparency, or if they are generated at runtime (for example you take a picture with your phone and immediately start using it as a target). Since this doesn't seem to be the case, I would recommend using a .wtc file. In the video that you shared, were you using a .wtc or a .zip file?
Thank you for the clarification.
- using wtc and armv8 - works like in a video
- using .zip with low resolution and armv8 - works like in video
- using .zip with high resolution (over 2000 pixels) - works well
- using wtc and armv7 - it works worse than in the video or does not work
- using .zip with low resolution and armv7 - works worse than in video or does not work
- using .zip with high resolution (more than 2000 pixels) - works a little worse than in video
at the moment, I prefer to use a high-resolution image, however, the behavior that in the video is not intuitive for me. In theory, the better the image is visible, the better it should be recognized. It seems that there is some kind of factor that could fix everything
I also try to use other colors or add some details without changing the base image, but it is simply ignored.
We added a bit of noise and reduced the contrast of the lines and it began to work much better. I hope the feedback we give as developers is at least a little useful to you. Thank. The question can be closed.