Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Arcolib - Augmented Reality Components

Discussion in 'Assets and Asset Store' started by yezaldivar, Jan 20, 2017.

  1. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    @yezaldivar : yes, you need 2 camera for stereo reconstruction. But if the user wants to do AR on static image, you can use two pictures, taken a few feet apart, and use algorithm like StereoBlockMatching to extract a crude depthmap.
     
    yezaldivar likes this.
  2. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Hi
    Arcolib modules will always be designed to be used offline (No subscription, no connection at all ). Online extra services will be also available in a near future but only as optional feature (this services will have other business model due are optional), You may willing to use them for bigger projects that requires complex computing. (always with a fairly price)
    Regards
     
  3. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Yeap, but in that case the whole scene must be kept identical after the capture, because any changes will not be registered in the estimated reconstruction…
     
  4. Pode

    Pode

    Joined:
    Nov 13, 2013
    Posts:
    145
    @yezaldivar : yes, the user must accept some tradeoff in his usecase.
     
  5. blacksun666

    blacksun666

    Joined:
    Dec 17, 2015
    Posts:
    214
    Is there any documentation, tutorial or video that is somewhere between the getting started video and the document with the list of api and classes?
     
  6. yhloon

    yhloon

    Joined:
    May 2, 2014
    Posts:
    3
    Hi, I'm wondering Is there anyway to retrieve the arcolib camera's position, so that I can make the tracker gameobject "look at" the camera.

    Thanks!
     
  7. rmuk

    rmuk

    Joined:
    Feb 18, 2015
    Posts:
    65
    Question, when submitting an app to the google play store that uses the camera, it requires a ToS that deals with image capture. Does anyone know of a template/sample for an AR app? We're not storing/saving/sharing any images, just position tracking, so i don't know how necessary that really is, but they require it.
     
  8. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    Is there a way to get the nft marker width and height size so I can set game object scale and position more accurate?
     
  9. Gustavo-Quiroz

    Gustavo-Quiroz

    Joined:
    Jul 26, 2013
    Posts:
    38
    Arcolib uses the MainCamera to render the scene so you can use this line in the object that you want to look at the camera:

    Code (CSharp):
    1. void Update()
    2.     {
    3.         transform.LookAt(Camera.main.transform.position);
    4.     }
     
    yhloon, marcipw and yezaldivar like this.
  10. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Unfortunately we lack of documentation mainly because the appearance of components are changing and I am waiting to reach some stable product version to do it. I promise to update the current tutorials and create new tutorials showing all the featuares available in the package that most people has not seen.
     
    blacksun666 and marcipw like this.
  11. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Symbols estimation only contains position and orientation. You must need to set the desired scale to your objects until they fit to the real world dimensions. You can also perform your own calculations by measuring the real world image dimensions and then translating the results to Unity scale units.
     
    deddygnwn14 likes this.
  12. alfred_191919

    alfred_191919

    Joined:
    Oct 4, 2014
    Posts:
    2
    Hi, nice asset, I'm very interested on it, but I have some questions, I've already watch the introduction video, where you teach how to start using Arcolib, but as far as I saw, excuse me if I'm wrong, it is only possible to attach a 3D model when a target is detected, what I want to know is(because I need to do all the thing I'm going to ask), could that models be animated using Unity's animator?... Is it possible for example to attach a Unity Canvas and position it in a determined way relative to the target, and when detected, to perform actions like press a button, animate UI object using Unity's animator, or use the EventSystem, etc, as you may do in any app?... Additionaly, things like showing and playing native Unity's video or audio components when a target is detected, finally, detect a target and doing thins like open a URL in the local browser...
    I really like your asset, but before buying it, I want to know if it's possible to perform things like that in the same simple way I do that on Vuforia, thanks for your time, and thanks for your great work...
     
  13. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    Hi Alfred, @yezaldivar has implemented an event system similar to Vuforia's 'on tracker found' and 'on tracker lost'. It is really easy to use. Easier than Vuforia in my opinion. I think he is putting it in the next release but I am sure he will clarify.

     
  14. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    @yezaldivar
    Will there be this kind of feature to get marker size like vuforia in the future?

    And another thing I'm sorry if a ask too much, but will you create extended tracking feature like vufora in the future?

    I'm still not fully understand of how your plugin work, but I tried to create custom extended tracking using two FeatureTrackerInspector and adding RuntimeFeaturesModelBuilder to one of them, then it will capture image of environment and clone my 3D object/gameobject to it. But what I did is not perfect because there will be two of the same object in the scene.
     
  15. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    That sounds interesting. I am going to have to give that a try.
     
    Last edited: May 8, 2017
  16. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    Yup yup. it would be easier if there is a way to make multiple marker for a single object in the scene.

    Btw about the performance, i got really low fps on my android phone everytime a marker/tracker is found and showing the game object. I think that's due to the feature tracker using Update for it's cycle instead of thread. Correct me if I'm wrong.

    Is there a way to increase the performance? I'm using webcam texture as input source.Also when I set it to native camera, the apps is force close on my android device. So I never know the difference of performance between those two input.

    And I'm sorry, when is the next update will be release? And will there be any upgrade to performance/fps?

    Thanks
     
  17. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    The native performance works really well on android for me.
    I am testing it on a samsung s7 edge with no issues. What device are you using?
     
  18. R00man

    R00man

    Joined:
    Aug 28, 2012
    Posts:
    3
    What is Prepost Camera Input, and how does it differ from Native Camera Input? Which should I choose. I tried to google for this but it seems that these terms are ad hoc.
     
    Last edited: May 9, 2017
    marcipw likes this.
  19. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    @mrmdesign
    I got error like this:

    05-10 10:36:38.593 25930-25946/com.anakpintar.arcolib A/art: art/runtime/java_vm_ext.cc:410] from boolean com.unity3d.player.UnityPlayer.nativeRender()
    05-10 10:36:38.593 25930-25946/com.anakpintar.arcolib A/art: art/runtime/java_vm_ext.cc:410] "UnityMain" prio=5 tid=10 Runnable
    05-10 10:36:38.594 25930-25946/com.anakpintar.arcolib A/art: art/runtime/java_vm_ext.cc:410] at com.unity3d.player.UnityPlayer.nativeRender(Native method)
    05-10 10:36:38.594 25930-25946/com.anakpintar.arcolib A/art: art/runtime/java_vm_ext.cc:410] at com.unity3d.player.UnityPlayer.a(unavailable:-1)
    05-10 10:36:38.594 25930-25946/com.anakpintar.arcolib A/art: art/runtime/java_vm_ext.cc:410] at com.unity3d.player.UnityPlayer$b$1.handleMessage(unavailable:-1)
    05-10 10:36:38.594 25930-25946/com.anakpintar.arcolib A/art: art/runtime/java_vm_ext.cc:410] at com.unity3d.player.UnityPlayer$b.run(unavailable:-1)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] "UnityMain" prio=5 tid=10 Native
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer.nativeRender(Native method)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer.a(unavailable:-1)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer$b$1.handleMessage(unavailable:-1)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer$b.run(unavailable:-1)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] "UnityMain" prio=5 tid=10 Runnable
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer.nativeRender(Native method)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer.a(unavailable:-1)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer$b$1.handleMessage(unavailable:-1)
    05-10 10:36:38.939 25930-25946/com.anakpintar.arcolib A/art: art/runtime/runtime.cc:399] at com.unity3d.player.UnityPlayer$b.run(unavailable:-1)
    05-10 10:36:38.942 25930-25946/com.anakpintar.arcolib A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 25946 (UnityMain)
    05-10 10:36:38.999 447-447/? A/DEBUG: pid: 25930, tid: 25946, name: UnityMain >>> com.anakpintar.arcolib <<<
    05-10 10:36:40.156 1194-2845/? E/InputDispatcher: channel 'befff73 com.anakpintar.arcolib/com.unity3d.player.UnityPlayerActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

    I create empty project and add arcolib to the project and then I, use the sample scene from arcolib.
    My device is Samsung Galaxy J7 and Motorola Moto X Pure.
     
  20. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    Oh I think I know the cause of that error, it's because I enabled script debugging on the unity build setting.
    And also the native camera performance is actually good.
     
  21. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    Great! I am glad you got that sorted. I think the performance is pretty awesome. I am really excited about the next update. @yezaldivar is working on some fantastic features. I am certain this asset is going to be one of my best investments ever.
     
  22. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    I would like to know this too actually. Is it for camera effects maybe? It's one of the only things I have not really tested.
     
  23. dnoparker

    dnoparker

    Joined:
    Aug 28, 2013
    Posts:
    63
    Hello,

    We are trying to use your asset for basic AR for Andriod. But unfortunately, the tracking is not working as we expect.

    We have tried both the demo (the Acrolib cube on the flora pattern) and our own marker. When using a large marker, the camera framerate slows down to like 10fps, and the tracking is extremely poor. It jitters, moves out of place and the rotation is off.
    Printing the marker smaller improves the quality, but it's still far from usable.

    We have used both Vuforia and Metaio in the past, so we know what kind of performance is possible with an Andriod device.
    I am posting this here in hopes that there is a solution to this problem. We tried changing the 'symbols per frame' variable, but it makes little to no difference.
    Modifying the resolution of the camera helps, but again it's still far from usable.

    Here is a video of it in action (camera settings at the lowest) -


    Any help would be great. Otherwise, we might have to look elsewhere for a better solution.

    As a side note - The barcode tracker works fine. (Apart from the odd frame drop where the tracked object disappears momentarily)
     
    Last edited: May 19, 2017
  24. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    Hi,
    Anyone get this issue with native camera?

    I got this error when I load another scene and leaving AR scene.
    Caused by: java.lang.RuntimeException: Camera is being used after Camera.release() was called
    It caused by NativeCameraInputClose(_nativeInputSourcePtr); that called on OnDestroy() method.
    When I comment that part out, the error is gone. but ofcourse the camera will still running in the background even in main menu scene.

    And this error I get when I pause the apps (by pressing home button) and resume the apps.
    Caused by: java.lang.RuntimeException: Unable to resume activity {com.anakpintar.arcolib/com.unity3d.player.UnityPlayerActivity}: java.lang.RuntimeException: Fail to connect to camera service
    and
    Caused by: java.lang.RuntimeException: Fail to connect to camera service
     
  25. deddygnwn14

    deddygnwn14

    Joined:
    May 2, 2017
    Posts:
    9
    I'm sorry but I was in hurry so I fix arcolib.jar by myself.
    It was error in java side, in CameraCapture class.
    I add _camera.setPreviewCallback(null); after _camera.stopPreview(); and before _camera.release();
    this will fix error and force close when leaving ar scene.

    And then I add release(); function at the begining of open() function.
    this will fix error and forceclose when application/activity paused and resume back.

    Hope this would help if anyone face the same problem.
     
  26. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    Thank you @deddygnwn14
    I know @yezaldivar is working really hard on the next version but your fix is really useful in the mean time.
     
  27. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Is there a sample APK we can try to test the tracking out? The videos I have seen on here seem to have a lot of jitter compared to Vuforia for example.
     
  28. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    I am sorry to hear that you are having issues. Arcolib works really well on my Galaxy S7 Edge and my iPhone 6. The tracking is very different from what is shown in your video. Are you setting it to use Native Camera Input instead of Webcam Texture Input? This does make a difference.

    I know the asset will also be updated soon and the developer is really responsive and helpful. Have you tried messaging him?
     
    theolagendijk likes this.
  29. edufurla

    edufurla

    Joined:
    Mar 7, 2014
    Posts:
    19
    Hi.
    tI am trying build to IOS but I am receiving a message saying the arcolib libraries was build to IOS 10.1 or superior. Will the program work in IOS 7, 8 or 9?
    I was able to publish to 10.1 using IOS Project Builder for PC.
    Thank you
     
  30. dnoparker

    dnoparker

    Joined:
    Aug 28, 2013
    Posts:
    63
    It does this regardless of the settings we use. I think we may request a refund and wait till this is a little more developed.
     
  31. burgermeiste

    burgermeiste

    Joined:
    May 17, 2015
    Posts:
    2
    I'm having an issue getting my iPhone 6s Plus camera to recognize. An old Logitech webcam is working fine. When I plug in my iPhone, The Editor recognizes the iPhone as a Device. Please help.

    The only possible problem I can think of is I'm running Unity on Windows.
     
    Last edited: May 20, 2017
  32. burgermeiste

    burgermeiste

    Joined:
    May 17, 2015
    Posts:
    2
    I had this same problem. I disabled "Detect Only" from the marker settings. This setting is disabled by default. It made a huge difference.
     
  33. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,928
    @yezaldivar Can i make dynamic markers?
    For example i load 10 random images from net online, and i tell Arcolib that these are 10 images with 10 functions, so whenever an image is detect, acrolib call its relvant function.
     
  34. Eyehawk

    Eyehawk

    Joined:
    Dec 24, 2012
    Posts:
    288
    Hi there - I've been using Arcolib for a week now and it's amazing! It's a heck of a lot easier to set up than Vuforia at a fraction of the cost.

    I was just wondering what the limitations are for Arcolib in terms of maximum amount of markers we can recognize per app? This isn't necessarily how many can be recognized simultaneously, but just in total.
     
    Malbers and theolagendijk like this.
  35. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    What is the tracking quality like compared to Vuforia? Do you get much drift or jitter from the augmented content on your targets? Were interested in this but want to know what the performance is like.
     
  36. Eyehawk

    Eyehawk

    Joined:
    Dec 24, 2012
    Posts:
    288
    Vuforia is definitely more stable jitter-wise from the little bit that I've seen. But then Arcolib seems to acquire the image slightly more quickly from my tests. The jitter might be mitigated by the quality of the markers as well - I'm going to do some more testing in the near future.

    The main reason I'll be using Arcolib is mainly because of the comparative ease of setup, and the fact that there is only the one off cost. Vuforia has a $499 or something cost per app for 100 images or something like that as a starter.
     
    theolagendijk and marcipw like this.
  37. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    I think the next Arcolib update is going to be a really good one too!
     
    Malbers likes this.
  38. Jesus

    Jesus

    Joined:
    Jul 12, 2010
    Posts:
    498
    Yeah that Vuforia license was absolute madness, even working for a company that could afford to do it, actually wanting to sign onto that just wasn't happening.

    Eventually bumbled my way through the Arcolib demo scenes, figured most things out. Once it's stabilized, an idiot level step by step for AR n00bs would probably be helpful. I'm certainly no expert, but for showing people who aren't even in IT that you can render an object on the table behind a laptop (I'm using the back camera of a Surface) and then move/rotate the marker to get better angles seems like a no-brainer, an easy win.

    I'm messing with position; getting the object to stay flat and level, and having the camera mode around it (instead of the other way around). Kind of a bit hacky at the moment, but since the default cam stays at 0 and the object moves, I just reversed it and set the object position to 0 and gave the camera the object's position/rotation inverted.

    Are there any tips to getting ultra-smooth and stable images? I'm thinking of having an A4 sheet of paper with a marker on each corner, then averaging out as many as it can see. So any jittering in one marker will be lessened by whatever stability there is in 4. Also, maybe using a smooth script on the camera (average the last 2-5 frames?).

    Finally, in terms of getting lighting information, I've had some success with a silver christmas ball (like you might hang on a tree) in a specified position as a ghetto grade chromeball. Nothing I'm rendering is going to be shinier than it, and since it's a sphere I can rebuild the UVs enough to blur it for diffuse lighting. Has anyone tried this madness before and have any tips?
     
    yezaldivar, Eyehawk and marcipw like this.
  39. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    I will be happy to do a video tutorial (when I get the time - So busy at the moment that I can barely eat or sleep). Square markers definitely work way better than anything else for Arcolib right now but there is a solution coming in the next update. @yezaldivar has been working hard on this next version.

    I am working on a client project where Arcolib is used to find the tracker. When the 3D object is created, I switch to pokemon go style gyro controls so that it stays fixed in the 'real world' (as long as you don't move backwards, forwards, left or right. Arcolib made this quite simple for me.

    On a previous project using Vuforia, I had to use google cardboard and mess around with merging android manifests and other bits.

    Arcolib is still in beta and it's usable so I am expecting great things when we get to a full release version.
     
  40. Kingtem

    Kingtem

    Joined:
    Jun 19, 2011
    Posts:
    18
    I've read all of the posts in this thread for hours. It looks this is a really awesome tool.

    So, just one question:

    If i create some feature data in editor, can i put them on my server, then loading them at runtime from server?

    So that i can update my feature database from internet.
     
  41. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    I am not 100% sure on that one but I don't see any reason why you couldn't. Arcolib can create and save feature data at runtime too.
     
    Kingtem likes this.
  42. Kingtem

    Kingtem

    Joined:
    Jun 19, 2011
    Posts:
    18
    Nice, already purchased!

    Cant to wait to get the new update soon :-D
     
    yezaldivar likes this.
  43. sajberek

    sajberek

    Joined:
    Dec 14, 2013
    Posts:
    14
    Is there a way to deploy solution to iOS 9.0 with disabled bitcode? (enable bitcode=false)?
     
  44. marcipw

    marcipw

    Joined:
    Apr 18, 2013
    Posts:
    239
    If you turn it off in Xcode it should work Ok.
     
  45. sajberek

    sajberek

    Joined:
    Dec 14, 2013
    Posts:
    14
    Hi,

    I'm getting this error when I try to build in Xcode:

    Undefined symbols for architecture armv7:
    "_OBJC_CLASS_$_AVCaptureDeviceDiscoverySession", referenced from:
    objc-class-ref in libarco.a(iOSCameraCapture.o)
    "_AVCaptureDeviceTypeBuiltInWideAngleCamera", referenced from:
    -[iOSCameraImpl cameraWithPosition:] in libarco.a(iOSCameraCapture.o)
    "_AVCaptureDeviceTypeBuiltInDuoCamera", referenced from:
    -[iOSCameraImpl cameraWithPosition:] in libarco.a(iOSCameraCapture.o)
    "_kUTTypeMovie", referenced from:
    -[ISN_Camera GetVideo] in ISN_Camera.o
    -[ISN_Camera imagePickerController:didFinishPickingMediaWithInfo:] in ISN_Camera.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Any ideas?
     
  46. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Hi
    You probably need to update your Xcode iOS SDK to 10+, because this is the new API used to handle cameras. Previous to this iOS version other APIs was used but Arcolib uses the latest modules. I can add a conditional compilation option to support the old camera API but for now you must update to the latest iOS SDK.
     
    theolagendijk likes this.
  47. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Yes, you can. Just use
    Code (CSharp):
    1.  
    2. FeaturesModel.Load(string path);
    3.  
    always setting a valid path pointing to a binary file containing features descriptors(some file.bytes generated with editor). Then append that model to the FeaturesTracker using
    Code (CSharp):
    1.  
    2. FeaturesTracker.Stop();
    3. FeaturesTracker.AppendTrainingData(FeaturesModel model);
    4. FeaturesTracker.Start();
    5.  
    You need to stop the tracker, append the new models to the tracker and start it again.
     
    Last edited: May 26, 2017
    theolagendijk and Kingtem like this.
  48. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    In theory there are not limit for images to be recognized, but if you increase the amount of models the analysis definitely is going to be slower. You also can add a large collection of models but only enable a few of them and switch the state of the models according you need them for your achievements on your app. If you need to keep all models enabled all the time it also is going to work but you will see the responsiveness affected, for that reason Vuforia uses their cloud recognition for large amount of targets.
     
    Eyehawk, theolagendijk and Kingtem like this.
  49. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Hi
    Please update the jdk version on your machine before exporting your project. When you use the NativeCamera on mobile device the performance is much better. Yes, there will be improvements in the coming version for tracking stability and performance, but the biggest boosting will be when I port all algorithms to GPU version, (but this is not easy to achieve mainly for armv7 architectures).

    Regards
     
    theolagendijk likes this.
  50. yezaldivar

    yezaldivar

    Joined:
    Aug 24, 2016
    Posts:
    147
    Hi
    Sorry, maybe I don't understand your question but if you are trying to use your iphone camera from the Editor mode this is not going to work. Export your project to Xcode project and there you can try it in the phone.