使用为 iOS 和 android 增强的 Vuforia 在纸上显示动态文本

Posted

技术标签:

【中文标题】使用为 iOS 和 android 增强的 Vuforia 在纸上显示动态文本【英文标题】:Show Dynamic Text on a Paper using Vuforia augmented for iOS and android 【发布时间】:2017-03-09 12:54:34 【问题描述】:

当移动设备将文本放在纸上时,我需要在纸上显示文本,这基本上是增强现实功能。

论文中会有一个maker,它自己的应用程序会识别marker,并应该放置一个从服务器接收的动态文本。所以这个文本会改变

所以一开始我决定使用 Vuforia SDK,因为它比任何其他可用的 sdk 都支持更多。所以我设法在那里运行示例应用程序并在我自己的标记中显示“茶壶”,

但现在最困难的部分来了,我需要在标记上而不是茶壶上渲染文本。所以看来我有两个选择

1) 使用统一创建二维文本对象 2) 像茶壶一样使用openGL渲染文本

所以我的问题是这样做的适当方法是什么?我知道OpenGL不容易实现,即使Unity也会提供多个不必要的文件,各有利弊

最好的方法是什么?

【问题讨论】:

【参考方案1】:

您从服务器获取文本,比如说 json 文件。解析它并将结果应用到文本网格对象或世界画布中的文本对象。

https://docs.unity3d.com/Manual/class-TextMesh.html

https://unity3d.com/fr/learn/tutorials/topics/user-interface-ui/ui-text

您可以将这些对象放置在图像目标下的茶壶位置,或修改 DefaultTrackableEventHandler 以便不会影响子对象上的 Collider 和 Renderer,而是对任何对象执行操作。

查找 OnTrackingFound/Lost 方法。

【讨论】:

感谢您的回复。我将对此进行调查,并接受我设法做出的答案。还有,有很多统一的班级怎么样,这正常吗? 很多课程?有点是的。对于一个项目来说,数百是很正常的。取决于你的意思。 我认为我的要求很明确,跟踪图像并在其上渲染文本,我认为只有图像目标就足以满足我的需要 嗯,是的。如果您使用文本网格,您可以在此放置物品而不是茶壶,而无需更改任何内容。如果您使用画布,那么您必须进行一些更改,因为没有渲染器。所以你必须激活/停用该对象。 但我可以使用文本混搭作为图像目标的子代吗?【参考方案2】:

因此,在阅读了几篇文章后,我设法将 GuiLabel 放在了现实世界的对象之上。这完全是关于使用 WorldToScreenPoint 并将其设置为位置

Camera cam=Camera.current;
GUIStyle textStyle = new GUIStyle ();
textStyle.fontSize = 40;
textStyle.normal.textColor = Color.yellow;

Vector3 pos=cam.WorldToScreenPoint(targetPosition);
GUI.Label(new Rect(pos.x-40,Screen.height-pos.y,250,200),"Product Price",textStyle); 

【讨论】:

出于性能原因,不建议使用旧版 GUI。此外,它不是最灵活的使用方式,因为您需要运行才能查看,而新的 UI 系统允许在场景/游戏视图中查看。 你这是什么意思?? “因为您需要运行才能看到,而新的 UI 系统允许在场景/游戏视图中看到。”在我的示例中,我现在没有场景/游戏视图 @user4204805 几年前就这样做了

以上是关于使用为 iOS 和 android 增强的 Vuforia 在纸上显示动态文本的主要内容,如果未能解决你的问题,请参考以下文章

android webview增强版,对原生webview的一些解决方案

Apply Changes 在 Android 11 中的增强特性

React Native 增强现实 (AR)

iOS和Windows Phone的Android Renderscript等效于什么?

如何为 Android 应用程序的增强现实编写自动化测试?

为增强现实类型的应用检测 Android 手机倾斜、旋转等的精确变化