在arcore中的3D对象上使用模板蒙版时出现问题

2024-04-16

我正在使用 hello ar java demo 在 3d 对象上使用模板掩模,但是我遇到了一些意外的行为。我的模板蒙版正确遮挡了平面渲染器,但 3D 对象 (andy) 似乎没有按预期做出反应。相反,如图所示,他似乎被翻转了。我不知道如何解决这个问题。附件是进行模板屏蔽的代码片段

模板图像在平面缓冲区上正常工作但在 3D 模型上失败

  GLES20.glClear ( GLES20.GL_STENCIL_BUFFER_BIT );
  GLES20.glEnable(GLES20.GL_STENCIL_TEST);
  GLES20.glColorMask(false, false, false, false);
  GLES20.glDepthMask(false);
  GLES20.glStencilFunc(GLES20.GL_NEVER, 1, 0xFF);
  GLES20.glStencilOp(GLES20.GL_REPLACE, GLES20.GL_KEEP, GLES20.GL_KEEP);
  GLES20.glStencilMask(0xFF);
  GLES20.glClear(GLES20.GL_STENCIL_BUFFER_BIT);

  // controls how pixels are rendered in the stencil mask
  quadDrawer.draw();

  GLES20.glColorMask(true, true, true, true);
  GLES20.glDepthMask(true);
  GLES20.glStencilMask(0xFF);
  GLES20.glStencilFunc(GLES20.GL_EQUAL, 0, 0xFF);

  // Visualize planes.
  // reacts correctly to the stencil mask
  planeRenderer.drawPlanes(
      session.getAllTrackables(Plane.class), camera.getDisplayOrientedPose(), projmtx);

  // Visualize anchors created by touch.
  float scaleFactor = 1.0f;

  for (ColoredAnchor coloredAnchor : anchors) {
    if (coloredAnchor.anchor.getTrackingState() != TrackingState.TRACKING) {
      continue;
    }
    // Get the current pose of an Anchor in world space. The Anchor pose is updated
    // during calls to session.update() as ARCore refines its estimate of the world.
    coloredAnchor.anchor.getPose().toMatrix(anchorMatrix, 0);

    // Update and draw the model and its shadow.
    // does not react correctly to the 
    virtualObject.updateModelMatrix(anchorMatrix, scaleFactor);
    virtualObjectShadow.updateModelMatrix(anchorMatrix, scaleFactor);
    virtualObject.draw(viewmtx, projmtx, colorCorrectionRgba, coloredAnchor.color);
    virtualObjectShadow.draw(viewmtx, projmtx, colorCorrectionRgba, coloredAnchor.color);
  }

  GLES20.glDisable(GLES20.GL_STENCIL_TEST);

忘记更新我为此找到的“解决方案”。我没有在 3D 对象上应用模板蒙版,而是再次渲染背景,但将其传递通过模板蒙版。这意味着背景将覆盖 3D 对象,从而实现所需的“遮蔽”效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在arcore中的3D对象上使用模板蒙版时出现问题 的相关文章

随机推荐

  • 在 Google App Engine 中接收邮件

    我正在阅读有关的教程接收邮件 http code google com appengine docs python mail receivingmail html 我按照指示更新了 app yaml 文件 application hello
  • 在单个 Java 项目中运行测试突然开始无提示地失败

    我有一个项目 我已经工作了几周 没有出现任何问题 自从昨天早上开始工作以来 我根本没有进行任何更改 但是从昨天下午开始 在该项目中运行任何测试都会默默失败 I see or rather don t see the same thing r
  • 使用ajax请求显示进度条进度

    我想在 ajax 请求触发和完成时使用 jquery ui 进度条显示进度 问题是我不知道如何根据ajax请求的进度设置进度条的值 下面是一段代码 function ajaxnews newstabs a click function e
  • 在 AngularJS 的 ng-bind 中使用过滤器后添加更多文本

    所以我想在 ng bind 指令中通过过滤器放置一个变量 ng bind input filter 但我想插入更多文字 ng bind input filter more 但这不起作用 有没有办法在 ng bind 中添加更多文本 就像您简
  • CMake子目录依赖

    我对 CMake 很陌生 事实上 我正在通过 Kdevelop4 widh C 进行尝试 我习惯为我创建的每个命名空间创建子目录 即使所有源代码都必须编译并链接到单个可执行文件中 好吧 当我在 kdevelop 下创建一个目录时 它会使用
  • Chart.js - 如何禁用悬停时的所有内容

    如何设置代码使图表上没有悬停效果 悬停选项 悬停 链接等 我正在使用 Chart js 下面是我的代码 我在其中设置饼图 Html div style width 90 div
  • 锁定安卓手机

    当用户按下按钮时 我试图以编程方式锁定设备 我知道我需要使用deviceAdminReciever我已经这样做了 但是每当我运行它时我的应用程序就会崩溃 以下是我的清单
  • 为什么 IE8 使用 Facebook 的 React.js 时会出现脚本错误

    我正在使用 Facebook 反应 不确定是什么导致了这个错误 似乎是反应本身 我收到 IE8 脚本错误 React js 的第 10898 行对象不支持此属性或方法 我没有使用缩小版本 这是带注释的开发版本 还有人遇到 facebook
  • 如何获取受 SQLAlchemy 影响的行数?

    如何使用 sqlalchemy 获取更新语句影响的行数 我正在使用 mysql 和 python pyramid from sqlalchemy engine base import ResultProxy classmethod def
  • 在命名空间中包装 extern“C”库时出现问题

    我正在使用 C 中的 C 库 libgretl 它的一些函数与我的代码冲突 所以我想将它包装在命名空间中 如下所示 namespace libgretl extern C include
  • 在没有 unsafeCoerce 的情况下兼顾存在主义

    最近我一直在研究这种类型 我理解它是自由分配函子的编码 有关切线背景 请参阅这个答案 https stackoverflow com a 56822105 2751851 data Ev g a where Ev g x gt x gt a
  • 作为服务在 Heroku 或其他云平台上进行蓝绿部署

    我们目前正在 Heroku 上使用两个测功机运行 Ruby on Rails 项目 RefineryCMS 每次更新网站时 我们都会遇到大约 1 到 2 分钟的停机时间 管理层对此并不满意 我们真正想要的是某种 透明的 蓝绿部署 http
  • 使用 requirejs 调用函数

    如何使用 requirejs 调用函数 这是一个过于简单的问题 但令人惊讶的是 到目前为止没有任何教程或示例能够帮助我 这是我的 html 文件中的代码
  • git 仅克隆具有特定扩展名的文件

    有没有办法只克隆具有特定扩展名的文件 例如 只克隆 sh 文件 我知道我可以克隆整个文件 然后删除剩余的文件 但我不想浪费 谢谢 None
  • AWS Lambda 的打包代码

    我正在尝试打包 AWS Lambda 的代码 Lambda 有各种限制 例如使用 Node 6 10 并且没有像 AWS EB 那样的构建步骤 我还使用 NPM 模块 因此这些模块需要与 AWS Lambda 处理程序捆绑在一起 这是我想做
  • SetVisible(false) 更改面板中组件的布局

    当我将子面板之一设置为不可见时 如何使主面板中的子面板保持在原来的位置 我所拥有的看起来像 Panel1 Panel2 Panel3 Panel4 当我做panel3 setVisible false 它看起来像 Panel1 Panel2
  • Bootstrap 3 - 如何在单击时淡入警报框并在 3 秒后淡出

    我正在使用 AngularJS 和 Bootstrap 3 我的 Web 应用程序有一个 更新 按钮 用于保存用户所做的任何更改 当用户单击 更新 按钮时 我想激活并淡入引导程序的警报框 显示 信息已保存 然后在 3 秒后淡出 我不知道如何
  • 如何在 javascript google 地图 API 上使用米显示 geojson 数据

    GeoJson 文件坐标以 X Y 米为单位 而不是 lng lat 如何在谷歌地图上显示 GeoJson数据 type FeatureCollection features type Feature geometry type Multi
  • Keycloak 中的多租户可以在单个领域内完成吗?

    首先 我非常了解 Keycloak 中的多领域多租户方法 我接手了一个遗留项目 没有人想到多租户 现在 两年后 客户突然需要此功能 实际上 微服务已经为这种场景做好了开箱即用的准备 客户开发了一个移动应用程序 通过我们的 keycloak
  • 在arcore中的3D对象上使用模板蒙版时出现问题

    我正在使用 hello ar java demo 在 3d 对象上使用模板掩模 但是我遇到了一些意外的行为 我的模板蒙版正确遮挡了平面渲染器 但 3D 对象 andy 似乎没有按预期做出反应 相反 如图所示 他似乎被翻转了 我不知道如何解决