在增强现实中,除了虚拟物体本身的模型材质等因素,影响物体真实性的主要是光照、反射、阴影。接下来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. Oracle配置DCD避免会话被防火墙强制断开

    今天有客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113,询问数据库是否有这样的超时设置,能否取消掉这个限制? 登上环境查看监听日志发现连接的IP和数据库I ...

  2. 关于行结束符(CR、LF)、回车、换行

    CR(Carriage Return)表示回车 LF(Line Feed)表示换行 Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行苹果机 ...

  3. NebulaGraph入门介绍

    NebulaGraph入门介绍 什么是图数据库? 图数据库就会是存储图形网络并能从中检索信息的数据库. 图数据库在处理关联关系上有极大的优势,它以图论为理论基础,使用图模型,将关联数据的实体作为顶点( ...

  4. 2023年多校联训NOIP层测试2

    2023年多校联训NOIP层测试2 爆零了 T1 HDU 4786 Fibonacci Tree \(0pts\) @wangyunbiao: 不可以,总司令 我:不,可以,总司令 @wangyunb ...

  5. Linux dmesg命令使用方法详解

    一.命令简介  dmesg(display message)命令用于显示开机信息.kernel 会将开机信息存储在 ring buffer 中.您若是开机时来不及查看信息,可利用 dmesg 来查看. ...

  6. Goland 使用[临时]

    环境变量 因为module模式的引入, 多个项目可以共用同一套External Libraries, 在File->Settings->Go中, 设置GOROOT为go安装目录, 例如 / ...

  7. 配置nginx反向代理

    最近在做一个前后分离的项目,前端用Vue,后台spring boot,使用nginx做反向代理.下面说一下如何配置: 启动spring boot项目,端口8110 启动nginx 修改nginx.co ...

  8. Vue实现简单计算器功能

    知识点: v-model双向绑定 v-on事件绑定 实现效果 源码 <!DOCTYPE html> <html lang="en"> <head> ...

  9. C++ 多线程的错误和如何避免(3)

    传递给 C++ 线程的构造函数的参数是通过值传递的 VS 平台:2019 问题:如何在线程中改变传递的参数值? 比如: #include <functional> #include < ...

  10. 麒麟系统开发笔记(十一):在国产麒麟系统上使用gdb定位崩溃异常方法流程进阶定位代码行数及专项测试Demo

    前言   上一篇,通过研究,可以定位到函数,本篇进一步优化,没有行数,程序较为复杂的时候,就无法定位,所以进一步定位.  本篇做了qBreakpad的研究,但是没有成功,过程也还是填出来,后来突然注意 ...