我很想知道,每个基于视觉的移动增强现实框架的优缺点在哪里?在哪种情况下应该决定什么?你会选择Vuforia,因为它是免费的,没有品牌吗?其中一个框架缺少哪些重要功能?免费版Metaio SDK(品牌和Metaio启动画面除外)是否有限制?
我认为这些是支持iOS和Android的最重要的框架.我知道metaio支持电影纹理和MD2(动画)导出和Vuforia没有(至少不在基本状态).
编辑:
这是一个3小时的会议,回顾了市场上最好的Mobile AR SDK以及如何开始使用它们:教程:面向开发人员的十大增强现实SDK
您还应该从增强现实实验室SL中查看ARLab.它具有用于AR浏览器,图像匹配,图像跟踪,3D引擎,虚拟按钮的不同AR-SDK.但这不是免费的.
Wikitude的ARchitect SDK具有Vuforia-Extension和Blackberry 10支持.这也可能非常有趣.
该拉亚SDK现在可用于iOS和Android的3D,动画,视频AR和QR码扫描仪
DARAM也是适用于Android,iOS,Windows 8和Mac的优秀SDK.
ARPA有Unity-Plugin和Google Glass SDK.
这是增强现实SDK和框架的良好比较图表
Apple收购了Metaio.Metaio的未来不确定.(2015年5月28日)
Magic Leap宣布推出面向虚幻和Unity的增强现实开发者SDK
Vuforia现在已经支付了许可和演示应用程序的能力而没有免费的Starter计划的水印 - 它现在只出现在特定日期的第一个应用程序启动期间.这是为了支持想要在不显示水印的情况下向客户进行演示的开发人员.(2015年5月6日),Qualcomm将其Vuforia业务出售给PTC(2015年10月12日)
ARKit iOS 11引入了ARKit,这是一个新的框架,可让您轻松为iPhone和iPad创建无与伦比的增强现实体验.通过将数字对象和信息与您周围的环境相结合,ARKit将应用程序带到了屏幕之外,使他们能够以全新的方式与现实世界进行交互.(Juni 2017)
8th Wall XR是世界上第一个适用于所有常用iOS和Android手机的AR平台,可与ARKit和ARCore无缝集成.(2017年8月)
ARCore是谷歌对Apple的ARKit的回答.它旨在以相对简单的方式为所有Android手机带来增强现实功能.它还取代了Project Tango,后者需要专门的硬件才能运行.
有可能计算两个之间的距离HitResult
吗?
或者我们如何使用ARCore计算实际距离(例如米)?
我是增强现实领域的初学者,致力于使用智能手机创建建筑计划(平面图,房间平面图等,具有精确测量)的应用程序.所以我正在研究可用于此的最佳AR SDK.Vuforia对抗ARCore和ARKit的文章并不多.
请建议使用最好的SDK,各自的优点和缺点.
我的目标是在物理对象上覆盖材质/纹理(这将是一个建筑模型),我将拥有相同的3D模型.模型将是静态的(如果有帮助的话,在桌子上),但我显然想从任何一侧看对象.我的物理模型的占地面积往往不小于15x15cm,可能大到2-3平方公尺,但我愿意改变模型的大小以使用ARCore的功能.
我知道ARCore主要用于将数字对象固定在平面水平面上.我的主要问题是,在目前的状态下,它是否有能力实现我的最终目标?如果我有这个权利,它会记录物理点云数据,并尝试将其与我的数字模型的点云数据相匹配,然后将两者重叠在手机屏幕上?
如果那真的不是ARCore的目的,那么我应该关注一个替代方案吗?在我的脑海里,这听起来相当简单,但我确信如果我以低效的方式解决这个问题,我将无法摆脱困境.说到深度,我宁愿不使用深度传感器,因为我的目标设备是手机.
我是Unity的新手,我正在尝试将Unity游戏(它有ARcore)集成到原生Android应用程序中.
我能够在一个新的HelloWorld应用程序中启动统一,但无法在我的真实应用程序(具有其他模块)中启动.
注意:当我从Unity项目构建一个android库时,我包括armeabi-v7a和x86架构.
java.lang.UnsatisfiedLinkError中:未找到无效com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator()实现在com.unity3d.player.UnityPlayer(试过Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator和Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)在com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator(本机方法) .resume(未知来源:37)com.rccl.soakTest.UnityPlayerActivity.onResume(UnityPlayerActivity.java:58)在android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1361)的android.app.Activity.performResume(活动) .java:7344)在Android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3636)的android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)的android.app.ActivityThread.performResumeActivity(ActivityThread.java:3763)在android.app.ActivityThread.-wrap11(未知来源:0)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1696)atr 在android.app.Looper.loop(Looper.java:164)的oid.os.Handler.dispatchMessage(Handler.java:105)位于android.app.ActivityThread.main(ActivityThread.java:6938)的java.lang.reflect .Method.invoke(Native Method)位于com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:327)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
在以下设备上测试:SamsungS8(Oreo),Emulator-Nexus 6(Oreo)
我想知道是否有人使用ARCore SDK实时识别设备前面的垂直平面.
通过使用线方程定义墙来设法获得不错的结果:
z = Multiplier * x + Constant (For every y)
Run Code Online (Sandbox Code Playgroud)
通过"for y y"评论我的意思是我忽略了y轴(从房间的2d映射看上面的墙),以便计算定义墙的线.
乘数是点之间的旋转:
let angleDeg = Float((360 - angle + 360) % 360) * Float.pi / 180.0;
Run Code Online (Sandbox Code Playgroud)
所有计算是:
let angle: Int = Int((atan2(pointA.z - pointB.z, pointA.x - pointB.x) * 180) / Float.pi) % 360
yRotation = Float((360 - angle + 360) % 360) * Float.pi / 180.0
if pointA.x == pointB.x {
multiplier = Float.infinity
} else {
multiplier = (pointA.z - pointB.z) / (pointA.x - …
Run Code Online (Sandbox Code Playgroud) 与ARCore兼容的下一代Android智能手机是什么?
是否有已知的未来兼容设备列表?也许是一般项目时间表?
我们即将购买一些用于AR开发评估的单元,起初我们考虑尝试其中一个Tango设备(我们已经有过Tango的良好体验),但我们目前的赌注是ARCore平台将以其优势击败它市场份额.
目前,兼容设备仅限于:
但显然,我们更愿意选择更多种类(例如S8 +,G6 ......)
我知道有一个已知的黑客可以让它在其他设备上运行,但最好是在我们仍然可以的情况下使用兼容的设备开始.
另外,有没有办法在连接到网络摄像头的模拟器上运行ARCore ?用于测试目的.
android augmented-reality android-emulator android-augmented-reality arcore
我知道默认的glReadPixels()会等到GL线程上执行所有绘图命令.但是当你绑定一个PixelBuffer对象然后调用glReadPixels()时,它应该是异步的,不会等待任何事情.但是当我绑定PBO并执行glReadPixels()时,它会阻塞一段时间.
以下是我初始化PBO的方法:
mPboIds = IntBuffer.allocate(2);
GLES30.glGenBuffers(2, mPboIds);
GLES30.glBindBuffer(GLES30.GL_PIXEL_PACK_BUFFER, mPboIds.get(0));
GLES30.glBufferData(GLES30.GL_PIXEL_PACK_BUFFER, mPboSize, null, GLES30.GL_STATIC_READ); //allocates only memory space given data size
GLES30.glBindBuffer(GLES30.GL_PIXEL_PACK_BUFFER, mPboIds.get(1));
GLES30.glBufferData(GLES30.GL_PIXEL_PACK_BUFFER, mPboSize, null, GLES30.GL_STATIC_READ);
GLES30.glBindBuffer(GLES30.GL_PIXEL_PACK_BUFFER, 0);
Run Code Online (Sandbox Code Playgroud)
然后我用两个缓冲区来打乒乓:
GLES30.glBindBuffer(GLES30.GL_PIXEL_PACK_BUFFER, mPboIds.get(mPboIndex)); //1st PBO
JNIWrapper.glReadPixels(0, 0, mRowStride / mPixelStride, (int)height, GLES30.GL_RGBA, GLES30.GL_UNSIGNED_BYTE); //read pixel from the screen and write to 1st buffer(native C++ code)
//don't load anything in the first frame
if (mInitRecord) {
GLES30.glBindBuffer(GLES30.GL_PIXEL_PACK_BUFFER, 0);
//reverse the index
mPboIndex = (mPboIndex + 1) % 2;
mPboNewIndex = (mPboNewIndex + 1) …
Run Code Online (Sandbox Code Playgroud) 区域学习是Google Tango的一个关键特性,它允许Tango设备在已知环境中定位并保存/加载地图文件(ADF).
从那以后谷歌宣布它正在关闭Tango并将其努力投入到ARCore中,但我没有看到任何与ARCore文档中的区域学习有关的内容.
Android上的区域学习的未来是什么?是否有可能在非Tango/ARCore设备上实现这一目标?
android augmented-reality google-project-tango android-augmented-reality arcore