Vuforia Cloud Reco Image Target - c#

This may be a dumb question but what the hell. So I understand Vuforia Reco targets auto find the target based on your targets defined via dev portal.
How do you define which cloud reco target is assigned to a given ImageTarget? Mainly just for reference on scale and position!! Thanks Guys!!

You won't need to put multiple ImageTarget prefabs in the scene. and, you won't have any option to select a target from the inspector as you get in ImageTarget component.
Normal ImageTargets: Multiple imageTarget prefabs in the scene.
Cloud-reco: One cloud-reco gameobject in the scene.
While the ImageTarget component returns whether it has been scanned or not, the cloud reco gameobject will return the name of target if its available on vuforia cloud.

Related

How to always get the AR design in front of the spatial walls Unity HoloLens

I am building an app for the HoloLens gen 1 device using Unity 2018.3.13f and MRTK V2 RC1. I got a simple AR design with 2 text objects and 1 rawimage object. After building the project and deploying it to the HoloLens the AR objects ends up behind the spatial mesh (you know all those spatial triangles), but I want all the objects to be in front of the wall.
How do I accomplish this?
The canvas is set to be on the main camera
I have the original settings for the DefaultMixedRealityconfiguraitonProfile if there is something there that needs to be changed.
This is how it looks through the hololens with the app when it does not show the mesh of the wall (sorry for the bad quality)
and this is how it looks when it falls behind the mesh
Do I need to add some mesh renderer or something on the MainCamera to make this possible?
Any help is appreciated, thanks!
I don't believe that the MRTKv2 as of 2019/5/9 has code that will auto-ensure that a specific object is positioned in between the camera and other arbitrary meshes and colliders (i.e. the spatial awareness is one such mesh, though you could imagine just having an arbitrary box or plane in the scene that would occlude that object, in which case, maybe you'd want your "in between" object to stay in between both those two types of potentially occluding things).
There used to be a script in the HTK called Tagalong.cs that would do something like this by doing raycasts from the camera to collidable object:
https://github.com/microsoft/MixedRealityToolkit-Unity/blob/htk_release/Assets/HoloToolkit/Utilities/Scripts/Tagalong.cs
This single large script I think got broken up into smaller scripts (i.e. specific behaviors in the solvers here:)
https://github.com/microsoft/MixedRealityToolkit-Unity/tree/mrtk_release/Assets/MixedRealityToolkit.SDK/Features/Utilities/Solvers
However, from what I can tell, the specific interaction of "keep things automatically between the camera and whatever collidable object" wasn't preserved. Someone else can correct me here if I'm wrong, it looks like this wasn't a behavior that got preserved in V2.
Going forward, there are a couple of possibilities:
1) Probably file an issue on Github here (https://github.com/microsoft/MixedRealityToolkit-Unity/issues) to request this feature be ported over.
2) Use the code in Tagalong.cs to add your own solver that would accomplish this (i.e. the code looks to be all there, there's just some work needed to get done to reorder it to handle what you want)
If you use a sprite renderer, set order in layer (into 0 or -1).
If you use a mesh renderer, try to deactivate dynamic occluded.
Try to change the hierarchy of the sorting layers under Edit-> Project Settings -> Sorting Layers

How to create multiplayer / shared AR game with Vuforia?

I would like to create a shared AR game on Android phones, where I would like to:
spawn a cube for each player on an ImageTarget
allow them to control the position of their cube
allow them to see the movements of all players' cubes
I'm using Vuforia as my AR library and PUN 2 as my networking library. I have no issue synchronizing the positions and rotations of all cubes. However, the cubes do not stay on the ImageTarget properly and "jump" around. On the other hand, if I place my two phones very close together and point them at the ImageTarget at roughly the same angle, the cubes do not jump as much.
This leads me to think that the 2 instances of ARCamera fail to realize that they are pointing at the same ImageTarget from 2 different angles, and instead think that the ImageTarget exists in 2 different orientations at the same time.
Is there any way for me to tell Vuforia that I'm using multiple instances of ARCamera pointing at the same ImageTarget? (Or if my hypothesis is completely wrong, how do I actually make a multiplayer AR game?)
Thanks so much in advance!
p.s. I know the Vuforia forums are a better place to ask this question but unfortunately that forum is not particularly active, so I'm trying my luck here.
I've solved the issue by going to the ARCamera gameobject, then in the Vuforia Behavior component, I changed the World Center Mode from DEVICE to FIRST_TARGET. This allows multiple instances of ARCameras to be in different positions.
More info on World Center Mode can be found here.

Vuforia 6.2.2 Unity 5.4.4 Camera does not work

Everyone.
Vuforia Camera does not work, but only black screen on Android 6.0+ versions.
Vuforia Version is 6.2.2 and Unity version is 5.4.4
But vuforia camera works on less than android 5.0
How can I fix this issues?
I hope you to teach me about this.
This is an interesting problem I have and there is an unacceptable temporary fix I am using while testing this system out. For the iPhone 7, to get past this suspend the app and then return to it. After about 2 seconds the camera will work. I am guessing it will work similar for android. I will update with a better fix if I come by a real fix after my testing if I decide to use this system.
Edit:
Short answer:
Delete the meta data for any pre-existing custom camera controller script. If you are using your own camera controller you need to disable the vuforia one and delete the meta for that. You are basically hijacking the camera feed after it starts.
long: I began this application by building out my own system and to test vuforia I disabled these items (like the camera feed). I went through the logs and saw that even with these items disabled the camera feed was still running and this feed started AFTER the vuforia camera so basically my own start() methods (even though they were disabled) were hijacking the camera from vuforia. It turns out that my meta data for my camera controller script was still poised to run the script even though everything was disabled. After deleting my camera controller script meta data it worked fine. You can also just delete the camera controller and it will delete the meta. By camera controller I mean my custom written camera controller that was built before I added in vuforia. This is a hard to find fix because it works fine in unity, but not when you build out to a device. The meta doesn't seem to update for the device, just the unity engine.
If you are using the vuforia camera make sure you either use the vuforia plane that comes as a child of the camera or delete the meta data to whatever camera script you wrote. You should get camera feed in a new empty project just by dropping in the vuforia camera, there is no need to build your own script and if you do, make sure one isn't overriding the other like mine was.
If you want to simply test to make sure it isn't your device or code create a NEW empty unity project, import vuforia (no need to import the database, just the sdk) and then drop the vuforia camera into the project and test it. Don't add anything extra or do any image recognition. If this works, it's your code somewhere.
I am using Vuforia 6.2.10, Unity 5.4.4.f(64 bit) and a Nexus 7 Android 6. I had the same issue where the camera was black. I started over, adding one component at a time. The AR Camera alone worked fine. Adding a Target Image also worked. I added a plane and image to the TI and the camera failed to work. Setting the image texture type to Sprite 2d and ui seemed to help.
I discovered that by deleting the app from the device and creating a apk file each time it worked.
I am not sure I'd count on Vuforia in the near term.

Get camera frame from Vuforia in Unity

I want to create a simple AR application using unity3d, vuforia package and opencv. Normally in unity AR app, selected 2d target is found and virtual 3d object is projected.
I want to change these scenario.
Open AR camera
Get frame from camera
Process the frame using opencv functions(maybe opencvsharp)
Find marker and project virtual object
To do this task, I did below steps :
create a new project in unity
import vuforia package
delete main camera
add AR camera
The AR camera has 3 c# files, I open and look them. But I don't see any code open camera and get frame. The screenshot is below :
EDIT
Accepted answer helps load user defined marker.
This is the basic workflow of Vuforia using Unity.
Start from License Manager
On the License Manager page go to Add License Key
bPut in your details and if you don't plan to use a paid version in the Select Plan option click None
Now go to Target Manager
First Add a Database (if you don't have one already) and give it a Name, add License Key and click Create
Now inside your Database click Add Target and again put in all the details and upload your image.
Now Download Database and make sure you've set it's usage to Unity Editor
Now within Unity
Add your ARCamera
Import the Database you downlaoded into Unity through Assets - Import Package - Custom Package
Now in your Inspector Panel of ARCamera, you'll see Data Set Load Behaviour has your unity package name. Check it, and check Active as well
Now in Assets, Go to Qualcomm - Prefabs - ImageTarget and drag Image Target onto the scene.
In the ImageTarget Inspector you'll find ImageTarget behaviour and you can set the values to your Image.
From here on, what you do is completely up to you. You can add a Model or animate over is as you would on normal Unity applicatoins.
User Defined Targets can be found at: https://developer.vuforia.com/library/articles/Solution/Unity-Load-DataSet-from-SD-Card
Hope this helps.

How to use vuforia on PC Application

i'm new on vuforia and i need some help with this topic.
Can someone tells me if its possible use vuforia with a webcam on a pc application?
I got webcam frames on a plane texture and i tried to pass those textures to vuforia but i have not got it work.
I used WebCamTexture to get frames of webcam.
I'm not familiar with Vuforia (although it looks interesting, I'm going to try that out myself this weekend!), I might have a suggestion.
Is it possible Vuforia doesn't know what to do because of the images being WebCamTexture instead of something like Texture2d?
WebCamTexture is a Texture (Texture2D, WebCamTexture, RenderTexture all extend from Texture but they aren't exchangeable).
So, try to convert your texture and pass that on to Vuforia?
var tx2d = new Texture2D();
tx2d.SetPixels((go.renderer.material.mainTexture as WebCamTexture).GetPixels());
EDIT: What I found here, under the section Running in the editor:
There is a specific Web Cam Behaviour script.
To use Play Mode for Vuforia in Unity Pro, simply select the attached,
or built-in, webcam that you want to use from the Camera Device menu,
and then activate Play Mode using the Play button at the top of the
Editor UI.
You can also use the standard Unity Play Mode with non-Pro Unity
versions and by setting ‘Don’t use for Play Mode’ in the Web Cam
Behaviour component.
To use standard Play Mode, adjust the transform of the ARCamera object
to get your entire scene in view, and then run the application in the
Unity editor. There is no live camera image or tracking in standard
Play Mode, instead all Targets are assumed to be visible. This allows
you to test the non-AR components of your application, such as scripts
and animations, without having to deploy to the device each time.
Have you tried the $250 plugin at http://holographi.space/ ? I haven't paid $250 for it yet.

Categories