Vuforia:如何用图像目标示例中的文本更改茶壶?

2023-12-14

如何在 Vuforia Image Target 示例中更改带有文本内容的茶壶?

该示例位于:https://developer.vuforia.com/resources/sample-apps/image-targets-sample-app


我尝试访问 mbrenon 提供的链接。不幸的是他们没有加载。

我的解决方案:

之所以有 Teapot,是因为 Vuforia 使用该类作为要显示的图像。为了拥有平面文本,我创建了自己的 PlaneTextClass。

  1. 转到 src->main->java->com.qualcomm.vuforia.samples->SampleApplication->utils。在那里您可以找到可以使用的对象。

  2. 添加一个名为“TextPlane”的类并从“MeshObject”扩展

    public class TextPlane extends MeshObject {
    
      private final static double planeVertices[] =
            {
                    -50f, -50f, 0.0f, 50f, -50f, 0.0f, 50f, 50f, 0.0f, -50f, 50f, 0.0f
            };
      private final static double planeTexcoords[] =
            {
                    0, 0, 1, 0, 1, 1, 0, 1
            };
      private final static double planeNormals[] =
            {
                    0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1
            };
      private final static short planeIndices[] =
            {
                    0, 1, 2, 0, 2, 3
            };
    
    
      private Buffer mVertBuff;
      private Buffer mTexCoordBuff;
      private Buffer mNormBuff;
      private Buffer mIndBuff;
    
      public TextPlane(){
        mVertBuff = fillBuffer(planeVertices);
        mTexCoordBuff = fillBuffer(planeTexcoords);
        mNormBuff = fillBuffer(planeNormals);
        mIndBuff = fillBuffer(planeIndices);
      }
    
      @Override
      public Buffer getBuffer(BUFFER_TYPE bufferType) {
        Buffer result = null;
        switch (bufferType)
        {
            case BUFFER_TYPE_VERTEX:
                result = mVertBuff;
                break;
            case BUFFER_TYPE_TEXTURE_COORD:
                result = mTexCoordBuff;
                break;
            case BUFFER_TYPE_INDICES:
                result = mIndBuff;
                break;
            case BUFFER_TYPE_NORMALS:
                result = mNormBuff;
            default:
                break;
         }
        return result;
      }
    
      @Override
      public int getNumObjectVertex() {
          return planeVertices.length / 3;
      }
    
      @Override
      public int getNumObjectIndex() {
          return planeIndices.length;
      }}
    

如果要更改图像的大小,请更改 PlaneVertices[] 中的值。

  1. 转到 src->main->java->com.qualcomm.vuforia.samples->VuforiaSamples->app->ImageTargets->ImageTargetRenderer.java

  2. 在 ImageTargetRenderer.java 中添加新类:

private TextPlane mTextPlane;

  1. 在 init Rendering() 方法中初始化 mTextPlane

mTextPlane = new TextPlane();

  1. 将茶壶代码替换为新的文本平面代码:

替换这个:

GLES20.glVertexAttribPointer(vertexHandle, 3, GLES20.GL_FLOAT,
                        false, 0, mTeapot.getVertices());
                GLES20.glVertexAttribPointer(normalHandle, 3, GLES20.GL_FLOAT,
                        false, 0, mTeapot.getNormals());
                GLES20.glVertexAttribPointer(textureCoordHandle, 2,
                        GLES20.GL_FLOAT, false, 0, mTeapot.getTexCoords());

有了这个:

GLES20.glVertexAttribPointer(vertexHandle, 3, GLES20.GL_FLOAT,
                        false, 0, mTextPlane.getVertices());
                GLES20.glVertexAttribPointer(normalHandle, 3, GLES20.GL_FLOAT,
                        false, 0, mTextPlane.getNormals());
                GLES20.glVertexAttribPointer(textureCoordHandle, 2,
                        GLES20.GL_FLOAT, false, 0, mTextPlane.getTexCoords());
  1. 替换这个:

GLES20.glDrawElements(GLES20.GL_TRIANGLES, mTeapot.getNumObjectIndex(), GLES20.GL_UNSIGNED_SHORT, mTeapot.getIndices());

有了这个:

GLES20.glDrawElements(GLES20.GL_TRIANGLES,
                            mTextPlane.getNumObjectIndex(), GLES20.GL_UNSIGNED_SHORT,
                            mTextPlane.getIndices());
  1. 尝试一下。它应该有效!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vuforia:如何用图像目标示例中的文本更改茶壶? 的相关文章

  • 高通 AR Unity 虚拟按钮

    1 虚拟按钮是图像上的目标 用户可以在现实世界中触摸 以触发一个动作的 热点 现有的图像目标的一个实例的VirtualButton预制拖动到场景中添加虚拟按键 平移和缩放按钮 以匹配所需的位置 并给它一个名字 虚拟的按钮添加这样写入到con
  • 【02】2022.11最新超详细Vuforia图片识别教程

    02 2022 11最新超详细Vuforia图片识别教程 文章目录 02 2022 11最新超详细Vuforia图片识别教程 1 Vuforia环境搭建 2 License Key获取及注册 3 AR Camera 4 图片选择条件与图片上
  • 用Unity3D和VuforiaSDK简单做AR应用(入门)

    最近刚开始接触AR技术 结合u3d 算是对增强现实应用入个门 网上的例子不胜枚举 但有些浅尝辄止 根据自己几天来的摸索 毕竟新的技术源自国外 翻起晦涩的外文 一步一个脚印终于爬了出来 先上个史记效果图先 我取名之 鹿君下山 接下来说说步骤
  • 基于unity+高通AR项目的一些总结

    今天 公司做的第一款AR项目终于在苹果appstore上架了 将近三个多月的踩坑和摸索也终于告一段落了 接下来就是不断的进行版本优化和更新 这将是一个漫长的过程 在此 对自己三个多月的开发做一个阶段性的总结 也希望能够帮到一些正在用unit
  • unity AR 教程

    start Frist 去Vuforia 官网注册新号 获取 LicenseKey链接地址 https developer vuforia com 如果unity是2017 2以上会在unity安装的时候自带AR组件 如果是老版本 就下载下
  • Vuforia SDK分析

    Vuforia Architecture 高通组件 camera 单实例 在需要摄像头的时候会返回唯一的摄像头实例 Image Converter 单实例 像素级的图像转换器 在相机的 OpenGL ES rendering 格式和 tra
  • AR小项目的制作过程(一)

    前段时间一直想着初一个教程 怎么用unity去做一个AR小demo 在做之前先科普一下什么是AR AR技术也被称作是 增强现实 主要是一种将虚拟信息与真实世界巧妙融合的技术 现在光返的运用在很多方面 例如多媒体 3D建模 实时跟踪及注册 智
  • Unity+Vuforia 开发遇到的问题

    Q1 利用外接摄像头时 不能打开摄像头 摄像头黑屏 A 选择ARCamera 打开设置面板 选择自己的摄像头
  • Vuforia Ground Plane 平面识别

    首先弄出这几个组件 如图 还有 再然后 然后就是关键了 如果Vuforia版本低于8 5 8 就得导入ARcore的arr 也就是这个 这个可以在 https dl google com dl android maven2 com goog
  • 【04】Unity AR 2022Vuforia——虚拟按钮超详细教程【含代码】

    04 Unity AR 2022Vuforia 虚拟按钮超详细教程 含代码 虚拟按钮超详细教程 含代码 目录 04 Unity AR 2022Vuforia 虚拟按钮超详细教程 含代码 1 前期工作 2 创建Virtual Button 3
  • 用Unity3D和VuforiaSDK简单做AR应用(实战)

    一 首先来到https developer vuforia com downloads sdk 这里有高通给予的很多开发包 当然也有很多的学习资源 接下来说重点 下载vuforia unity mobile android ios 4 2
  • vofuria的开发(4)更换目标图片(target)

    1 首先进入vuforia的官网 接下来的操作就很简单了 如下图中所示 这里如果你不是Unity开发就选择SDK下载 里面有一个 bat的文件一个 xml的文件 将文件放到将这两个文件放到 vuforia sdk Android sampl
  • Mrtk 如何动态开启关闭网格渲染

    protected void Show IMixedRealityDataProviderAccess dataProviderAccess CoreServices SpatialAwarenessSystem as IMixedReal
  • vuforia for unity 入门教程

    一 配置vuforia环境 与 运行简单AR程序 1 安装unity2017 1 从官网上下载unity2017下载器 2 运行下载器勾选上vuforiasupport选项 其余不变 点击开始安装 2 创建AR项目与配置AR运行环境 1 打
  • Unity用Vuforia做AR实现脱卡效果

    有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前 或者到一个特定的位置 我们能对其进行操作 这就是脱卡功能 自带的脱卡功能应该是ExtendedTracking 允许模型在识别图丢失的时候还存在 位置不变 在丢失的时候的位置 这样也
  • 使用 Vuforia 和 Unity 仅创建一次具有地平面检测的对象

    我正在尝试使用 Unity 和 Vuforia 创建 AR 应用程序 我有一个 3D 模型 需要在检测到地平面时生成 但这只需要发生一次 Vuforia 的工作方式是 当检测到新飞机时 它会继续生成对象 所以我需要做的是要么只检测一次平面
  • 在 Vuforia 中获取纯视图矩阵

    我正在使用 Vuforia SDK 构建我的 AR 应用程序 通过使用 trackableResult gt getPose 我可以获得目标帧标记的模型视图矩阵 但我还需要纯视图矩阵来进行一些计算 有什么办法可以得到吗 继上面的 peede
  • 跟踪丢失后如何保持跟踪的图像目标模型对象?

    我正在使用 Unity3d 和 Vuforia 开发 AR 应用程序 我想保留丢失时跟踪的 ImageTarget 对象 跟踪丢失后如何保持跟踪的图像目标模型对象 处理跟踪丢失时发生的情况的脚本称为DefaultTrackableEvent
  • 如何将语音识别添加到Unity项目中? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在使用 Vuforia 开发一个增强现实项目 该项目使用语音识别来控制 Unity 中的对象
  • 启用 Vuforia 时 Unity 崩溃

    在 XR 设置中启用 Vuforia 增强现实支持 时 我的编辑器崩溃 以下是我遵循的步骤 重现步骤 1 创建一个新项目 2 文件 gt 构建设置 gt 播放器设置 gt 播放器 3 从 XR 设置中启用 Vuforia 增强现实 复选框

随机推荐

  • 你能在 C# 中编写一段 C++ 代码吗?

    我听说你可以在 C 代码中直接切换到 C 这是怎么做到的 还是我听错了 注意 我的意思不是 C CLI 你可能会想unsafe blocks您可以在其中编写看起来很像 C 的代码 因为您可以使用指针
  • 如何在 JavaScript 中快速播放声音文件的多个副本

    我正在用 html js 构建一个旋转得相当快的命运之轮 每当一种新的颜色飞过标记时 色轮就会发出咔哒声 在最高速度下 这听起来几乎就像一挺机关枪 因此在旧文件基本上完成之前就开始播放新文件 文件本身始终相同 click wav 它在 Ch
  • 如何在Javascript中使用字符串作为变量名? [复制]

    这个问题在这里已经有答案了 可能的重复 有没有办法使用包含变量名称的字符串来访问 JavaScript 变量 JavaScript 通过名称字符串动态获取局部变量 一个简单的代码来说明我的问题 var chat 1 one var chat
  • 如何理解普通函数和箭头函数中的“this”?

    我想加载远程图像以获取其高度和宽度 但得到不同的结果 下面的代码给了我正确的图像高度和宽度 img onload function console log image this width this height ctx drawImage
  • 绕过“选项请求”的身份验证(因此所有标头都在响应中发送)

    这是在跨源资源共享的背景下 对于预检请求 服务器不会发送标头集 当 选项请求 未传递有效的 cookie 时 其响应中的服务器不会发送我设置的标头 但会发送 200 OK 我用curl检查了这一点 如下所示 显然 我在这里用虚拟的 xyza
  • 替代 SocketUtils.findAvailableTcpPort()?

    以下初始化为套接字spring integration在专用端口上 目标是给应用程序 2 分钟的时间在该端口上运行 否则失败就是不成功 但应用程序启动应该not fail directly该端口在启动时不是空闲的 Configuration
  • WordPress 网站速度慢得令人痛苦

    有哪些工具可以确定网站加载页面的时间如此之长的原因 我正在使用一个非常简单的主题 我对其进行了更改以满足我的需求 这是一个全新的网站 只有两个测试帖子 并且需要一段时间才能加载 我使用 YSlow for Firebug 它为该网站提供了
  • 使用编译 'com.google.android.support:wearable:2.0.4' 时出现以下错误,但我没有使用 26.0.0

    使用时compile com google android support wearable 2 0 4 最新版本com google android support wearable 在我的 Wear 应用程序的 build gradle
  • rgl 矢量图:显示正交向量的直角

    In the matlib包裹 https github com Friendly matlib 我有一个函数 vectors3d 绘制几何矢量图 下面的代码给出了一个显示单位向量 J 的示例图 以及它在 X Y Z 轴上的一些投影 在致电
  • 将模型对象列表发布到 ASP.NET MVC 中的控制器

    像这样的形式 视图模型 public class ProductViewModel public string Product get set public IEnumerable
  • 带有 html5Mode 的 Angular 路线在重新加载后给出“未找到”页面

    我制作了一些 Angular 路线 如下面的代码所示 app config function routeProvider locationProvider provide routeProvider when templateUrl hom
  • chrome 扩展 - ip 域权限

    我的 Chrome 扩展程序需要向我的家庭 LAN 上的服务器发送请求 但我没有 DNS 设置 因此我对所有内容都使用原始 IP 我通过我的后台页面发送这些请求 因此在清单文件中具有适当的权限 它应该允许我这样做 这就是我在清单中的内容 p
  • 如何将时间转换为iPhone设备的时区?

    我在 EST 时区有一个时间 它是使用 mysql 服务器上的 NOW 函数完成的 因为我的服务器位于东部时间 所以存储的时间是东部时间 当我从 iPhone 上的应用程序检索它时 我需要以用户的正确时区显示它 我怎么做 我认为这取决于您所
  • Python isalpha() 和 scandics

    有没有办法让 python isalpha 方法理解 scandics 我已经尝试过以下方法 gt gt gt import locale gt gt gt locale getlocale None None gt gt gt thisi
  • 如何使用 boto 将文件从 Amazon S3 流式传输到 Rackspace Cloudfiles?

    我正在将文件从 S3 复制到 Cloudfiles 并且我想避免将该文件写入磁盘 Python Cloudfiles 库有一个 object stream 调用 看起来正是我所需要的 但我在 boto 中找不到等效的调用 我希望我能够做类似
  • 优化 R 中的 Apply()

    以下代码的目标是对具有 400 列和 6000 行的数据集执行递归和迭代分析 它一次需要两列并对其进行分析 然后再转向所有可能的组合 正在使用的大数据集的小子集 data1 data2 data3 data4 0 710003 0 7142
  • Tweepy 涉及解析要求的安装错误

    我一直在尝试安装tweepy在 Windows 上 它会返回错误 具体来说 它说 类型错误 parse requirements 得到意外的关键字参数 session 我的安装代码是 pip 安装 tweepy 任何帮助将不胜感激 我不确定
  • 通过异步/等待进行服务器通信?

    我想创建通过 async await 通过 TAP 发送的 Socket 消息 看完之后这个答案 and this one 我决定创建一个完全工作的示例 那么我尝试了什么 我从以下位置获取了 TAP 扩展方法here 一切正常 我在控制台c
  • 如何在CSS3中制作带有背景图案的三角形? [复制]

    这个问题在这里已经有答案了 我正在尝试使用 CSS 进行以下操作 用 CSS 制作三角形很简单 但我不知道如何给它一个非实心背景 有什么建议么 编辑 背景图案是PNG图像 triangle width 160px height 160px
  • Vuforia:如何用图像目标示例中的文本更改茶壶?

    如何在 Vuforia Image Target 示例中更改带有文本内容的茶壶 该示例位于 https developer vuforia com resources sample apps image targets sample app