首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何像Google Measure app一样使用sceneform SDK和ARCore获取特定对象的宽度和高度?

要像Google Measure app一样使用sceneform SDK和ARCore获取特定对象的宽度和高度,可以按照以下步骤进行:

  1. 确保你的设备支持ARCore,并在设备上安装ARCore和sceneform SDK。
  2. 创建一个新的Android项目,并在项目中添加sceneform SDK的依赖。
  3. 在布局文件中添加一个AR场景视图(ArFragment)来显示AR场景。
  4. 在代码中,使用ARCore的Session对象来启动AR会话,并在AR会话中加载3D模型。
  5. 使用AR会话中的Raycast功能,通过射线与场景中的物体进行交互,以获取特定对象的位置和尺寸信息。
  6. 根据获取的位置和尺寸信息,计算特定对象的宽度和高度。
  7. 将计算结果显示在屏幕上,可以使用Android的UI组件,如TextView。

以下是一个示例代码,展示了如何使用sceneform SDK和ARCore获取特定对象的宽度和高度:

代码语言:txt
复制
// 导入所需的类
import com.google.ar.core.HitResult;
import com.google.ar.core.Plane;
import com.google.ar.sceneform.ArSceneView;
import com.google.ar.sceneform.FrameTime;
import com.google.ar.sceneform.math.Vector3;
import com.google.ar.sceneform.ux.ArFragment;
import com.google.ar.sceneform.ux.TransformableNode;

// 在Activity或Fragment中的onCreate方法中初始化AR场景
ArFragment arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.arFragment);
arFragment.getArSceneView().getScene().addOnUpdateListener(this::onUpdateFrame);

// 在onUpdateFrame方法中进行射线检测和计算宽度和高度
private void onUpdateFrame(FrameTime frameTime) {
    ArSceneView arSceneView = arFragment.getArSceneView();
    if (arSceneView == null) {
        return;
    }

    // 获取屏幕中心点的位置
    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int screenWidth = displayMetrics.widthPixels;
    int screenHeight = displayMetrics.heightPixels;
    float screenCenterX = screenWidth / 2.0f;
    float screenCenterY = screenHeight / 2.0f;

    // 进行射线检测
    List<HitResult> hitResults = arSceneView.getArFrame().hitTest(screenCenterX, screenCenterY);
    for (HitResult hitResult : hitResults) {
        // 判断是否与平面相交
        Trackable trackable = hitResult.getTrackable();
        if (trackable instanceof Plane && ((Plane) trackable).isPoseInPolygon(hitResult.getHitPose())) {
            // 创建一个可变的节点
            TransformableNode node = new TransformableNode(arFragment.getTransformationSystem());
            node.setParent(arSceneView.getScene());
            node.setRenderable(your3DModelRenderable);
            node.setWorldPosition(hitResult.getHitPose().getTranslation());

            // 获取节点的尺寸信息
            Vector3 size = node.getLocalScale();
            float width = size.x;
            float height = size.y;

            // 在屏幕上显示宽度和高度
            TextView widthTextView = findViewById(R.id.widthTextView);
            TextView heightTextView = findViewById(R.id.heightTextView);
            widthTextView.setText("宽度:" + width);
            heightTextView.setText("高度:" + height);

            break;
        }
    }
}

这是一个简单的示例,你可以根据自己的需求进行修改和扩展。在这个示例中,我们使用了ARCore的射线检测功能来获取特定对象的位置和尺寸信息,并将结果显示在屏幕上。

请注意,这只是一个示例,实际应用中可能需要更复杂的逻辑和处理。另外,你可以根据自己的需求选择合适的腾讯云相关产品来支持你的AR应用开发,例如腾讯云的云服务器、云数据库、人工智能服务等。具体的产品和介绍可以参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

是时候来点arcore

真实环境虚拟物体实时地叠加到了同一个画面或空间同时存在。 那么arcore,就好理解了,嗯,是某个为ar开发而实现sdk,事实上ARCore 为许多最受欢迎开发环境提供了 SDK。...二,sdk导入及xml文件配置 1,xml文件配置,很明显摄像头权限是必不可少,其次还需要一个meta-data,value取值可选必须,这个值依据与你应用是否必须启用arcore,通常我们选择可选...implementation 'com.google.ar.sceneform:core:1.7.0' } 注意,必须要java8.0才可以跑起来,因为arcore依赖了java8一些特性,否则会编译失败...,使用起来非常方便,但是任然需要注意两点; 图像评分很重要,Google建议使用得分至少为 75图像。...可以看到他封装了权限检查,arcore环境检查,所以,Google建议先手使用ArFragment来玩arcore,这样会简单点,你也只需要关心自己业务逻辑,神马权限检查,可用性检查都统统交给他来做

1.5K91

6.22 VR扫描:华硕新机ZenFoneAres,主打ARVR体验;Google Spotlight推VR短片

VRPinea独家点评:这是要拉高VR ready手机性价比吗? 谷歌Tango AR尺子Measure现兼容ARCore设备 ? 谷歌Tango AR尺子Measure现兼容ARCore设备。...据悉,测量应用 Measure最初是作为Tango独占内容在2016年亮相。此外,Measure可以识别物品长度或高度,不管是大型对象(如家具),还是小型对象(如香蕉)。...日前,3D绘画及艺术创作应用SculptrVR登陆PS VR,用户可通过PS VR控制器,来创建任何种类3D对象。...据悉,这款热成像AR头显将AR与红外热技术集成在一起,通过软件算法实现对热源温度检测,并将具有不同温度区分结果显示于AR头显上。 VRPinea独家点评:电力行业福利呀!...此外,《Age of Sail》是Google Spotlight 迄今为止时长最长,情节最复杂作品。 VRPinea独家点评:一大波VR粉丝正在赶来~

30320
  • 谷歌IO 2018进行时:ARCore1.2主推Cloud Anchor共享体验功能,AR地图无需GPS定位

    该版本主要有三项更新:支持多人共享ARCloud Anchors、新增垂直平面识别的Augmented Images、基于Java全新SDK Sceneform。...在iOS上,系统将使用所有内置ARKit功能,如运动跟踪环境评估,并将这些数据同步到云端。...此外,利用AI卫星图像技术,谷歌自动为地图添加新地址商家,并为用户推荐最近路程。Google Maps还会将地理位置等信息标记到相关建筑物上,从而使用户更容易找到目的地。...Google News使用AI带来关联阅读 本次I/O大会中,Google News升级在演讲中也占据不少时间,加上今年从外到内大规模更新,似乎预示着这款App将成为谷歌一个非常重要业务。...新版Google News使用AI技术来介入用户阅读习惯,带来关联阅读。即当一件事情发生后,Google News后台会绘制一张脉络图,以便用户去了解整件事情经过。 ?

    1.1K30

    谷歌IO大会进行时:AI加持五大应用,对话、拍照、阅读无所不能

    该版本主要有三项更新:支持多人共享ARCloud Anchors、新增垂直平面识别的Augmented Images、基于Java全新SDK Sceneform。...在iOS上,系统将使用所有内置ARKit功能,如运动跟踪环境评估,并将这些数据同步到云端。...此外,利用AI卫星图像技术,谷歌自动为地图添加新地址商家,并为用户推荐最近路程。Google Maps还会将地理位置等信息标记到相关建筑物上,从而使用户更容易找到目的地。...Google News使用AI带来关联阅读 本次I/O大会中,Google News升级在演讲中也占据不少时间,加上今年从外到内大规模更新,似乎预示着这款App将成为谷歌一个非常重要业务。...新版Google News使用AI技术来介入用户阅读习惯,带来关联阅读。即当一件事情发生后,Google News后台会绘制一张脉络图,以便用户去了解整件事情经过。

    2.1K100

    深入浅出 ARCore

    用户交互 ARCore使用 hit testing(命中测试) 获取与手机屏幕相对应(x,y)坐标(如通过点击屏幕等交互方式),将其投射到 Camera 3D坐标系中,并返回与命中点射线相交所有平面特征点...姿势改变这项技术特别关键,只有得到姿势,ARCore才可以随着时间推移不断更新环境对象飞机特征点)位置。ARCore将平面点认为是可跟踪特殊类型对象。...实例分析 Google发布 ARCore SDK 中包括了一些例子程序,有了上面的基本知识后,我们就很容易理解他所写 Demo 程序流程了。...isSupported:该方法主要是对 SDK版本及机型做控制。目前官方只支持几款Google三星机子做测试。...其它机型还都不支持ARCore,当然有一些机型通过破解后SDK是可以使用 ARCore。该方法中 Config 参数没有用到。

    3.8K10

    ARCore 初探

    Google I/O大会上推出了升级版Daydream2.0,近期发布了基于Android平台AR SDKARCore,这摆明了就是要怼早一步公布iOS平台AR SDK — ARKit,让无数...其他可以使用ARCore设备 在普通手机上运行该项目,会直接弹出“This device does not support AR”提示,然后就闪退了,连app里面什么样子都看不见,支持ARCore官方推荐手机都是...ARCore VS Tango 上文中ARCore三个核心技术在Tango中都有涉及,而且ARCore SDKso包里面的文件命名都出现了Tango字眼,由此不难猜测出ARCore其实是在Tango...建图定位:ARCoreARKit都使用了离散点云图,跟踪器会提前去判断是否有预加载图,没有的话就自定义新模型,会获取到相机视角下一个3D范围。...市场布局:ARKit只支持A9及以上处理器设备,对应着就是iPhone 6s及以后机型,手机系统高度统一性也奠定了苹果庞大设备基础,目前ARCore预览版只针对少量机型系统,再加上OEM产商各自为营

    6.2K11

    android如何获取view在布局中高度宽度详解

    前言 可能很多情况下,我们都会有在activity中获取view 尺寸大小(宽度高度需求。面对这种情况,很多同学立马反应:这么简单问题,还用你说?你是不是傻。。...然后立马写下getWidth()、getHeight()等方法,洋洋得意就走了。然而事实就是这样吗?实践证明,我们这样是获取不到View宽度高度大小。...下面来一起看看吧 实现方法 一、使用 View.measure 测量 View 该方法测量宽度高度可能与视图绘制完成后真实宽度高度不一致。...,会被多次调用,因此需要在获取到视图宽度高度后执行 remove 方法移除该监听事件。...view.getHeight(); // 获取高度 } }); 七、使用 View.post() 方法 Runnable 对象方法会在 View measure、layout 等事件完成后触发

    6K10

    谷歌增强现实技术ARCore

    据了解,目前Google ARCore只支持Google PixelSamsung Galaxy S8两种型号设备,谷歌表示,他们正在积极与三星、华硕、LG、华为等厂商开展合作,预计今年11月份,将会有超过...环境感知:虚拟物体一般都是放置于平坦平面上,用ARCore可以检测物体水平表面,建立环境认知感,以保证虚拟对象可以准确放置,然后让您看到放置在这些表面上AR物体。...示例项目依赖于特定版本软件,如 Gradle Android SDK 等。如果所需依赖项未能安装,Android Studio 将请求在您开发机上对其进行下载安装。...Unity环境下使用ARCore需要如下环境支持: 安装版本 7.0(API 等级 24)或更高 Android SDK。...基础上,可使用ARCore浏览器;一个是基于iOS,可使用ARKit浏览器。

    2.2K60

    谷歌增强现实技术ARCore

    据了解,目前Google ARCore只支持Google PixelSamsung Galaxy S8两种型号设备,谷歌表示,他们正在积极与三星、华硕、LG、华为等厂商开展合作,预计今年11月份,将会有超过...环境感知:虚拟物体一般都是放置于平坦平面上,用ARCore可以检测物体水平表面,建立环境认知感,以保证虚拟对象可以准确放置,然后让您看到放置在这些表面上AR物体。...示例项目依赖于特定版本软件,如 Gradle Android SDK 等。如果所需依赖项未能安装,Android Studio 将请求在您开发机上对其进行下载安装。然后点击运行即可。...Unity环境下使用ARCore需要如下环境支持: 安装版本 7.0(API 等级 24)或更高 Android SDK。...基础上,可使用ARCore浏览器;一个是基于iOS,可使用ARKit浏览器。

    1.6K101

    2020 Google 多项 ARCore 更新带来AR开发全新可能!

    Google 发布于2018年 ARCore 是增强现实技术开发者平台,为 Android iOS 用户创造有效 AR 体验。...利用 ARCore 环境理解(Environmental Understanding)及平面识别(Plane Finding),识别环境中对象特征,精确地理解环境,加上炫酷逼真的 3D 模型,为孩子们带来身临其境学单词乐趣体验...△ Quick Measure 实现更精准测量 持久云锚点 (Persistent Cloud Anchors) - 让 AR 物体永存秘密 ARCore 云锚点,通过 Google 云服务托管锚点...Google ARCore 团队也许多运营商合作尝试了AR 加 5G 全新应用。...你可以直接到慕课官网搜索 “Google ARCore 入门开发课程“, 马上开始学习! 正在开发AR app 但总是觉得虚拟物件效果不够真实?

    1K20

    WWDC 2018进行时|ARKit 2.0众望所归,新格式USDZ意在何为?

    而要想真正翘起AR/VRC端市场,恐怕也只有苹果、谷歌、Facebook等拥有大体量用户基础(ARkit已覆盖上亿苹果手机用户)大厂领头、逐力才能做到。...大家知道在USDZ格式之前,谷歌、Facebook、微软等都在使用glTF格式。...测量应用程序Measure,展示谷歌AR技术 据悉,随ARKit 2.0一同登陆还有应用程序Measure。顾名思义,这是一款AR测量App,允许用户对现实世界进行一系列测量。...虽然,App Store中AR测量应用不在少数,但不同是,Measure还会根据测量尺寸,自动计算面积、体积等。...显而易见,Measure对象检测、追踪优化、实时算法、即时反馈逼真的渲染等方面的要求,提高不少。而大会中演示视频短小快,或许也正是因为苹果想要展示不是视频本身,而是其背后技术。

    1.1K70

    Jetpack-Compose 学习笔记(三)—— Compose 自定义“View”

    App 结构 Scaffold 脚手架组件,顺便学习了 Surface、Modifier 一些使用,还有 ConstraintLayout 在Compose 中使用方法。...width 直接由 Placeable 对象就可获得(placeable.width),而高度由示意图可以得出计算方法:height = placeable.height + d,即普通 Text 高度再加上...在这里我们自定义 Layout 摆放比较简单,就是 Y 轴上有个偏移量,X 轴上没有偏移,看图2 也可直观得知。 那么如何使用呢?...通过上面的操作,我们已经得知每行 children 最大高度,那么所有行高度相加就可以得到自定义 Layout 高度了;而所有行中宽度最大值就是自定义 Layout 宽度了。...在求宽度 width 时,它还使用了 coerceIn 方法对 width 进行了限制,限制 width 在 constraints 约束最小值最大值之间,如果超出了则会被设置成最小值或最大值。

    1.4K21

    优雅地修改 TabLayout 指示线 Indicator 宽度

    在工作中,经常会碰到把标签栏指示线宽度,做和文字宽度一样,甚至比文字宽度还要短设计。...本文总结了几种修改 Indicator 宽度方案,并讨论如何「优雅」地修改它。 反射 如果你项目中也有修改指示线宽度需求,并且已经在网上找过修改方法,很可能你现在项目中用就是这个方法。...SDK 28+ 属性配置 如果你使用 SDK 版本是 28 或以上,并且需要将 Indicator 宽度修改成和文字宽度一样,那么太棒了,现在你只需要给 TabLayout 配置一个属性就好了: <...,当不同 Tab 里文字宽度一样时,Indicator 宽度也会不一样下面这样。...没关系,我们把它背景设成透明,包含一个固定宽度 shape 就好了,这样: <?xml version="1.0" encoding="utf-8"?

    7.4K60

    Android开发笔记(十二)测量尺寸与下拉刷新

    接着按照原始尺寸去匹配测量模式,这里我们获取宽度模式采用了getChildMeasureSpec方法,获取高度模式采用了makeMeasureSpec方法。...getChildMeasureSpec好处是可以设置边距,并且按常规处理无需我们再分支处理;makeMeasureSpec则更灵活,下拉刷新会不断更新下拉区域实际高度,偏移量可能是负数统统需要重新适配...,直接使用上面计算得到宽和高模式,measure一下就可以了。...当然要用一个视图对象去操作measure aViewObject.measure(widthSpec, heightSpec); 获得测量后宽与高大小 这个也简单,获取宽度用getMeasuredWidth...getLoadingLayoutProxy : 获取加载区域对象

    1.1K40

    10 款 Web 开发最佳 Python 框架

    Carbon Now 使用Carbon增加源代码截图。将代码粘贴到文本区域并自定义颜色主题,背景窗口框架。一旦准备好,您就可以下载照片并感觉摇滚明星。至少那是我们书呆子想象方式。 ?...https://www.brow.sh/ Measure 谷歌推出了一款新增强现实应用。它被称为测量,它可以让您使用手机相机来测量现实世界中事物。它使用他们Android ARCore框架。...id=com.google.tango.measure Cheat.sh 对于你所有的MacLinux用户,你一定要看看cheat.sh。...如今制作网站酷炫方式是ReactNode。这就是Gatsby用武之地。它是一个使用React,WebpackGraphQL构建静态网站生成器。它有适用于不同数据源插件,并且速度很快。 ?...它具有流行iOS移动应用程序截图集,因此您可以从最好专业人士那里学习如何设计。 ?

    1.3K30

    Jetpack-Compose 学习笔记(四)—— Intrinsic 固有特性测量是个啥?看完这篇就知道了

    实际上,是因为 Row 父组件通过 IntrinsicSize预先获取到了它左右两边 Text 组件高度信息了,然后计算出了两个 Text 组件高度最大值作为它自己高度值,最后将分割线高度铺满整个父组件...那之前我们仅使用 Modifier.height(IntrinsicSize.Min)为 Row 高度设置了固有特性测量并没有设置宽度啊?...,当宽度不限时通过子组件预先测量宽高信息所能计算 Row 最小高度是多少。...宽度受限会影响高度例子很常见就是 TextView 中显示长文本情况。显示内容不变时,宽度越小高度自然会越大,可看参考文献2 中例子。...但是在有些需要多次测量使用场景,Compose 提出了设置固有特性测量解决方案。固有特性测量设置,就是允许父组件在正式测量自身宽高前,去获取子组件宽高信息,从而确定自己宽高。

    54840

    Activity 启动过程简单分析

    其实当我们开启 APP 时候会创建一个叫做 ActivityThread 类,我们可以认为这个类是主类,就和 Java 程序中启动类一样,ActivityThread 类有一个 main 函数,这个函数就是我们程序入口...int mWidth;// window 可以使用高度int mHeight;private void performTraversals(){ int desiredWindowWidth;...在重写这个方法时候,你必须调用 setMeasuredDimension(int,int) 来储存测量出来宽度高度。 下面就是调用 setMeasuredDimension() 了。...其中最关键一步就是对 View 两个成员变量进行了赋值(在 setMeasuredDimensionRaw()) 方法中实现 // 这个方法必须在 onMeasure() 方法中被调用用来储存测量出宽度高度...measure 宽度高度是该控件期望尺寸,真正在屏幕上位置大小是由 layout 来决定。接下来就是递归调用他们 onLayout 方法。

    45110

    iPhone屏幕尺寸、分辨率及适配

    对象没有使用系统缓存,并且指定文件名必须包含明确高倍图后缀。...)时,在逻辑上宽度不变高度稍高,之前旧素材布局通过AutoresizingFlexible简单适配即可运行得很好,但由于高宽比增大,上下两端出现黑粗边(典型如LaunchImage)。...注意限定控件元素内容区域宽度以及间距,并设置适当LineBreakMode。表视图支持上下滑动,因此纵向上表格行高内容区域高度可按字号缩放。...打开[截图.png]文件,由于不包含 Sketch 图元对象,无法进行 measure 标注(提示:请在画板中使用该功能)。因此,第一步需要对要相对标注各个UI元素进行对象化。...APP如何适应iPhone 5s/6/6+三种屏幕尺寸?》

    5.9K20

    Android6.0源码分析之View(二)--measure Android6.0源码分析之View(一)

    ,要么是父view对子view宽度测量要求,要么是高度测量要求。...widthMeasureSpec,宽度测量规范:父view给子view规定水平方向上测量规范,测量规范会包含一个mode一个size heightMeasureSpec,高度测量规范:...setMeasuredDimension方法,但所传入参数也是经过了一个计算,其实总共是调用了三个方法, 抽丝剥茧,先来看看最先调用getSuggestedMininumWidth()(高度宽度获取类似...view应该使用最小宽度,这个最小宽度由viewviewdrawable共同决定 《2》,getDefaultSize(int size, int measureSpec) public...} 方法功能: 返回一个默认size:宽度或者是高度

    78390
    领券