山大2020年项目实训------6月26日

今天的任务是为虚拟物体添加光照一致性的效果,使其在现实中看起来更加自然一些。

ARCore关于光照估计的计算程序都放在环境光预制物的脚本上
在这里插入图片描述
在这里插入图片描述
这个脚本实现了有关光照强度估计以及光照方向估计相关的多种内容。

这部分其实一开始我在实现的时候参考了一下文章的内容
ARCore之路-光估计之光照强度估计
又是分析了EnvironmentalLighe脚本的内容并复习了Blinn-Phong光照模型,又是学习了shader并写出相关的着色器代码。
不知道是不是因为文章中ARCore的版本比较旧,需要很麻烦的方法实现光照强度估计的计算。

但是最新版本的ARCore已经将这部分内容计算好并提供给用户使用。
分析一下代码:
在这里插入图片描述
ARcore通过计算现实环境中的光照强度以及光照方向,然后改变DirectionalLight的参数,于是虚拟物体就可以被unity基于DirectionalLigh进行光照渲染,实现光照一致性。
初次之外,需要一个shader来模拟物体表面的漫反射光
代码:
Shader “DiffuseWithLightEstimation”
{
Properties
{
_MainTex (“Base (RGB)”, 2D) = “white” {}
}
SubShader
{
Tags { “RenderType”=“Opaque” }
LOD 150
CGPROGRAM
#pragma surface surf Lambert noforwardadd finalcolor:lightEstimation
sampler2D _MainTex;
fixed3 _GlobalColorCorrection;
struct Input
{
float2 uv_MainTex;
};
void lightEstimation(Input IN, SurfaceOutput o, inout fixed4 color)
{
color.rgb *= _GlobalColorCorrection;
}
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
Fallback “Mobile/VertexLit”
}

效果对比:
在这里插入图片描述
在这里插入图片描述

另外说一下。由于ARCore仅支持部分手机设备
支持的设备
而我的手机并不支持ARCore,因此在借手机这方面需要下点功夫,并不是随时都有手机能进行开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值