在增强现实中,除了虚拟物体本身的模型材质等因素,影响物体真实性的主要是光照、反射、阴影。接下来3DCAT实时渲染云平台将带您从这三个方面探索如何让AR物体更真实!

AR光估测

要让一个虚拟物体很好的融入现实背景中,首先与周围环境的光照得一致,包括光照的方向、强弱。光估测就是提供对现实环境的光照分析,将现实世界的光照感觉拓展到数字场景中,我们利用光照估计技术评估环境光,利用环境光中的光照信息来动态调整虚拟对象的光照效果。

下面是在Unity3d中利用AR Foundation来实现光估测的具体实现: 我们首先要打开AR Foundation光照估计功能,在Hierarchy窗口中,依次选择AR Session Origin→AR Camera,然后在Inspector窗口的AR Camera Manager组件中,选择其Light Estimation Mode为“Ambient Intensity”,如下图所示。

然后新建一个C#脚本,命名为LightEstimation,编写如下代码。

为应用该脚本,我们将该脚本挂载在场景中的Dierctional Light对象上,并将AR Session Origin→AR Camera赋给脚本的mCameraManager属性,如下图所示。

环境探针

环境探测器是AR世界中的位置,可捕获真实环境的纹理和照明信息。每个探针都具有位置、比例、方向和边界体积的属性。使用它们的方法是应用从设备相机捕获的真实世界的纹理和图像,并将它们用作Cubemap。纹理通常为360度图像格式。当将其应用于适当的材料时,它会产生一般逼真的反射和照明,并受到现实世界的影响。

在AR Foundation使用环境反射的基本步骤如下

1、在场景中的AR Session Origin对象上挂载AR Environment Probe Manager组件并作相应设置;

2、确保需要反射的虚拟对象带有反射材质并能反射Probe;

3、使用自动或者手动方式设置反射探头捕获环境信息供反射体使用。

按照上述步骤,首先我们在AR Session Origin对象上挂载AR Environment Probe Manager组件,我们选择手动设置反射探头,因此我们不勾选“Automatic Placement”并选择纹理过滤模式为“Trilinear”,如下图所示。

AR阴影

阴影的产生与光源密切相关,阴影的产生也与环境光密切相关。阴影还影响人对空间环境的判断,是构建立体空间信息的重要参考因素。为使虚拟物体产生阴影,我的思路是在虚拟物体下方放置一个接受阴影的对象,这个对象需要能接受阴影但又不能有任何材质表现,即除了阴影部分,其他地方需要透明,这样才不会遮挡现实世界中的物体。

阴影生成一方面需要有光源,另一方面还需要有一个接受并显示阴影的载体。本节中我们将采用Unity内置的阴影解决方案生成AR实时阴影,光源采用Directional Light,使用一个Plane做阴影授受对象。

首先,我们制作一个接受阴影且透明的Plane,在Project窗口中新建一个Shader,命名为ARShadow,编写以下cg代码,该shader的功能就是显示阴影。

然后新建一个材质,亦命名为ARShadow,选择shader为刚才编写的ARShadow.shader。在Hierarchy窗口中新建一个Plane,将其Scale改小一点,修改为(0.1,0.1,0.1),然后将ARShadow材质赋给它,并制作成Prefab,命名为ARPlane,删除Hierarchy窗口中的Plane,到此,接受阴影的平面制作完成。

在Unity菜单栏依次选择 Edit →Project Settings,打开Project Settings对话框,选择Quality选项卡,点击其右侧Android下的黑色小三角图标,在下拉菜单中选择Very High或者Ultra,然后选择Shadows为Hard Shadows Only,选择Shadow Projection为Close Fit。

以上就是3DCAT实时渲染云平台整理的从光照、反射、阴影三个方面让AR物体更真实的方法。项目通过AR Foundation开发好后,后续需要分享给用户试用或者进行产品演示、正式上线使用等,可以上传到3DCAT实时渲染云平台,生成应用访问URL,这样用户不论是使用何设备、什么配置的机器,都可以随时访问您的AR应用项目。用户不用再次去专门下载APP,而且每次更新迭代应用,无需手动升级应用,轻量设备,简易访问。3DCAT实时渲染云平台是一个三维应用的托管运行平台,在云端提供强大的图形实时渲染计算服务,平台配备弹性GPU资源集群,支持自动负载均衡和伸缩扩容,支持海量用户同时安全访问应用。欢迎试用,也可以体验目前已上线的一些3D应用demo:https://www.3dcat.live/

了解更多虚拟仿真相关资讯,请关注3DCAT实时渲染云平台https://www.3dcat.live/


相关阅读推荐:

【Unity】Unity中AR Foundation的使用

3DCAT实时渲染云在虚拟展会中的应用

【实时渲染】实时3D渲染如何加速汽车线上体验应用推广

如何让AR物体更真实?的更多相关文章

  1. Framer – 将视觉搞转换为更真实的动态原型

    Framer 是一个 JavaScript 框架,简化了创建现实原型,实现完整的3D效果.以一种简单,可读的和强大的方式定义交互和创建动画. 另外还有 Framer Generator  是一个桌面应 ...

  2. AR Engine毫秒级平面检测,带来更准确的呈现效果

    近年来,AR版块成为时下大热,这是一种将现实环境中不存在的虚拟物体融合到真实环境里的技术,用户借助显示设备可以拥有真实的感官体验.AR的应用场景十分广泛,涉及娱乐.社交.广告.购物.教育等领域:AR可 ...

  3. 《虚拟伙伴》AR增强现实应用开发总结

    一.概述 1.1选题背景 随着时代的发展,人们的生活节奏越来越快,生活质量也越来越高,但却在繁忙之中忽略或者忘记了关心自己成长时代最重要或者最正确的事情和道理.虽然现在有很多社交平台,如微博,微信,f ...

  4. 面试题 -AR VR MR以及CR的简单介绍

    AR 增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像.视频.3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互 ...

  5. VR AR MR

    VR.AR和MR的区别? VR就是创造一个完全取代现实的世界,让人感觉「我怎么在这里?」 AR则是在现实世界的图像中叠加一些东西,让人感觉「哎?这里多了个本来不存在的东西」 MR则是虚拟物体完全和现实 ...

  6. VR与AR的发展趋势分析

    概要 你是否想象过与神秘的深海生物近距离接触?你是否梦想过穿戴钢铁侠那样的超先进科技装备成为超级英雄?你又是否幻想过与梦中的女神面对面的交流?这些可能在以前都只能是存在于脑海中的幻想,可是在如今有一项 ...

  7. 一文解读VR/AR/MR (转)

    1.VR=虚拟世界 VR,英文是Virtual Reality,中文是虚拟现实. VR眼镜 再细节一点来说,就是模拟一个三维的虚拟世界,在这个虚拟世界中,人们可以感受到视觉.听觉.触觉等方面的刺激. ...

  8. 对话|首席研究员童欣:从长远看,AR的应用范围远比VR广泛

    ​童欣博士现任微软亚洲研究院网络图形组首席研究员.1993年毕业于浙江大学计算机系,获工学学士学位:1996年获浙江大学计算机系硕士学位:1999年获清华大学计算机系博士学位,同年加入微软亚洲研究院. ...

  9. 用AR Engine手部骨骼跟踪能力实现虚拟手表试戴

    AR技术的落地应用,推动着电商领域的不断升级,通过增强现实为用户带来了虚拟与现实结合的AR购物体验.如AR试衣.AR试鞋.AR试妆等功能的出现让用户在手机上就能体验产品的佩戴效果,可以让用户更直观.更 ...

  10. unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇

    最近逃课做游戏,逃的有几门都要停考了,呵呵呵,百忙之中不忘超炒冷饭,感觉之前的人皮效果还是不够好,又改进了一些东西 首先上图 放大看细节 显而易见的比上次的效果要好很多,此次我把模型用3dmax进行了 ...

随机推荐

  1. Hadoop-Operation category READ is not supported in state standby 故障解决

    在查询hdfs时或者执行程序向hdfs写入数据时遇到报错:Operation category READ is not supported in state standby 意思是:该主机状态为待机, ...

  2. MySQL-顺序IO和随机IO的区别

    顺序IO是指读写操作的访问地址连续.在顺序IO访问中,HDD所需的磁道搜索时间显着减少,因为读/写磁头可以以最⼩的移动访问下一个块.数据备份和日志记录等业务是顺序IO业务.随机IO是指读写操作时间连续 ...

  3. [Maven]关于Maven的生命周期与命令

    关于Maven的生命周期与命令 工作的时候对Maven的install和package的使用产生了一些疑问,干脆将Maven的整个生命周期都复习总结一遍. 先看下在IDEA中Maven的生命周期节点: ...

  4. 49从零开始用Rust编写nginx,我竟然在同一个端口上绑定了多少IP

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...

  5. 【XInput】游戏手柄模拟鼠标动作

    老周一般很少玩游戏,在某宝上买了一堆散件,计划在过年期间自己做个机械臂耍耍.头脑中划过一道紫蓝色的闪电,想起用游戏手柄来控制机械臂.机械臂是由树莓派(大草莓)负责控制,然后客户端通过 Socket U ...

  6. Python——检测Popen返回的stdOutMsg中是否是否包含指定字符,并提取指定位置的信息

    问题背景: Python 中经常会需要通过subprocess.PoPen函数下发Shell Command,与操作系统进行交互.一些情况下,还需要分析shell command的返回值,提取有用信息 ...

  7. jq 实现select 下拉框的联动效果

    实现联动的代码 $(document).ready(function() { $("#selectone").bind("change",function(){ ...

  8. 【Unity3D】Transform组件

    1 前言 ​ 每个游戏对象有且仅有一个 Transform 组件,Transform 组件保存了游戏对象的位置信息,用户可以通过操作 Transform 组件实现对游戏对象的平移.旋转.缩放等变换.每 ...

  9. gitlab/github 设置 SSH

    最近项目要部署到另一台机器上,故要重新 git clone 一下 一开始只是简单的设置 config 里的 user.name 和 user.email,以为就可以 clone(邮箱账户拥有项目的权限 ...

  10. shell之sort,uniq,cut,tr

    # sort主要是要理解域 # sort选项 -c 测试文件是否已经分类 -m 合并两个分类文件 -u 删除所有复制行 -o 存储sort结果的输出文件名 -b 使用域进行分类时,忽略第一个空格 -n ...