当前位置: 首页 > news >正文

使用虚拟引擎为AR体验提供动力

Powering AR Experiences with Unreal Engine

​​​​​​​

目录

1. 虚拟引擎概述

2. 虚拟引擎如何为AR体验提供动力

3. 虚拟引擎中AR体验的组成部分是什么?

4. 使用虚拟引擎创建AR体验

5. 虚拟引擎中AR的优化提示

6. 将互动性融入AR与虚拟引擎

7. 在AR中使用虚拟引擎时面临哪些挑战?

想象一下:你正在打造一种令人印象深刻的增强现实(AR)体验。你已经有了概念、艺术和故事——但什么能让这一切变得生动起来?你猜对了——虚拟引擎。在AR的世界里,虚幻引擎是一个强大的工具,可以将你的视觉转化为虚拟产品。本博客将引导您了解使用虚拟引擎获得AR体验的来龙去脉。

一、虚拟引擎概述

首先,让我们更好地了解虚幻引擎。虚拟引擎由Epic Games开发,是一套完整的工具,使创作者能够为PC、控制台、移动设备、AR和VR带来实时、高质量的体验。它经常用于游戏行业,也在电影、汽车、建筑等领域掀起了波澜。但是,是什么让虚拟引擎在AR方面如此受欢迎呢?

以下是一个简要介绍:

实时渲染 (Real-time rendering)

虚拟引擎在实时渲染方面大放异彩。它可以处理具有大量对象的复杂场景,同时保持视觉效果的清晰。当你试图创造身临其境、真实的AR体验时,这是一个很大的优势。

蓝图脚本(Blueprint scripting)

即使你不是一个编程高手,虚拟引擎也能帮你搞定。使用它的可视化脚本系统Blueprint,您可以创建游戏逻辑、交互等,而无需编写一行代码。

VR和AR支持(VR and AR support)

虚拟引擎为VR和AR平台提供广泛支持。无论您是为智能手机创建AR体验,还是为高端耳机创建VR游戏,虚拟引擎都具备您所需的工具和兼容性。

现在我们已经介绍了虚拟引擎的基本知识,让我们深入了解如何使用这个强大的工具来创建AR体验的虚拟引擎虚拟产品。

二、虚拟引擎如何为AR体验提供动力

虚拟引擎不仅仅是一个游戏引擎,它还是AR体验的游戏改变者。它是将你的创意转化为互动虚拟制作的动力源泉。那么,它究竟是如何做到这一点的呢?

现实与虚拟结合 Reality meets Virtuality

凭借虚拟引擎强大的AR功能,它可以轻松地将数字内容与现实世界融合在一起。这意味着您可以将虚拟对象放置在真实环境中,与它们交互,甚至让它们与环境本身交互。这就像拉开了现实与虚构之间的帷幕!

可视化脚本 Visual scripting

还记得我们讨论过的可视化脚本系统Blueprint吗?它在这里真的很闪耀。蓝图允许您为AR体验创建复杂的交互、行为和效果,而无需编码。您可以通过用户友好的视觉界面,为虚拟对象如何与现实世界交互,或它们如何响应用户输入创建规则。

令人惊叹的图形 Stunning Graphics

虚拟引擎以其高质量的实时渲染而闻名。这意味着你的AR体验可以包括丰富、详细的环境和看起来非常逼真的物体。正是这种细节水平可以让用户真正沉浸在你的AR体验中,让他们感觉自己是行动的一部分。

多平台支持 Multi-platform support

无论您的AR体验是针对智能手机、平板电脑、耳机还是其他设备,虚拟引擎都能为您提供支持。它支持广泛的平台,因此您可以将您的AR体验带到用户喜欢的任何设备上。

无论你是在创作游戏、电影、教育工具,还是其他什么东西,虚拟引擎都有能力和灵活性将你的愿景付诸实践。虚拟引擎虚拟制作AR体验的可能性几乎是无穷无尽的!

想深入学习的朋友可参考文末推荐几家头部公司的优化技巧(推荐阅读1)。

三、虚拟引擎中AR体验的组成部分是什么?

使用虚拟引擎构建的每个AR体验都有几个关键组件。了解这些元素可以帮助您创建不仅身临其境而且具有互动性的AR体验。让我们分解一下这些组件:

AR会议 AR meeting

把AR会议想象成一部电影的导演。它负责管理AR系统,包括跟踪设备的位置、了解环境以及将数字内容插入现实世界。它是您AR体验的支柱。

AR对标目标 AR anchors

这些是虚拟引擎用来将虚拟对象放置在现实世界中的标记。锚点可以附着到环境中的特定点,如桌子或墙,即使设备移动,虚拟对象也会保持在该位置。

AR几何图形 AR Geometries

这些表示虚拟引擎检测到并可以与之交互的真实世界对象。这可能是虚拟角色跳上的桌子,也可能是虚拟球弹开的墙。

AR光估计 AR light estimation

该组件帮助虚拟引擎了解真实世界的光照条件,并相应地调整虚拟对象。通过这种方式,虚拟对象可以与真实环境更无缝地融合在一起。

用户交互 User interaction

这是您作为创建者可以决定用户如何与虚拟对象交互的地方。他们会敲打它们吗?他们会拖着他们到处走吗?一切都取决于你。

通过了解这些组件以及它们如何协同工作,您可以为AR体验创建引人注目的交互式虚幻引擎虚拟产品,真正模糊虚拟和真实之间的界限。

想深入学习的朋友可参考文末推荐几家头部公司的优化技巧(推荐阅读2)。

四、使用虚拟引擎创建AR体验

既然你已经熟悉了虚拟引擎中的AR体验的组成部分,让我们卷起袖子,开始做正事——创造你自己的AR体验。如果你是新手,不要担心;这个过程比你想象的更容易管理。所以,让我们一步一步来:

设置你的项目Set up your project

首先在虚拟引擎中创建一个新项目。选择“增强现实”模板以获得领先优势。此模板包括AR开发所需的所有设置和组件。

创建您的AR会话 create your AR session

还记得我们上一节的AR会话吗?您需要为您的项目创建一个。这就是你决定AR世界规则的地方。

设计你的虚拟对象 Design your virtual objects

现在是有趣的部分——创建将填充你的AR世界的虚拟对象。您可以直接在虚拟引擎中对这些对象进行建模,也可以从三维建模软件中导入它们。

放置AR对标目标 Place your AR anchors

一旦你有了你的对象,是时候决定它们在现实世界中的出现位置了。可以在特定位置放置对标目标,也可以让系统根据用户的环境自动放置锚点。

定义用户交互Define user interactions

决定用户将如何与您的虚拟对象交互。他们能移动物体吗?物体会对触摸做出反应吗?选择权在你。

测试和优化 Test and optimize

最后,在真实设备上测试您的AR体验。寻找任何需要改进的问题或领域。请记住,优化是获得流畅、愉快的AR体验的关键。

为AR体验创建一个虚幻引擎虚拟制作似乎是一项艰巨的任务,但当分解为这些可管理的步骤时,你会发现这是一个极具创造性和回报的过程。那为什么不试试呢?谁知道呢——你可能会在AR中创造下一个大东西!

五、虚拟引擎中AR的优化提示

让我们面对现实吧:优化就像你餐盘上的蔬菜。它可能不像创建虚拟对象或定义用户交互那样令人兴奋,但对于全面的AR体验来说,它同样重要——如果不是更重要的话。因此,以下是一些优化虚幻引擎虚拟制作以获得AR体验的提示:

注意你的多边形 Mind. Your polygons

高多边形模型看起很棒,但它们会减慢你的应用程序速度并耗尽你设备的电池。目标是在视觉质量和性能之间取得平衡。

优化纹理 Optimize textures

大的纹理也会让你的应用程序陷入困境。对纹理使用适当的大小和压缩设置,并考虑对远处的对象使用mipmaps。

使用正确的灯光 use the right light

动态照明看起来很棒,但它也是资源密集型的。考虑对静态对象使用静态或烘焙照明,并为移动对象保留动态照明。

测试,测试,测试 Test, test, test

在各种设备上测试你的AR应用程序。测试越多,发现和解决性能问题的机会就越多。

保持最新 Stay up-to-date

虚拟引擎总是在不断发展,定期添加新功能和优化。确保您使用的是最新版本,以充分利用这些改进。

记住这些优化技巧,您将顺利创建一个流畅、愉快的虚拟引擎虚拟制作,以获得AR体验。毕竟,如果在用户的设备上运行不好,那么创造令人惊叹的AR体验有什么意义?

想深入学习的朋友可参考文末推荐几家头部公司的优化技巧(推荐阅读3)。

六、将互动性融入AR与虚拟引擎

创建AR体验很酷,但当你可以与之互动时,它会更酷,对吧?好消息是,虚拟引擎提供了大量的工具和功能,可以让你在AR体验中增加互动性。方法如下:

蓝图 blue print

将蓝图视为增加互动性的魔杖。这是虚拟引擎中的一个可视化脚本系统,可以让你在不写一行代码的情况下创建游戏逻辑。例如,您可以创建一个蓝图,使虚拟对象在点击时移动。

物理模拟 Physical simulation

想让你的虚拟物体表现得像在现实世界中一样吗?使用虚拟引擎的内置物理模拟。这可以为您的AR体验增加一个全新的逼真度。

音频 Audio

音频是互动中经常被忽视的一个方面。使用虚拟引擎,您可以添加响应用户动作的音效,增强身临其境的体验。

多用户体验 Multi-user experience

虚拟引擎支持创建共享的AR体验,多个用户可以与同一虚拟内容进行交互。想象一下,和你的朋友玩一个虚拟捉迷藏游戏!

记住,互动是吸引AR体验的关键。它将一个很酷的技术演示变成了一个有趣的应用程序,人们想反复使用它。所以,不要害羞——深入了解虚拟引擎的互动功能,让你的AR体验栩栩如生!

七、在AR中使用虚拟引擎时面临哪些挑战?

即使是最强大的发动机也会偶尔发出刺耳的声音。虚幻引擎也不例外。但别担心——哪里有问题,总会有解决方案:

复杂性 complexity

虚拟引擎是一个健壮的软件;这就是它能够创造这种身临其境的AR体验的原因。然而,这种复杂性对于初学者来说可能是压倒性的。解决方案?慢慢来,从基础开始,逐步探索高级功能。有很多教程可以指导您完成虚拟引擎之旅。

性能 Performance

AR体验,尤其是那些具有厚重图形的体验,对设备的要求可能很高。虚幻引擎的高质量视觉效果可能会导致某些设备出现性能问题。但不要担心——你可以优化你的AR体验以获得更好的性能(更多信息请参阅“虚拟引擎中的AR优化提示”部分)。

兼容性 Compatibility

并非所有设备都支持所有AR功能。在开发面向广大受众的AR体验时,这可能是一个挑战。解决方案在于根据目标设备的功能彻底测试和调整您的AR体验。尽管存在这些挑战,但由于其广泛的功能和提供的解决方案,虚拟引擎仍然是AR开发的首选。记住,每一个问题都是学习和成长的邀请——虚拟引擎为两者提供了大量机会!

原文出处 - Powering AR experience with unreal enginePowering AR Experiences with Unreal EngineDiscover how Unreal Engine virtual production transforms AR experiences, from creating immersive content to optimizing interactivity.icon-default.png?t=N7T8https://blog.daisie.com/powering-ar-experiences-with-unreal-engine/推荐阅读1 - Unreal engine 公司官网

https://www.unrealengine.com/en-US/download?start=trueicon-default.png?t=N7T8https://www.unrealengine.com/en-US/download?start=true推荐 阅读2 - Handheld AR Template Quickstart in Unreal Engine 

https://dev.epicgames.com/documentation/en-us/unreal-engine/handheld-ar-template-quickstart-in-unreal-engine/?application_version=5.0icon-default.png?t=N7T8https://dev.epicgames.com/documentation/en-us/unreal-engine/handheld-ar-template-quickstart-in-unreal-engine/?application_version=5.0推荐阅读3 - Unreal engine now lets developers create VR games in VR news - ModDB

Unreal Engine Now Lets Developers Create VR Games In VR news - ModDBYou'll never have to take your headset off again if you want to make a UE4 VR game.icon-default.png?t=N7T8https://www.moddb.com/engines/unreal-engine-4/news/unreal-engine-now-lets-developers-create-vr-games-in-vr

相关文章:

使用虚拟引擎为AR体验提供动力

Powering AR Experiences with Unreal Engine ​​​​​​​ 目录 1. 虚拟引擎概述 2. 虚拟引擎如何为AR体验提供动力 3. 虚拟引擎中AR体验的组成部分是什么? 4. 使用虚拟引擎创建AR体验 5. 虚拟引擎中AR的优化提示 6. 将互动性融入AR与虚拟引擎 7. 在AR中…...

Kafka入门到实战-第五弹

Kafka入门到实战 Kafka常见操作官网地址Kafka概述Kafka的基础操作更新计划 Kafka常见操作 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件流平台&…...

Ideal Holidays

题目链接 AtCoder Beginner Contest 347 C - Ideal Holidays 思路: 一周有 A B AB AB 天,前 A A A 天放假,问能不能把所有工作放进节假日里。 先看简单的,两个。其实我们并不是很在乎它们中间隔了多少天,我们只…...

Raven:一款功能强大的CICD安全分析工具

关于Raven Raven是一款功能强大的CI/CD安全分析工具,该工具旨在帮助广大研究人员对GitHub Actions CI工作流执行大规模安全扫描,并将发现的数据解析并存储到Neo4j数据库中。 Raven,全称为Risk Analysis and Vulnerability Enumeration for C…...

【苹果MAC】苹果电脑 LOGI罗技鼠标设置左右切换全屏页面快捷键

首先键盘设置->键盘快捷键 调度中心 设置 f1 f2 为移动一个空间(就可以快捷移动了) 想要鼠标直接控制,就需要下载官方驱动,来设置按键快捷键,触发 F1 F2 安装 LOGI OPTIONS Logi Options 是一款功能强大且便于使用…...

IDE/VS2015和VS2017帮助文档MSDN安装和使用

文章目录 概述VS2015MSDN离线安装离线MSDN的下载离线MSDN安装 MSDN使用方法从VS内F1启动直接启动帮助程序跳转到了Qt的帮助网页 VS2017在线安装MSDN有些函数在本地MSDN没有帮助?切换中英文在线帮助文档 概述 本文主要介绍了VS集成开发环境中,帮助文档MS…...

开启 Keep-Alive 可能会导致http 请求偶发失败

大家好,我是蓝胖子,说起提高http的传输效率,很多人会开启http的Keep-Alive选项,这会http请求能够复用tcp连接,节省了握手的开销。但开启Keep-Alive真的没有问题吗?我们来细细分析下。 最大空闲时间造成请求…...

【leetcode面试经典150题】4.删除有序数组中的重复项 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...

【LeetCode热题100】【普通数组】合并区间

题目链接:56. 合并区间 - 力扣(LeetCode) 先排序,按左区排序,装第一个区间进入答案容器,判断答案容器钟最后一个区间的右区是否小于区间的左区,是则不能合并是新区间,否则可以合并 …...

自我认识的方法模型图

在漫长的人生旅途中,我们都在不断地探索、追寻,努力寻找那个最真实、最完整的自我。因为只有真正了解自己,才能战胜内心的种种困惑与恐惧,进而战胜外在的一切挑战与困难。自我认识,是每个人成长的必经之路,…...

dhcp和dhcp中继代理

简单说就是各个pc机的ip自动获取,不用手动设置 配置思路 1.使能dhcp功能 2.创建全局地址池 ip pool ,配置可用网络地址 network mask和网关地址刚刚忘记了,租约期 lease day hour 3.配置端口的网关地址(各个网络地址的第二位…...

【fastadmin】脚本模式下,日志钩子函数执行出现死循环,导致内存溢出奔溃

问题出现原因是想对项目中error级别的日志,接入钉钉告警,方便查看 于是使用钩子方法,日志写入完成后,自动调用自定义的告警方法中 1、在application/tags.php 中添加log_write_done > [app\\common\\behavior\\Common, ],2、在…...

gitlab代码迁移,包含历史提交记录、标签、分支

1、克隆现有的GitLab仓库(http://localhost:8888/aa/bb/cc.git)到本地,包括所有分支和标签 git clone --bare http://localhost:8888/aa/bb/cc.git 2、在gitlab上创建一个空的仓库(http://localhost:7777/aa/bb/cc.git&#xff…...

通过TCP或UDP向某个IP和端口发送数据

工具发送 如果您想要一个简单的方法来发送TCP或UDP数据,可以尝试使用nc(netcat)命令。这是一个功能强大的网络工具,可以用于读取和写入数据流。 发送TCP数据 在命令行中运行以下命令: echo "Hello, World\!&q…...

Go语言介绍及Go语言成功的项目列举

Go语言介绍: Go即 Golang ,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。 根据 Go 语言开发者自述,近 10 多年,从单机时代的 C 语言到现在互联网时代的 Java , 都没有令人满意的开发语言&a…...

CQI-17:2021 V2 英文 、中文版。特殊过程:电子组装制造-锡焊系统评审标准

锡焊作为一个特殊的工艺过程,由于其材料特性的差异性、工艺参数的复杂性和过程控制的不确定性,长期以来一直视为汽车零部件制造业的薄弱环节,并将很大程度上直接导致整车产品质量的下降和召回风险的上升。 美国汽车工业行动集团AIAG的特别工…...

普通Java工程可执行JAR两种打包方式探讨

文章目录 一、需求概述二、代码结构三、运行结果四、打包设置1. 一体化可执行包2. 带外部依赖lib的可执行包 五、打包运行1. 源码放送2. 打包执行3. 打包结果 一、需求概述 普通Java工程 docker-show 实现了定时打印docker应用信息,现在需要将其打包成可执行Jar部署…...

开源博客项目Blog .NET Core源码学习(13:App.Hosting项目结构分析-1)

开源博客项目Blog的App.Hosting项目为MVC架构的,主要定义或保存博客网站前台内容显示页面及后台数据管理页面相关的控制器类、页面、js/css/images文件,页面使用基于layui的Razor页面(最早学习本项目就是想学习layui的用法,不过最…...

Vue的双向绑定v-model详细介绍

使用: 比如用户在登录注册时需要提交账号密码; 比如用户创建,更新时,需要提交一些数据; v-model指令可以在表单 input、textarea以及select元素上创建双向绑定; 它会根据控件类型自动选取正确的方法来更…...

AWS入门实践-S3对象存储的基本用法

AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。 一、S3上传和下载文件(AWS门户) …...

el-tree-v2渲染树形大数据并设置默认展开

el-tree-v2无 el-tree中默认展开节点的属性,需要自行设置 default-expand-all是否默认展开所有节点 需求:首次默认展开全部节点 实现1尝试失败:增加设置了属性 :default-expand-keys"props.treeData.map(itemitem.id)"无效&…...

损失函数篇 | YOLOv8更换损失函数之MPDIoU(23年7月首发论文)

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…...

【力扣】200.岛屿数量(染色法DFS深搜)

岛屿数量 题目描述 链接:力扣:200.岛屿数量 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆…...

达梦配置ODBC连接

达梦配置ODBC连接 基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 下载ODBC包 下载网址:https://www.unixodbc.org/ unixODBC-2.3.0.tar.gz2 编译并…...

独孤思维:高客单价项目,必须来一个

01 上次和水龙聊完以后,完成了图书电商项目小报童的梳理。 而且还让我规划后端低转高产品的设计。 目前独孤,准备以图书电商项目私教作为切入点,捆绑自己的合伙人。 设计高客单价项目。 所以,独孤4月的副业规划目标&#xff…...

学习java第三十二天

Spring 会利用AutowiredAnnotationBeanPostProcessor.postProcessMergedBeanDefinition() 找出注入点并缓存, 找注入点的流程为: 遍历当前类的所有的属性字段 Field 查看字段上是否存在 Autowired、Value、Inject 中的其中任意一个,存在则认…...

力扣150. 逆波兰表达式求值

思路:又是有消消乐的感觉,只不过这里是遇到一个操作符号,就消掉两个数字合并成一个新数;所以想到用栈结构来处理;用一个栈来放当前遍历过的数字,当遍历遇到操作符时,就把前面最新入栈的两个数取…...

hololens 2 投屏 报错

使用Microsoft HoloLens投屏时,ip地址填对了,但是仍然报错,说hololens 2没有打开, 首先检查 开发人员选项 都打开,设备门户也打开 然后检查系统–体验共享,把共享都打开就可以了...

初次在 GitHub 建立仓库以及公开代码的流程 - 公开代码

初次在 GitHub 建立仓库以及公开代码的流程 - 公开代码 References 在已有仓库中添加代码并公开。 git clone 已有仓库 将已有仓库 clone 到本地的开发环境中。 strongforeverstrong:~$ mkdir github_work strongforeverstrong:~$ cd github_work/ strongforeverstrong:~/git…...

论文笔记 - :MonoLSS: Learnable Sample Selection For Monocular 3D Detection

论文笔记✍MonoLSS: Learnable Sample Selection For Monocular 3D Detection 📜 Abstract 🔨 主流做法限制 : 以前的工作以启发式的方式使用特征来学习 3D 属性,没有考虑到不适当的特征可能会产生不利影响。 🔨 本…...

湖南做网站公司/seo教学网站

要想在地址栏隐藏url传递的参数,不能直接隐藏,但有几下几个变通的方法. 使用类似Base64编码,将URL参数进行简单加密. 使用框架页; 使用POST方式传递数据; 使用Cookie传递数据; 下面主要介绍模拟表单提交的post方式: function post(URL, PARAMS) {var tem…...

php调用网站导航怎么弄/百度app平台

随着低代码如火如荼的发展,很多人浏览到相关文章时,看到少开发少些代码,会觉得那这种软件的发展不是在抢程序员“饭碗”吗? 首先必须要回答这个问题。不会打翻程序员“饭碗”的。低代码它不是万能的,程序员才是万能的…...

男装商城网站建设/惠州seo计费管理

题目 有个数列,你要维护它,支持区间赋值、区间加一、区间询问出现次数大于等于p∗(r−l1)p*(r-l1)p∗(r−l1)的数有哪些。(题目的那个除以100100100就省掉了哈) 思考历程 总感觉这题不好直接用数据结构来搞。 然后就想到了分块&…...

如何判断网站做的关键词/宁德市区哪里好玩

此功能是通过shell32.dll中一个索引号为60的API函数调用,显示"关闭Windows"对话窗口实现的。具体方法为IDC_SHUTDOWNCOMPUTER按钮添加BN_CLICKED消息处理函数:void CControlDlg::OnShutdowncomputer() { HINSTANCE hInstLoadLibrary("…...

教学网站开发应用指导方案/厦门零基础学seo

不同点: 1、签名不同; Android中的应用程序如何获得系统权限? 在 android 的 API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机&#xf…...

博客社区类网站模板下载/网站怎么建立

本节知识点&#xff1a;Ionic之form表单实现MVVM&#xff0c;模拟数据提交或信息注册案例。 效果展示&#xff1a; 【ion-input】单行文本框 <ion-item-divider><ion-label>用户基本信息</ion-label></ion-item-divider><ion-item><ion-labe…...