Vuforia AR 物体制作阴影

来源:互联网 发布:人工智能 企业 编辑:程序博客网 时间:2024/06/11 00:04
unity里面有自带灯光阴影,但是想要显示在AR中 需要一些小改变,不然就是有变色的底框,所以我们需要一个透明的平面,但能够接收阴影。为了达到这个目的,我们需要一个自定义的着色器。(http://www.arvrschool.com/read.php?tid=437&fid=21&page=1  着色器代码从这里扣得)
Shader "FX/Matte Shadow" {     Properties {    _Color ("Main Color", Color) = (1,1,1,1)    _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}    _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5}     SubShader {         Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}    LOD 200    Blend Zero SrcColor     CGPROGRAM     #pragma surface surf ShadowOnly alphatest:_Cutoff     fixed4 _Color;     struct Input {    float2 uv_MainTex;};     inline fixed4 LightingShadowOnly (SurfaceOutput s, fixed3 lightDir, fixed atten){    fixed4 c;    c.rgb = s.Albedo*atten;    c.a = s.Alpha;         return c;}     void surf (Input IN, inout SurfaceOutput o){         fixed4 c = _Color;    o.Albedo = c.rgb;    o.Alpha = 1;     }     ENDCG     }     Fallback "Transparent/Cutout/VertexLit"     }

使用 Matte Shadow 制作材质球,再将它拖拽到我们的平面上,就得到了我们期望的效果。注意如果没看到阴影的话,很可能是 Scale 或者 Project Quality 设置的问题。(如果不出现阴影,将scale全部设置为1试试 

这里的设置阴影质量 在Quality 中的阴影质量的关键性设置是阴影距离 (Shadow Distance) 和阴影级联 (Shadow Cascades)

  • 阴影分辨率 (Shadow Resolution) 也要考虑,但改善方向性阴影质量时首先要做的是缩短阴影距离。有关方向灯阴影的所有细节请见方向性阴影详情。
  • 对于聚光 (Spot) 和点 (Point) 光源,阴影分辨率 (Shadow Resolution) 决定了阴影贴图的大小。此外,屏幕上照亮小块区域的光源采用较小的阴影贴图分辨率。
  • 阴影跟缩放有关的 (Quality Settings) 包含一个名为阴影距离 (Shadow Distance) 的设置,即相机到绘制的阴影有多远。通常,计算和显示离相机 500 米远的阴影没有意义,因而制作游戏时尽可能使用较小阴影距离。这将有助于提高性能(及改善方向灯阴影质量,见上文),在AR中物体缩放的大小有个图片的默认值,经常看不到阴影  就是由于缩放的大小  跟(Quality Settings)设置的阴影距离的设置有关。

0 0